Contiki-NG中定制MODULE

开发基于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"
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 午后小憩 我梦见破镜重圆 我于你而言不再是一个顶着“不熟”名头的旧爱 梦里 我们十指相扣,不问白头 欢喜着、质朴着...
    十月宛丘阅读 248评论 0 0
  • 自从国庆后,工作上的拖延症就一发不可收拾,对谁负责?如此煎熬又何必呢
    为何为阅读 154评论 0 0
  • 你太矛盾了,你让我去睡觉,却不允许我去做梦。 我们过得什么破日子,我们甚至连呼吸的权利都没有。 像你这样才华横溢的...
    王思雨_19强化班阅读 179评论 0 1