Contiki系列(一)——源代码结构

来源:本站
导读:目前正在解读《Contiki系列(一)——源代码结构》的相关信息,《Contiki系列(一)——源代码结构》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《Contiki系列(一)——源代码结构》的详细说明。
简介:本文是关于Contiki系列(一)——源代码结构。

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编译环境示例代码。

提醒:《Contiki系列(一)——源代码结构》最后刷新时间 2024-03-14 01:00:57,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《Contiki系列(一)——源代码结构》该内容的真实性请自行鉴别。