Contiki入门手册
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.2 Contiki 源代码目录结构 1.2.1 Contiki 根目录结构解析
Contiki移植后的根目录如图2.2.1.1所示。根目录下包含了:apps、atos、 atos-apps-cc2530、atos-apps-stm32f103、core、cpu、doc、examples、platform、tools、 regression-tests目录。其余几个文件是说明文档以及Makefile.include脚本文件。
Contiki OS 入门手册
Contiki OS入门手册
第 1 页, 共 28 页
Contiki OS 入门手册
目录
1 源代码目录结构说明...............................................................................................................3 2 Hello-world实验教程 ..............................................................................................................7 3 Blink-hello实验教程..............................................................................................................11 4 Event-post实验教程 ..............................................................................................................16 5 Timers实验教程.....................................................................................................................21
第 4 页, 共 28 页
Contiki OS 入门手册
examples:包含了许多Contiki编程示例代码,用户编程时可以参照这些程序,或者直接 在这些代码中进行修改;examples/wsn2530dk中包含了许多WSN2530DK开发板上运行的示 例代码。在examples/wsn2530dk目录中,每个示例代码放在单独的文件夹中,里面包含了IAR 工程文件和源文件,点击工程项目文件就可以再IAR中运行、调试代码,并且每个工程都有 配套的说明文档,方便初学者学习,容易上手。
1.2.3 core/net 目录说明
core/net目录下包含一系列的文件,以及mac、rime、rpl三个子目录,功能如下: net中的文件:这是uIP协议栈代码,包括TCP、UDP、IPv4/IPv6、ICMP协议代码以及 相关数据结构,如邻居表、路由表等,还包括6Lowpan协议的实现sicslowpan.c和sicslowpan.h; rime:contiki中包含两个系列的协议栈:uIP协议栈和Rime协议栈,其中Rime是SICS开 发的私有无线Mesh协议栈,而uIP是基于IP的协议栈。Rime目录中包含了rime协议栈相关的 代码;Contiki中只能选择其中一个协议栈。 mac:包含了ISO七层协议中的MAC层代码,该目录中包含多个mac层协议,包括 contikiMAC、tdma_mac、nullmac、xmac、cxmac、csma等,用户可以在contiki-conf.h中配置 使用哪个mac协议; rpl:该目录包含了IETF ROLL工作组针对LLN网络制定的rpl路由协议的具体实现,称 为ContikiRPL。ContikiRPL是实现无线自组网的关键。 总结: 本章对Contiki操作系统中的目录结构、目录的功能进行简要说明,对核心的core目录、 net目录进行重点讲述。通过本章学习,有助于对Contiki的代码结构进行整体把握,为contiki 开发打下基础。
第 5 页, 共 28 页
Contiki OS 入门手册
了rime协议栈; sys:包含了Contiki操作系统内核的所有代码,实现任务调度、事件驱动、定时器等相
关功能,是操作系统的核心文件; 头文件:contiki.h包含contiki相关的所有头文件、contiki-lib.h包含了常用库的头文件、
Contiki系统内部集成了两种类型的无线传感器网络协议栈:uIP 和 Rime。uIP是一个小 型的符合RFC规范的TCP/IP协议栈,使得contiki可以直接和Internet通信。uIP包含了IPv4和 IPv6两种协议栈版本,支持TCP、UDP、ICMP等协议,但是编译时只能二选一,不可以同 时使用。Rime是一个轻量级为低功耗无线传感器网络设计的协议栈,该协议栈提供了大量 的通信原语,能够实现从简单的一跳广播通信,到复杂的可靠多跳数据传输等通信功能。
Contiki操作系统是基于事件驱动(Event-driven)内核的操作系统,在此内核上,应用 程序可以在运行时动态加载,非常灵活。在事件驱动内核基础上,Contiki实现了一种轻量级 的名为protothread的线程模型,来实现线性的、类似于线程的编程风格。该模型类似于Linux 和windows中线程的概念,多个线程共享同一个任务栈,从而减少RAM占用。Contiki还提供 一种可选的任务抢占机制、基于事件和消息传递的进程间通信机制。Contiki中还包括一个可 选的GUI子系统,可以提供对本地串口终端、基于VNC的网络化虚拟显示或者Telnet的图形 化支持。
2.3 实验原理
函数printf是C语言编程的一个标准IO函数,在PC编程中它输出信息到控制台窗口,给 用户提示应用程序的执行过程。在嵌入式编程中,可能没有CRT显示器,但是该函数支持重 定向。本实验就是将该函数执行到从串口输出,通过串口可以查看相应的调试信息以及应用 程序执行信息。在开发调试应用程序的过程中printf函数的使用是非常重要的。
第 2 页, 共 28 页
Contiki OS 入门手册
1 源代码目录结构说明
1.1 Contiki 系统简介
Contiki是一个开源的、高度可移植的多任务操作系统,适用于联网嵌入式系统和无线传 感器网络,由瑞典计算机科学学院(Swedish Institute of Computer Science)的Adam Dunkels 和他的团队开发。Contiki完全采用C语言开发,可移植性非常好,对硬件的要求极低,能够 运行在各种类型的微处理器及电脑上,目前已经移植到8051单片机、MSP430、AVR、ARM、 PC机等硬件平台上。Contiki适用于存储器资源十分受限的嵌入式单片机系统,典型的配置 下Contiki只占用约2Kbytes的RAM以及40Kbytes的Flash存储器。Contiki是开源的操作系统, 适用于BSD协议,即可以任意修改和发布,无需任何版权费用,因此已经应用在许多项目中。
conti含了当前contiki的版本号字符串。 以上目录中,sys、net、lib、dev中的源代码通常是需要的,而cfs、ctk、loader中的文件
则根据实际应用需要进行添加。Contiki中的代码大多是模块化结构,可以根据需要进行灵活 裁剪,满足多种应用的需要。
2.4 实验步骤
1:将J-Link和平行串口线分别连接创新套件节点与PC,给创新套件节点供电。 2:在光盘目录下找到A/03 实验HEX/Contiki OS基础实训/hello-world实验教程.hex文件,将 该文件烧录到目标芯片中。 3:打开串口助手(串口助手在光盘中的位置A/06 辅助工具/串口助手),串口助手的设置 如图3.4.1,其中串口号要根据自己的电脑进行选择,点击【打开串口】。
1.2.2 Core 目录说明
Core目录中包含的子目录如图2.2.1.2所示:
图2.2.1.2 cfs:cfs是Coffe file system的简写,是contiki之上的一个小型的基于Flash存储器的文件 系统,是针对无线传感网络资源受限的特点而设计得,其特点是:减少内存使用、支持大规 模存储; ctk:是The Contiki Toolkit的简写,该目录中的代码是给Contiki操作系统提供图形化的 操作界面; dev:该目录包含了Contiki操作系统中一些常用的驱动程序的头文件定义以及驱动程序 中与硬件无关的代码,用户移植contiki时根据这些头文件定义的api函数编写驱动程序,一些 典型的驱动包括spi.h、slip.h、leds.h、watchdog.h等; lib:包含了contiki操作系统以及其它程序用到的一些常用库函数,如链表数据结构list、 环形缓冲区ringbuf、随机数发生器random、反傅立叶变换ifft、字符串比较strncasecmp等函 数,用户需要相应的库函数,只需要把对应的库文件添加到工程中,进行编译即可; loader:contiki是面向无线传感网络应用的小型操作系统,在这类小型嵌入式系统中, 通常是整个程序编译后烧写到设备中,程序如果需要修改则必须重新编译和烧写,而传感网 络中节点数量多,重新烧写困难。因此,contiki实现了一个小型的动态加载模块loader,它 允许用户在需要的时候动态加载应用程序,提高灵活性; net:包含了contiki上网络协议相关的代码,包含了IPv4、IPv6、Lowpan、RPL等基于IP 的网络层代码,还包括MAC层协议,如IEEE802.15.4、ContikiMAC等;此外,contiki还包含
第 6 页, 共 28 页
Contiki OS 入门手册
2 Hello-world 实验教程
2.1 实验目的
通过在IAR工程上运行Hello world实例代码的过程,对contiki系统上的应用编程有一个 基本认识和了解。
2.2 实验设备
1. 创新套件节点一个 2. 平行串口线一根 3. J-Link一个
第 3 页, 共 28 页
Contiki OS 入门手册
图2.2.1.1 各目录功能如下: apps::包含了许多在Contiki系统上的应用程序,如数据库antelope、web服务器、基于 串口的shell命令、telnet程序、coap应用层协议等; atos:包含了本公司在Contiki开发中所需要的驱动程序和函数接口,如传感器驱动程序 sensor-drv、执行器驱动程序executor-drv、ATP协议包函数接口atp; atos-apps-cc2530和atos-apps-stm32f103:这两个文件夹分别是指基于CC2530和STM32 平台进行的Contiki的开发; core:Contiki系统的核心代码目录,包含了contiki中与硬件无关的代码、网络协议栈、 硬件驱动程序的头文件等; cpu:包含了与微控制器移植相关的代码,包含了寄存器定义、Contiki内核与硬件相关 的代码(如时钟、定时器等)、微控制器的驱动程序。Contiki对硬件的要求很低,移植十分 方便,目前已经支持8051系列、AVR、MSP430、ARM、ARM-Cortex、X86等处理器。其中 cpu/cc253x目录包含了TI的CC253x系列芯片的移植代码。 platform:与电路板相关的移植代码和驱动。电路板中包含核心微控制器,还包括各类 外围通信器件、传感器器件,如USB通信、串口通信、温湿度传感器等,CPU目录中只有微 控制器相关的移植代码,而电路板相关的外围设备驱动程序在platform中定义。目前已经支 持近40种电路板,用户可以参考这些代码编写自己的驱动程序。其中platform/wsn2530dk包 含了WSN2530DK开发板相关的移植代码。 tools:包含了调试、开发、下载等相关的各类程序,如网络仿真工具Cooja、MSP430 指令级网络仿真工具MSPsim、tunslip和tunslip6工具等;
Contiki移植后的根目录如图2.2.1.1所示。根目录下包含了:apps、atos、 atos-apps-cc2530、atos-apps-stm32f103、core、cpu、doc、examples、platform、tools、 regression-tests目录。其余几个文件是说明文档以及Makefile.include脚本文件。
Contiki OS 入门手册
Contiki OS入门手册
第 1 页, 共 28 页
Contiki OS 入门手册
目录
1 源代码目录结构说明...............................................................................................................3 2 Hello-world实验教程 ..............................................................................................................7 3 Blink-hello实验教程..............................................................................................................11 4 Event-post实验教程 ..............................................................................................................16 5 Timers实验教程.....................................................................................................................21
第 4 页, 共 28 页
Contiki OS 入门手册
examples:包含了许多Contiki编程示例代码,用户编程时可以参照这些程序,或者直接 在这些代码中进行修改;examples/wsn2530dk中包含了许多WSN2530DK开发板上运行的示 例代码。在examples/wsn2530dk目录中,每个示例代码放在单独的文件夹中,里面包含了IAR 工程文件和源文件,点击工程项目文件就可以再IAR中运行、调试代码,并且每个工程都有 配套的说明文档,方便初学者学习,容易上手。
1.2.3 core/net 目录说明
core/net目录下包含一系列的文件,以及mac、rime、rpl三个子目录,功能如下: net中的文件:这是uIP协议栈代码,包括TCP、UDP、IPv4/IPv6、ICMP协议代码以及 相关数据结构,如邻居表、路由表等,还包括6Lowpan协议的实现sicslowpan.c和sicslowpan.h; rime:contiki中包含两个系列的协议栈:uIP协议栈和Rime协议栈,其中Rime是SICS开 发的私有无线Mesh协议栈,而uIP是基于IP的协议栈。Rime目录中包含了rime协议栈相关的 代码;Contiki中只能选择其中一个协议栈。 mac:包含了ISO七层协议中的MAC层代码,该目录中包含多个mac层协议,包括 contikiMAC、tdma_mac、nullmac、xmac、cxmac、csma等,用户可以在contiki-conf.h中配置 使用哪个mac协议; rpl:该目录包含了IETF ROLL工作组针对LLN网络制定的rpl路由协议的具体实现,称 为ContikiRPL。ContikiRPL是实现无线自组网的关键。 总结: 本章对Contiki操作系统中的目录结构、目录的功能进行简要说明,对核心的core目录、 net目录进行重点讲述。通过本章学习,有助于对Contiki的代码结构进行整体把握,为contiki 开发打下基础。
第 5 页, 共 28 页
Contiki OS 入门手册
了rime协议栈; sys:包含了Contiki操作系统内核的所有代码,实现任务调度、事件驱动、定时器等相
关功能,是操作系统的核心文件; 头文件:contiki.h包含contiki相关的所有头文件、contiki-lib.h包含了常用库的头文件、
Contiki系统内部集成了两种类型的无线传感器网络协议栈:uIP 和 Rime。uIP是一个小 型的符合RFC规范的TCP/IP协议栈,使得contiki可以直接和Internet通信。uIP包含了IPv4和 IPv6两种协议栈版本,支持TCP、UDP、ICMP等协议,但是编译时只能二选一,不可以同 时使用。Rime是一个轻量级为低功耗无线传感器网络设计的协议栈,该协议栈提供了大量 的通信原语,能够实现从简单的一跳广播通信,到复杂的可靠多跳数据传输等通信功能。
Contiki操作系统是基于事件驱动(Event-driven)内核的操作系统,在此内核上,应用 程序可以在运行时动态加载,非常灵活。在事件驱动内核基础上,Contiki实现了一种轻量级 的名为protothread的线程模型,来实现线性的、类似于线程的编程风格。该模型类似于Linux 和windows中线程的概念,多个线程共享同一个任务栈,从而减少RAM占用。Contiki还提供 一种可选的任务抢占机制、基于事件和消息传递的进程间通信机制。Contiki中还包括一个可 选的GUI子系统,可以提供对本地串口终端、基于VNC的网络化虚拟显示或者Telnet的图形 化支持。
2.3 实验原理
函数printf是C语言编程的一个标准IO函数,在PC编程中它输出信息到控制台窗口,给 用户提示应用程序的执行过程。在嵌入式编程中,可能没有CRT显示器,但是该函数支持重 定向。本实验就是将该函数执行到从串口输出,通过串口可以查看相应的调试信息以及应用 程序执行信息。在开发调试应用程序的过程中printf函数的使用是非常重要的。
第 2 页, 共 28 页
Contiki OS 入门手册
1 源代码目录结构说明
1.1 Contiki 系统简介
Contiki是一个开源的、高度可移植的多任务操作系统,适用于联网嵌入式系统和无线传 感器网络,由瑞典计算机科学学院(Swedish Institute of Computer Science)的Adam Dunkels 和他的团队开发。Contiki完全采用C语言开发,可移植性非常好,对硬件的要求极低,能够 运行在各种类型的微处理器及电脑上,目前已经移植到8051单片机、MSP430、AVR、ARM、 PC机等硬件平台上。Contiki适用于存储器资源十分受限的嵌入式单片机系统,典型的配置 下Contiki只占用约2Kbytes的RAM以及40Kbytes的Flash存储器。Contiki是开源的操作系统, 适用于BSD协议,即可以任意修改和发布,无需任何版权费用,因此已经应用在许多项目中。
conti含了当前contiki的版本号字符串。 以上目录中,sys、net、lib、dev中的源代码通常是需要的,而cfs、ctk、loader中的文件
则根据实际应用需要进行添加。Contiki中的代码大多是模块化结构,可以根据需要进行灵活 裁剪,满足多种应用的需要。
2.4 实验步骤
1:将J-Link和平行串口线分别连接创新套件节点与PC,给创新套件节点供电。 2:在光盘目录下找到A/03 实验HEX/Contiki OS基础实训/hello-world实验教程.hex文件,将 该文件烧录到目标芯片中。 3:打开串口助手(串口助手在光盘中的位置A/06 辅助工具/串口助手),串口助手的设置 如图3.4.1,其中串口号要根据自己的电脑进行选择,点击【打开串口】。
1.2.2 Core 目录说明
Core目录中包含的子目录如图2.2.1.2所示:
图2.2.1.2 cfs:cfs是Coffe file system的简写,是contiki之上的一个小型的基于Flash存储器的文件 系统,是针对无线传感网络资源受限的特点而设计得,其特点是:减少内存使用、支持大规 模存储; ctk:是The Contiki Toolkit的简写,该目录中的代码是给Contiki操作系统提供图形化的 操作界面; dev:该目录包含了Contiki操作系统中一些常用的驱动程序的头文件定义以及驱动程序 中与硬件无关的代码,用户移植contiki时根据这些头文件定义的api函数编写驱动程序,一些 典型的驱动包括spi.h、slip.h、leds.h、watchdog.h等; lib:包含了contiki操作系统以及其它程序用到的一些常用库函数,如链表数据结构list、 环形缓冲区ringbuf、随机数发生器random、反傅立叶变换ifft、字符串比较strncasecmp等函 数,用户需要相应的库函数,只需要把对应的库文件添加到工程中,进行编译即可; loader:contiki是面向无线传感网络应用的小型操作系统,在这类小型嵌入式系统中, 通常是整个程序编译后烧写到设备中,程序如果需要修改则必须重新编译和烧写,而传感网 络中节点数量多,重新烧写困难。因此,contiki实现了一个小型的动态加载模块loader,它 允许用户在需要的时候动态加载应用程序,提高灵活性; net:包含了contiki上网络协议相关的代码,包含了IPv4、IPv6、Lowpan、RPL等基于IP 的网络层代码,还包括MAC层协议,如IEEE802.15.4、ContikiMAC等;此外,contiki还包含
第 6 页, 共 28 页
Contiki OS 入门手册
2 Hello-world 实验教程
2.1 实验目的
通过在IAR工程上运行Hello world实例代码的过程,对contiki系统上的应用编程有一个 基本认识和了解。
2.2 实验设备
1. 创新套件节点一个 2. 平行串口线一根 3. J-Link一个
第 3 页, 共 28 页
Contiki OS 入门手册
图2.2.1.1 各目录功能如下: apps::包含了许多在Contiki系统上的应用程序,如数据库antelope、web服务器、基于 串口的shell命令、telnet程序、coap应用层协议等; atos:包含了本公司在Contiki开发中所需要的驱动程序和函数接口,如传感器驱动程序 sensor-drv、执行器驱动程序executor-drv、ATP协议包函数接口atp; atos-apps-cc2530和atos-apps-stm32f103:这两个文件夹分别是指基于CC2530和STM32 平台进行的Contiki的开发; core:Contiki系统的核心代码目录,包含了contiki中与硬件无关的代码、网络协议栈、 硬件驱动程序的头文件等; cpu:包含了与微控制器移植相关的代码,包含了寄存器定义、Contiki内核与硬件相关 的代码(如时钟、定时器等)、微控制器的驱动程序。Contiki对硬件的要求很低,移植十分 方便,目前已经支持8051系列、AVR、MSP430、ARM、ARM-Cortex、X86等处理器。其中 cpu/cc253x目录包含了TI的CC253x系列芯片的移植代码。 platform:与电路板相关的移植代码和驱动。电路板中包含核心微控制器,还包括各类 外围通信器件、传感器器件,如USB通信、串口通信、温湿度传感器等,CPU目录中只有微 控制器相关的移植代码,而电路板相关的外围设备驱动程序在platform中定义。目前已经支 持近40种电路板,用户可以参考这些代码编写自己的驱动程序。其中platform/wsn2530dk包 含了WSN2530DK开发板相关的移植代码。 tools:包含了调试、开发、下载等相关的各类程序,如网络仿真工具Cooja、MSP430 指令级网络仿真工具MSPsim、tunslip和tunslip6工具等;