美文网首页
Contiki-NG中定制MODULE

Contiki-NG中定制MODULE

作者: irobust | 来源:发表于2020-04-02 20:21 被阅读0次

    开发基于Contiki-NG的应用,通常需要编写特有的服务或者功能或者模块。

    首先介绍一下Contiki-NG的基本目录结构:

    • os:存放Contiki-NG的实际代码,包括进程、定时器、网络堆栈和系统库,以及一些服务(比如shell、mqtt、coap等等);
    • arch:存放硬件相关代码,包括CPU、设备以及开发板驱动等;
    • examples:存放现成的例子项目,比如网络使用项目、各种库使用的例子、存储系统用法例子和MQTT客户端例子;
    • tools:存放一些工具,比如Cooja模拟器、Docker等;
    • tests:测试相关。

    通常开发的项目都放在examples目录下,如果项目有自己的特定功能的模块是不是也放在examples里的项目目录下呢?一般情况下的回答是:是,因为这样便于调用也不涉及修改Contiki-NG其他地方的代码。

    那么比如项目想要使用shell模块,并要定制shell命令呢?在Contiki-NG中定制shell需要将命令代码在shell-commands.c中实现,这个文件在os/services/shell中,此时如果要调用放在项目目录下的特定模块功能,就会觉得有点“搞”,因此这里提供一个思路:”Contiki-NG系统提供的服务模块放在os/services目录下,由于定制的模块也是一种模块,所以可以将项目定制的模块也放在该目录下“。步骤如下:

    • contiki-ng/os/services下建立目录,比如os/services/custom
    • congtiki-ng/Makefile.dir-variables文件中添加定制模块路径变量
    CONTIKI_NG_CUSTOM_DIR = $(CONTIKI_NG_OS_DIR)/custom
    
    • os/services/custom添加特定模块代码实现,比如custom.hcustom.c
    • 在项目的Makefile文件中,将改定制模块添加进去:
    MODULES += $(CONTIKI_NG_CUSTOM_DIR)
    
    • 在需要调用改功能的地方,比如shell-commands.c中,包含如下头文件:
    #include "custom/custom.h"
    

    相关文章

      网友评论

          本文标题:Contiki-NG中定制MODULE

          本文链接:https://www.haomeiwen.com/subject/keszuhtx.html