美文网首页
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