欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

contiki:开源的物联网操作系统

程序员文章站 2022-05-30 18:52:04
...
Contiki 是一个适用于低内存的嵌入式系统开源的、高可移植、支持网络的多任务操作系统。采用 C 语言开发,包括一个多任务核心、TCP/IP 堆栈、程序集以及低能耗的无线通讯堆栈。

在一个较为典型的配置中,Contiki系统只需2Kb的RAM与40Kb的ROM。 Contiki包括了一个事件驱动的内核,因此可以在运行时动态载入上层应用程序。Contiki中使用轻量级的protothreads进程模型,可以在事件驱动内核上提供一种线性的、类似于线程的编程风格。

contiki:开源的物联网操作系统

完整的Contiki系统包括以下特性:

  • 多任务内核
  • 每个应用程序中可选的先占式多线程
  • Protothreads模型
  • TCP/IP网络支持,包括IPv6
  • 视窗系统与GUI
  • 基于VNC的网络化远程显示
  • 网页浏览器
  • 个人网络服务器
  • 简单的Telnet客户端
  • 屏幕保护程序
Contiki特性:

1.  联网能力

Contiki 提供了完整的IP网络栈,包含UDP、TCP、HTTP等标准IP协议,还包含新的低功耗协议,如6LoWPAN、RPL、CoAP等。Cisco开发并贡献的Contiki IPv6协议栈完全通过了IPv6 Ready Logo program认证。

Contiki 支持IETF最新为低功耗IPv6网络制定的标准协议,包括6LoWPAN适配层、RPL多跳路由协议和REST风格的CoAP应用层协议等。

2.  快速开发

Contiki 应用程序是以标准C语言编写,开发快速、简单。使用 Cooja 模拟器可以不用借助硬件设备就能测试 Contiki 网络; Instant Contiki 提供了Linux下的一整套开发环境;Contiki Studio 则为Windows用户提供了一套良好的IDE。

3.  支持多种系统

Win32,native,TI CC2530,TI CC2430,TI MSP430,STM32,Atmel AVR,Freescale MC1322x,LPC2103 等

代码模块说明:

  • contiki/Makefile.include:通过Contiki构建系统,应用程序可以很容易地编译至任意目标平台,在不同的平台上使用应用程序非常简单。没有硬件设备?不要紧,用Cooja可以模拟任何支持的硬件设备!
  • contiki/core/loader/:Contiki 支持运行时的模块动态装载和链接。当应用程序需要在部署后改变自身行为时,这项特性非常有用。Contiki 的模块装载器能够对标准ELF文件进行装载、重新分配和链接。用于装载的ELF文件需要能够移除调试符号以减小文件大小。
  • contiki/core/lib/{memb,mmem}.[ch]:Contiki 是为只有KB级别内存的微型系统设计的,因此在内存使用上极为高效,同时提供了一套内存分配机制:内存块分配memb,托管内存分配函数memm,和标准C内存分配函数malloc
  • contiki/core/net/:Contiki 提供了完整的IP网络栈,包含UDP、TCP、HTTP等标准IP协议,还包含新的低功耗协议,如6LoWPAN、RPL、CoAP等。Cisco开发并 贡献的Contiki IPv6协议栈完全通过了IPv6 Ready Logo program认证。
  • contiki/core/net/rpl/和contiki/apps/erbium/:Contiki 支持IETF最新为低功耗IPv6网络制定的标准协议,包括6LoWPAN适配层、RPL多跳路由协议和REST风格的CoAP应用层协议等
  • contiki/core/net/mac/:在无线网络中,节点可能需要作为中继替其他节点传输消息。在Contiki中,中继节点(路由节点)也可以用电池驱动。Contiki采用的ContikiMac射频duty-cycling机制允许路由节点在中继间隙中进行休眠。
  • contiki/core/cfs/cfs-coffee.[ch]:Contiki为具有外部Flash存储的设备提供了一种名为Coffee的轻量级文件系统。应用程序不需要了解Flash扇区的底层操作就可以对外部 Flash中的文件进行打开、关闭、读取、写入、追加等操作。Coffee文件系统的效率能够达到原生Flash存储操作的95%。
  • contiki/apps/shell/:Contiki提供了一个可选的控制台和一套用于Contiki开发与调试的常用命令,并且支持类似Unix的管道功能。开发者也可以添加自定义命令。
  • contiki/core/net/rime/:对于带宽有限或者不能运行完整IPv6网络栈的环境,Contiki定制了名为Rime的无线网络栈。Rime栈既支持简单操作,例如向所有邻居或指定邻居节点发送消息,也支持一些复杂机制,例如网络洪泛、多跳数据采集等。Rime可以运行在休眠路由上以降低功耗。
  • contiki/core/sys/pt.h:Contiki采用了一种称为Protothreads的机制,提供良好的控制流的同时可以节省内存。Protothreads混合了事件驱动模型与多线程模型。在Protothreads中,事件处理过程可以阻塞等待特定事件的发生。
  • contiki/platform/和contiki/cpu/:Contiki支持多种微型平台,包括8051、MSP430、AVR以及许多ARM设备,还有其他一些平台。
  • contiki/sys/energest.[ch]:Contiki 的设计目的是在极端低功耗的系统中运行,这些系统甚至可能需要只用一对AA电池能够工作许多年。Contiki 为辅助这些低功耗系统的开发提供了功耗估计和功耗分析机制。
  • contiki/regression-tests/:为了确保Contiki正确工作,Contiki开发者们采用了一套每日回归测试,每天在Cooja模拟器中对Contiki的重要部分进行测试。回归测试脚本可以作为使用模拟环境的起点,也可以用于了解Contiki机制有哪些不同。
  • contiki/examples/:Contiki 源码树中有足够多的示例,包括如何进行网络编程、如何操作硬件设备等,展示了 Contiki 系统的方方面面。多数示例有相应的 Cooja 模拟环境。这些示例能够帮助开发者开始快速地开发自己的应用程序。
官方站点contiki-os.org

GITHUBcontiki-os

文章来自:乐嵌网