1、源代码结构
contiki源代码目录 Contiki是一个高度可移植的操作系统,其源代码的组织也是很清晰,现就其源代码组织结构及各个部分的功能进行简单的描述。
apps
为一些应用程序,dhcp/ftp/httpd/webserver/telnet/mqtt/json等等应用都包含了,可以在程序开发中使用。
使用时,需要在项目的Makefile中添加APPS=[应用程序列表]
cpu
是目前contiki系统支持的微处理器,包括arm,msp430等,若需要添加新的微处理器,需要在这个目录下添加。
examples
提供了不同平台的示例程序,当新添加一个平台时,最好能够提供一个可用的示例。
platform
是contiki下支持的硬件平台,如sky,cc253x等,contiki某一个平台的移植主要在此目录下完成。
dev
为一些设备的相关驱动程序接口,如cc1200, enc28j60等。
core
是Contiki系统的核心源代码,包括网络net、文件系统fs、外设、链接库等,并且还包含了时钟、I/O、网络驱动等的抽象。
doc
Contiki的相关帮助文档,对于Contiki应用的开发比较有帮助,使用时先用doxygen进行编译。
tools
提供了Contiki开发中的相关工具,如CPS的makefsdata,网络相关的tunslip,模拟器cooja等等。
为了能够获得良好的可一致性,除了cpu和platform中的源代码与硬件平台相关意外,其他目录源代码应该尽可能与硬件无关。
2、关于Contiki的编译
在contiki的编译系统中,使用了很多Makefile文件,主要包括:
·Makefile:项目的makefile文件,在项目目录下。
·Makefile.include:系统级的Contiki makefile文件,在Contiki源文件的根目录下。
·Makefile.$(TARGET):$(TARGET)为当前编辑的目标平台,如jn516x,为编译该平台的一些规则,存放在对应的platform/目录下。
·Makefile.$(CPU):为CPU或微处理器结构的目录,为对应CPU架构的编译规则,在CPU结构的子目录下,cpu/。
·Makefile.$(APP):应用目录下的,关于应用编译的相关规则,apps/目录下,每个应用都包含自身的Makefile文件。
在项目目录下的Makefile主要包括:主要包含当前的Contiki源代码,包含系统级的Makefile:Makefile.include。
项目Makefile可以定义APPs变量,包含应用apps/下的应用 。
#包含项目相关
CONTIKI_PROJECT = 项目名
all: $(CONTIKI_PROJECT)
#包含系统级的Makefile.include
CONTIKI = ../..
#若要使用IPV4需要添加下面一句
CONTIKI_WITH_IPV4 = 1
#若要使用RIME协议栈,若需要使用其他相关组件都需要配置相关的宏,且应该在包含Makefile.include前定义,具体内容可以参考Makefile.include文件。
#主要还包括:CONTIKI_WITH_IPV6,CONTIKI_WITH_RPL,
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include
#在Makefile.include下包含了Contiki系统的核心C代码。
#包含应用,如webserver或其他应用
APPS = webserver app2 app3
关于Contiki的编译,若需要在特定的IDE环境下编译,那么就可以根据文章中描述的代码结构,重新添加到IDE环境中,在IDE中配置相关的参数信息。
通过IDE编辑、调试、编译都会更加的方便,参考2中为STM32在Keil编译环境示例代码。
参考: