没有合适的资源?快使用搜索试试~ 我知道了~
Contiki-NG操作系统:面向物联网设备的开源软件
软件X 18(2022)101089原始软件出版物面向下一代物联网设备的Contiki-NG开源操作系统George Oikonomoua, Simon Duquennoyb,c,Atis Elstsd,Joakim Erikssonb,Yasuyuki Tanakae,Nicolas Tsiftesba英国布里斯托尔大学电气和电子工程瑞典Kista RISE研究所cInria Lille-北欧,法国d电子和计算机科学研究所,拉脱维亚里加e日本川崎市东芝公司研发中心ar t i cl e i nf o文章历史记录:2021年8月12日收到收到修订版,2022年2月23日接受,2022年保留字:Contiki-NG物联网资源受限设备a b st ra ctContiki-NG(下一代)是一个开源的,跨平台的操作系统,用于严格限制的无线嵌入式设备。它专注于可靠(可靠和安全)的低功耗通信和标准化协议,如6LoWPAN,IPv6,6TiSCH,RPL和CoAP。其主要目标是(i)促进物联网研究思路的快速原型设计和评估,(ii)缩短物联网应用的上市时间,以及(iii)为高等教育中嵌入式系统相关课程的教学Contiki-NG最初是Contiki OS的一个分支,并保留了许多原始功能。在本文中,我们讨论了Contiki-NG创建背后的动机,介绍了最新版本(v4.7),并通过具体示例强调了Contiki-NG的影响。版权所有©2022作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v4.7指向此代码版本所用代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-21-00149Code Ocean compute capsule N/ALegal Code License 3-Clause BSD使用git的代码版本控制系统使用的软件代码语言、工具和服务C、Java(Cooja Simulator)、Python(多种生态系统工具)编译要求、操作环境依赖性Linux、macOS、Windows(部分支持)开发人员文档/手册指南和教程链接(如果可用):https://github.com/contiki-ng/contiki-ng/wikiAPI文档:https://contiki-ng.readthedocs.io问题支持电子邮件Gitter:https://gitter.im/contiki-ngGitHub讨论:https://github.com/contiki-ng/contiki-ng/discussions堆栈溢出:https://stackoverflow.com/questions/tagged/contiki-ng1. 动机和意义无线传感器网络领域的研究始于近二十年前[1]。在最初的几年里,研究活动的目标是资源极其有限的设备(KB或更少的RAM,位级无线电应用程序编程接口(API)),并利用高度专业化的应用特定的软件是规范。作为这种方法的一个例子,TinyOS*通讯作者。电子邮件地址:g. bristol.ac.uk(George Oikonomou)。https://doi.org/10.1016/j.softx.2022.101089操作系统[2]使用纯粹基于事件的执行模型和称为nesC的自定义编程语言1.1. 历史背景-最初的Contiki OS最初的Contiki操作系统(OS)[3]于2006年开源,但开发早在2003年就开始了。 它专为资源受限的无线传感器设备设计,代码存储器为100 kB量级,易失性存储器小于10 kB。Contiki是现代物联网操作系统发展的重要一步,其主要优势在于:2352-7110/©2022作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxGeorge Oikonomou,Simon Duquennoy,Atis Elsts et al.软件X 18(2022)1010892使用标准C编程语言1;应用程序开发人员不再需要学习nesC等定制语言。基于事件的内核。与无标记的、特定于平台的主循环代码(在某些平台上实现)结合,它允许对外部事件的快速反应时间和节能执行。基于协作多线程的进程API [4].它极大地简化了应用程序编程,减少了对显式状态机和锁的需求(分别与基于事件的API和抢占式线程API相比)。早期,通过uIP [5]堆栈对网络协议(如Internet协议(IP)和IPv6协议)提供符合标准的它还介绍了低功耗无线个域网(6LoWPAN)上的IPv6和低功耗和有损网络路由协议(RPL)的一些早期开放实现官方Contiki发行版还包括Cooja,一个运行基于Contiki固件的IEEE 802.15.4网络设备的模拟器。除了Cooja及其生态系统的其他工具外,Con- tiki还成为无线传感器网络(WSN)领域学术研究的广泛使用工具。作为Contiki影响力的一个指标在这些论文中,仅2018年就发表了约350篇。此外,根据Scopus的说法,第一批记录Contiki的出版物之一[3]被引用超过1300次。1.2. 从Contiki到Contiki-NG随着Contiki操作系统获得牵引力并开始广泛使用,一些限制开始出现:大量古老的、资源极其有限的平台遗留下来。Contiki最初设计的8位和16位低功耗微控制器随着时间的推移而过时;基于32位ARM Cortex-M的设备具有更复杂的低功耗模式是新的标准[6]。支持非标准协议。随着无线传感器网络研究领域逐渐发展成为物联网的核心使能技术之一,互操作性和标准变得越来越重要。除了符合标准的协议实现,Contiki代码库还包含了早期的、实验性的、非标准的协议,这些协议最初是作为研究成果贡献的一个这样的例子是Rime堆栈。遗留平台代码和对非标准网络协议的支持的这种组合增加了维护的复杂性,并阻碍了代码的发展。Contiki-NG于2017年11月首次发布。它的目的是消除Contiki的一些限制,以便更容易维护和更快的主要愿景是侧重于:标 准 程 序 。 Contiki-NG 支 持 的 一 些 标 准 包 括 IEEE 802.15.4TSCH、6LoWPAN、6 TiSCH、RPL、CoAP、MQTT和LWM 2M。通过现代开发实践、使用模拟和物理测试平台的持续集成以及安全测试技术实现可靠性(可靠性和安全性)第一个版本(v4.0)是Contiki OS的一个分支。Contiki-NG增加了一个新的配置和日志系统,一个新的轻量级和可靠的RPL实现(RPL-Lite),以及一个网络管理外壳。它还带来了对代码库的广泛清理,删除了遗留平台,协议和服务,以消除对未来发展的 限 制 。 所 有 Contiki-NG 版 本 及 其 更 新 日 志 均 可 在https://github.com/contiki-ng/contiki-ng/releases上获得。2. Contiki-NG项目Contiki-NG 引 入 了许 多 新 功 能 , 但 它也 重 新 使 用 了原 始Contiki操作系统的许多功能,如调度器,基于事件的Contiki-NG还使用了多个与网络相关的软件组件,例如6LoWPAN和RPL(以下称为“RPL-Classic”)的原始实现Contiki-NG主要针对Arm Cortex-M平台。官方存储库包括对Nordic Semiconductor、NXP、OpenMote、Texas Instruments和Zolertia的硬件支持所有这些平台都由Cortex-M3或-M4芯片驱动。在主存储库之外,存在许多Contiki-NG分支,这些分支增加了对其他硬件的支持,例如由ST Microelectronics芯片提供支持的平台,例如FIT IoT实验室测试平台中使用的芯片。据我们所知,Contiki-NG没有理由不能在Cortex-M0上运行最后,官方存储库还包括对16位MSP430架构的支持,该架构主要用于Cooja模拟器(第1.2节)。在增加对更多硬件的支持方面,大部分工作都围绕着对新微控制器(MCU)架构和片上外围设备(包括无线电收发器)的支持。一旦添加了这种支持,将Contiki-NG移植到新的板上就不那么麻烦了。将Contiki-NG移植到新的硬件平台可以在wiki上找到。2Contiki-NG将自己定位于与其他嵌入式设备操作系统相同的领域(表1),如RIOT [7],Zephyr,3Arm Mbed,4Apache Mynewt,5TinyOS和FreeR。使用协议通过实现TSCH、RPL-Classic和RPL-Lite,本文作者认为Contiki-NG填补了低功耗IEEE 801.15.4无线网状网络的空白。对于物联网操作系统的全面定量或定性比较,我们建议读者参考已经广泛的文献,例如[8,9]。为简洁起见,本节的其余部分将重点描述该项目的技术和非技术方面,这些方面要么是全新的,要么是自Contiki-NG项目启动以来发生的重大变化。作者认为详细描述操作系统不在本文的范围之2.1. Contiki-NG架构和功能广义上讲,Contiki-NG源代码库可以在概念上分为两部分:(i)独立于硬件,• 支持现代硬件平台。2https://github.com/contiki-ng/contiki-ng/wiki/Porting-Contiki%E2%80%1开发人员不应该在protothreads中使用C switch语句。 这是一个限制,的原始ContikiOS和具有被携带转到康提基NG除了这个限制,Contiki-NG完全符合C标准。90NG到新平台3 https://www.zephyrproject.org/4 https://os.mbed.com/5 https://mynewt.apache.org/········George Oikonomou,Simon Duquennoy,Atis Elsts et al.软件X 18(2022)1010893表1嵌入式操作系统的功能概述项目联网牌照语言螺纹Contiki-NGTSCH、6LoWPAN、RPLBSDC、C++合作ContikiTSCH、6LoWPAN、RPLBSDC合作阿帕奇蝾螈BLE、LoRa、TCP/IPApache 2.0C、C++先发制人Arm MbedBLE、LoRa、lwIPApache 2.0C++先发制人FreeRTOSTCP/IPMITC、C++先发制人防暴6LoWPAN,BLEGNU LGPLC、C++先发制人TinyOS6LoWPANBSDNESC选择性抢先ZephyrBLE,线程,6LoWPANApache 2.0C、C++选择性抢先Fig. 1. Contiki-NG目录结构。(ii)硬件专用。前者托管操作系统所有硬件无关组件的可移植、跨平台实现,包括内核、软件定时器、数据结构库和网络协议。后者提供了使操作系统在特定设备上工作所需的代码它由硬件组件驱动程序组成,包括定时器、无线电接口和其他片内和片外外设,如通用异步接收器/收发器(UART)、串行外设接口(SPI)、内部集成电路(I2C)、LED、用户按钮和传感元件。为了使增加对更多设备的支持毫不费力为了尽可能地增加代码的 可 移 植 性 , Contiki-NG 为 通 用 接 口 定 义 了 硬 件 抽 象 层(HAL),包括通用输入/输出(GPIO)和SPI。I2C的硬件抽象层(HAL)是短期路线图的一部分这些HAL包括需要由新硬件端口的开发人员实现的硬件特定功能的声明。这使得新的平台开发人员可以专注于实现定义良好的API的硬件特定部分,而无需设计新的编程接口。一旦开发了特定于芯片的实现,在同一芯片上增加对不同平台的支持只需要简单的配置。在可能的情况下,在HAL中,Contiki-NG提供了独立于平台的功能,可用于访问硬件元素。这些功能将在所有支持的平台上工作,无需任何进一步的努力。图二. Contiki-NG网络堆栈。例如,开发人员可以使用spi_transfer()将字节序列发送到SPI外设;此函数在实现SPI HAL的硬件特定部分的 所 有 硬 件 平台 上 都具有明确定义的行为。2.1.1. 存储库结构图1说明了Contiki-NG代码库的目录结构。所有与平台无关的代码都可以在“os /”下找到“tests/”目录托管自动化持续集成测试套件(参见第2.5节),而“tools/”包含帮助实用程序,例如用于将固件上传到支持的设备,并生成文档。2.2. 网络支持如第1.2节所述,Contiki-NG的主要目标之一是为资源严重受限的图图2展示了Contiki-NG网络堆栈的概述。在本小节的其余部分,我们将概述Contiki-NG对所选支持协议和规范的实现。2.2.1. TSCH和6TiSCH时隙信道跳变(TSCH)是IEEE 802.15.4-2015标准中定义的媒体访问控制(MAC)层George Oikonomou,Simon Duquennoy,Atis Elsts et al.软件X 18(2022)1010894[10 ]第10段。它的目标是工业物联网和其他需要高可靠性、低延迟和低能耗的用例6TiSCH [11]是一组现有和即将推出的IETF标准,旨在为这些用例描述完整的支持TSCH的IPv6网络堆栈Contiki-NG支持TSCH [10]、IEEE 802.15.4e(6 TiSCH)最小配置的TSCH模式上的IPv6 [12]、6 top协议(6P)[13]、RPL [14]以及用于6 TiSCH的其他协议Contiki-NG的TSCH和6 TiSCH实现[15]已经在许多IETF互操作性事件中得到验证,并被证明可以与其他实现(包括OpenWSN)互操作。Contiki-NG上有两个6 TiSCH调度功能:Orchestra [16]和最小调度功能(MSF)[17]。Orchestra是一个完全自主的调度功能,它不需要任何信令流量来配置TSCH链路。另一方面,MSF使用6P进行TSCH链路分配,并使其调度适应业务变化。2.2.2. RPL-Classic和RPL-liteRPL是IETF RFC 6550 [14]定义的一种协议,用于在低功耗和有损网络上进行路由。简而言之,节点构建多跳有向无环图(DAG)拓扑,使得能够朝向根(沿着梯度)或朝向任何其他节点(遵循路由表或经由源路由)路由。Contiki OS早在2010年就提供了最早的开放RPL实现之一(“RPL-Classic”),这被证明是与TinyOS分发的RPL版本可互操作的Contiki-NG采用了这个实现,并贡献了一个新版本,称为RPL-Lite实现了两件事:(i)基于RPL-Classic多年的经验,它仅保留了非常灵活的标准中的相关操作模式的选定子集,以及(ii)它提供了多年来积累了大量技术债务的代码库的完整重构。因此,RPL-Lite一次只支持一个DAG,一个“RPL实例”,并且只支持非存储操作模式。这些选择最小化了网络中每个受约束节点处维护的状态量,从而允许更鲁棒的操作。RPL-Lite是与超可靠RPL研究并行实现的[19],并受益于作为本研究一部分而设计的许多可靠性机制。2.2.3. 多播支持Contiki-NG内核通过API支持6LoWPAN中的IPv6组播转发,该API允许轻松添加新的组播转发引擎。Contiki-NG贡献了低功耗有损网络多播协议(MPL)的标准兼容实现:互联网工程任务组(IETF)提出的多播转发协议[20]。MPL支持伴随着从原始Contiki OS采用的两个多播引擎:(i)无状态多播RPL转发(SMRF)[21,22]和(ii)增强型SMRF(ESMRF)[23]。2.2.4. CoAP和LWM2M受限应用协议(CoAP)[24]是一种类似于HTTP的应用层协议,但它被设计成更适合于受限环境。Contiki-NG命令行工具,以及与node-coap7的互操作性作为我们的GitHub操作CI工作流的一部分(第2.5节)自动测试,以防止回归。该实现还可以与“Copper(Cu)”8和“Copper for Chrome(Cu4Cr)”9浏览器插件互操作Contiki-NG 还 支 持 开 放 移 动 联 盟 ( OMA ) 轻 量 级 M2M(LWM 2 M)规范的1.0版,支持纯文本、JavaScript对象表示法(JSON)和类型-长度-值(TLV)数据格式。该实现支持具有预共享密钥的LWM2M安全模式以及用于配置安全性的服务器LWM2M引擎实现伴随着LWM2M“智能对象的IP”(IPSO)对象的实现LWM2M 的 工 作 。 该 实 现 可 与 Eclipse Leshan10 以 及 EclipseWakama11互操作。与乐山的互操作性也作为我们CI工作流程的一部分进行了测试(第2.5节)。最初的Contiki OS支持CoAP和LWM 2 M,但这两种实现都经过了Contiki-NG项目的重新设计和扩展。2.2.5. MQTTContiki-NG提供了一个轻量级的客户端实现,它实现了一个开放的发布/订阅协议--消息传输远程传输实现支持MQTT版本3.1(从Contiki OS采用)和v3.1.1(由Contiki- NG贡献)。对MQTT版本5的支持已经合并到开发分支中,并将包含在下一个版本中。Contiki-NG还提供了一个独立于平台的MQTT客户端示例,该示例可与Eclipse Mosquitto MQTT进行代理,以及IBM Watson IoT Platform。12间-与Mosquitto的可操作性作为我们CI工作流程的一部分进行测试(第2.5节),以防止回归。2.2.6. 限制目前,Contiki-NG不正式支持:(i)IEEE 802.15.4的协调采样 监 听 ( CSL ) 模 式 ; ( ii ) 6LoWPAN 邻 居 发 现 ; ( iii )6LoWPANContiki-NG的开源实现确实存在于镜像存储库中,增加官方支持是该项目的长期目标之一2.3. 负责任的披露和安全声明Contiki-NG通过模糊测试和其他方法增加了对软件安全性的关注该项目有一个专用的电子邮件地址,可用于负责任地披露安全漏洞。作为内部测试流程和社区报告的结果,该项目最近发布了其第一个安全公告。2.4. 文件Contiki-NG在GitHub托管的wiki13中有文档记录,其中包含针对初学者和更高级用户的广泛指南和教程列表。此外,Contiki-NG源代码库使用Doxygen14注释进行注释,这些注释用于生成基于HTML的实现支持许多关键CoAP特征,包括:(i)逐块传输[25]用于传输无法容纳在单个数据包中的大块数据,以及(ii)CoAP观察[26]。该实现和相应的API使得添加在特定路径上注册的新CoAP资源以及可以在所有CoAP请求上调用的更复杂的资源处理程序变得容易 CoAP实现与libcoap可互操作。66 https://libcoap.net/7 https://www.npmjs.com/package/coap8 https://github.com/mkovatsc/Copper9 https://github.com/mkovatsc/Copper4Cr10 https://www.eclipse.org/leshan/11 https://github.com/eclipse/wakaama12 https://quickstart.internetofthings.ibmcloud.com13 https://github.com/contiki-ng/contiki-ng/wiki14 http://www.doxygen.nl/George Oikonomou,Simon Duquennoy,Atis Elsts et al.软件X 18(2022)1010895API文档。用户可以在本地计算机上构建和查看API文档这个自动更新的在线空间托管多个版本的API文档:每个Contiki-NG版本一个(从v4.2开始,当该特性首次引入时),以及最新版本的develop分支一个。2.5. 持续集成测试Contiki-NG使用GitHub Actions上的持续集成(CI)工作流此工作流使用发布版本替换了Travis-CI16平台上较旧的测试套件版本V4.6每当代码更改合并到Contiki-NG的一个主要git分支中时,以及每次打开或更新pull请求时,都会自动触发测试套件。所有pull请求必须通过所有CI测试,然后才能考虑包含在官方源代码库中。所有源代码更改都必须通过pull request进行,包括Contiki-NG维护人员团队成员提出的代码更改此策略强制同行进行审查,从而提高整体代码质量并降低引入错误的可能性Contiki-NG测试套件包括17个作业,每个作业执行多个CI测试。测试套件涵盖以下代码元素:在多种不同的配置下,成功地为多种硬件平台编译代码示例.通过多个Cooja模拟和本机代码执行场景验证网络子系统的各种元素的正确操作。成功编译doxygen API文档(第2.4节)。希望使用Contiki-NG的CI工作流来执行代码的用户可以通过在其fork存储库上启用GitHub Actions来轻松完成。或者,Contiki-NGdocker镜像提供了在其计算机上本地执行测试套件所需的所有工具。2.6. Nightly builds除了上面描述的每贡献CI之外,我们还在真实硬件上执行自动化夜间测试床运行:安装在RISE SICS的定制25节点测试床。每个节点由一个控制设备(乌藨子PI)和一组传感器(在撰写本文时,Zolertia Firefly和JN516x don)组成。gle)。每天晚上,一个cron作业安排四个2小时的实验,每个实验都有不同的网络堆栈配置。控制节点向所有25个Firefly设备部署固件,该固件在根节点和网络中的每个其他节点之间执行响应请求通信。每个实验都涉及超过10k个在节能设备上通过多跳进行的往返网络数据包交换。日志文件后处理脚本从每次运行中提取关键指标:端到端往返传输率、延迟、无线电占空比、跳数和网络拓扑变化频率。原始日志文件和处理后的统计数据自动推送到公共网站进行可视化和监控。17夜间构建的好处是双重的。首先,它们提供了在真实硬件上的自动化测试,而不是CI中使用的simula- tion/emulation。其次,它们为开发人员提供反馈,以及比较各种网络堆栈配置的性能和发现性能下降的能力。15 https://contiki-ng.readthedocs.io16 https://travis-ci.org/contiki-ng/contiki-ng17 https://contiki-ng.github.io/testbed/1234567891011121314151617181920212223242526272829303132333435363738394041清单1:网络范围的时间同步示例3. 说明性示例作为Contiki-NG用户应用示例,我们选择了全网时间同步演示项目。该示例的目的是演示应用开发者如何使用由TSCH提供的时间同步,以便确定源网络节点发起分组的时间与目的地节点上的接收时间之间的延迟,目的地节点也充当网络时间源。之所以选择这个示例,是因为应用程序代码(清单1)在演示多个关键接口的同时保持了简单性:Contiki-NG进程初始化(第23-27行该示例隐藏了大量的Contiki-NG高级功能; Contiki-NG网络堆栈如何处理它的一些细节如图所示。3 .第三章。从传输和接收流量的角度来看,应用程序只有通过simple_udp_API与传输层(在此特定示例中为UDP实现)的直接接口。但是,应用程序也有一个间接接口,18 发现 下 示例/6 tisch/timesync-demo的的源代码树·包括#“contiki. h“#include“net/ipv6/simple-udp.h“#include“net/ mac/tsch/tsch.h“的#include“lib/random. h“的包括#“sys/node-id.h“#defineUDP_PORT 8765#defineSEND_INTERVAL(60*CLOCK_SECOND)PROCESS(node_process,“RPLNode“);AUTOSTART_PROCESSES(node_process);simple_udp_callbackrx_callback;/* 在文件rx_callback. c中查找 */PROCESS_THREAD(节点_proces,ev,data){ staticstructsimple_udp_conn;staticstructetmeric_tmer;uip_ipaddr_tdst;PROCESS_BEGIN();/* 返回;simple_udp_register(udp_conn,UDP_PORT,NULL,UDP_PORT_callback);如果(节点E_ID),则E_ID_ S_S_T(periodic_timer,random_randd()==1){/*Runningontheroot?*/NETSTACK_RTING. intt_tat();}/*Mainloop*/while(1){PROCESS_WAIT_EVENT_UNTIL(etime_expired(&periodic_time));if(NETSTACK_RTING. node_is_reachable()&& NETSTACK_RATING. get_root_ipaddr(dst)){/*向根节点发送新工作时间表 */uint64_tnetwork_uptime=tsch_get_network_uptime_ticks();simple_udp_sendtoo(udp_conn,network_uptime,sizeof(uint64_t),dst);&}etime_set(periodic_time,SEND_INTERVAL);}C_E_N_D}··George Oikonomou,Simon Duquennoy,Atis Elsts et al.软件X 18(2022)1010896图三. 当在Cooja模拟器中执行时,网络范围的时间同步示例所使用的Contiki-NG网络堆栈。RPL和TSCH(图中的虚线)3)。在前一种情况下,使用NETSTACK_ROUTING API来确定设备在尝试传输之前是否已成功加入网络。在后一种情况下,使用tsch_get_network_tickets()来检索准确的时间信息。在接收路径上,根据网络堆栈的配置,帧接收要么通过中断处理,要么通过轮询TSCHRX时隙内的无线电驱动程序。 在基于中断的操作的前一种情况下,中断在特定于体系结构的处理程序函数中处理。对于构成片上系统一部分的无线电设备,当完整接收到帧且没有错误时,会断言专用无线电中断。 对于SPI无线电,帧接收触发GPIO中断。相应的中断处理程序通常轮询无线电驱动程序的主进程并立即返回,从而限制了在中断上下文中执行代码指令所花费的时间。轮询的无线电驱动程序进程随后在中断上下文之外被调用,从无线电硬件的缓冲区读取帧,并将其与相关的帧接收属性(如接收信号强度指示符(RSSI))一起放置在主RAM中。 在TSCH的情况下,无线电中断被禁用。使用NETSTACK_RADIOAPI,平台无关的TSCH实现在时隙操作期间的正确时间轮询无线电驱动器以获得接收帧,从而确保TSCH所需的定时精度。当帧被向上传递到网络栈时,它们由相应协议的实现进行处理,应用程序代码通过函数回调得到通知在/examples目录下,Contiki-NG提供了许多示例项目,可以用作Contiki-NG的第一步,也可以作为希望开发自己应用程序的用户的起点这些示例涵盖了本文中描述的网络堆栈的所有元素,以及所有硬件抽象。要尝试本节中的示例或存储库中的任何其他现有示例,我们建议使用Contiki-NG Docker容器镜像19和附带的wiki文档。此映像提供了所有必要的编译器和工具,包括允许在不访问Contiki-NG支持的硬件的情况下进行实验的Cooja模拟器。19 https://hub.docker.com/r/contiker/contiki-ng4. 影响自2006年开源发布以来,最初的Contiki操作系统已被主机资助的众多研究项目使用 组织,例如:(i)地平线欧洲、地平线2020(H2020)下的欧盟委员会(EC)以及相关框架计划,(ii)各种国家研究基金机构,如英国工程和物理科学研究理事会(EPSRC)或瑞典知识基金会。Contiki-NG的附加值和优势可以概括为:marised as:简化移植到新的硬件平台,由于删除遗留代码,并由于新的,平台无关的系统初始化,主循环代码和HAL。由于改进的文档和更清晰的示例,简化了新功能的开发。现代开发实践提高了代码质量,包括git-flow工作流、持续集成、夜间测试台运行以及用于测试所有平台上超过1200个项目构建的脚本。由于这些特性,Contiki-NG既是一个现成的工具,用于构建具有五个九可靠性的多跳、低功耗、受限无线网络[19],也是一个研究平台用于在网络堆栈的所有级别(例如,包括6TiSCH调度、路由、安全和节能MAC层)的低功耗无线嵌入式系统中进行创新。尽管历史相对较短,Contiki-NG已经促进了一些同行评审论文中发表的研究,包括与该项目无关的团队撰写的论文,例如[6,27Contiki-NG在实现IEEE 802.15.4 TSCH和IETF 6 TiSCH网络中的新研究方面特别成功[30Contiki / Contiki-NG提供了仅有的两种用于实际硬件的开源IEEE802.15.4 TSCH实现之一,另一种由OpenWSN提供[33]。本文的作者并不认为OpenWSN是一个直接的竞争对手,因为它是一个网络堆栈,而不是一个完整的操作系统。Contiki-NG支持未来多个方向的研究,包括但不限于物联网安全;能量收集;网络移动性;多协议/多无线电/多频段物联网通信。除了科学出版物,Contiki-NG开始通过使用产生影响:(i)支持正在进行的工作-作为多学科资助研究项目的一部分(例如,工业物联网,数字健康,智慧城市),(ii)高等教育教学表2列出了大量使用Contiki-NG的少数资助研发项目提出一份这类项目的全面清单将过于冗长,被认为超出了本文件的范围。Contiki-NG被用作多种商业产品的基础。该列表包括消费者/家庭应用,例如智能家庭加热系统和智能灯泡。该列表还包括工业应用,如资产监控/跟踪和智能农业。5. 结论本文讨论了Contiki-NG操作系统在无线嵌入式设备中的应用。它为读者提供了项目架构的概述及其一些关键的它强调了Contiki-NG与其前身相比为研究界增加最后,它提供了一些关于其对研究和高等教育影响的指标。···George Oikonomou,Simon Duquennoy,Atis Elsts et al.软件X 18(2022)1010897表2资助使用Contiki-NG的研究项目。项目名称出资人参考文献F-InteropH20205G-珊瑚H2020[34个]球体英国EPSRC欧洲阀门H2020[32个]韦塞迪亚H2020[35]第三十五届电子保健@家瑞典知识基金会[36个]协助瑞典战略研究增效Innovate UKContiki-NG附带了一个路线图,可以在GitHub上直接访问。目前正在进行的更新被标记为长期愿望清单标有竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作确认作者是目前Contiki-NG维护人员中的个人,他们可以为准备这份手稿做出贡献。虽然作者编写了很大一部分源代码,但我们并不声称拥有整个代码库的所有权。多年来,超过250名个人开发和贡献了源代码,包括业余爱好者、学生、研究人员和行业专业人士。GitHub的考虑到这一点,我们首先要感谢那些自2006年第一个开源版本以来为Contiki-NG和最初的Contiki OS做出贡献的前沿人士。我们感谢Adam Dunkels -最初Contiki OS的发明者-以及多年来担任项目维护者的所有个人。这项工作得到了VINNOVA和瑞典战略研究基金会通过aSSIsT项目的部分支持。引用[1] Akyildiz IF,Su W,Sankarasubramaniam Y,Cayirci E.无线传感器网络综述。Comput Netw2002;38(4):393-422.[2] [10] Levis P,Madden S,Polastre J,Szewczyk R,Whitehouse K,WooA,et al. TinyOS:传感器网络的操作系统。在:环境智能。Springer; 2005,p. 115-48[3] 张文辉A,张文辉B. Contiki -一个轻量级和灵活的操作系统的微型网络传感器。第29届IEEE本地计算机网络国际会议。2004年,p.455比62[4] 杨伟杰,陈晓华. Protothreads:简化内存受限嵌入式系统的事件驱动编程。第四届嵌入式网络传感器系统国际会议论文集。New York,NY,USA:ACM; 2006,p.29比42[5] 邓克尔斯河用于8位架构的完整TCP/IP。第一届移动系统、应用和服务国际会议论文集。2003年 , 美 国 纽 约 州 纽 约 市 : AC M ; 20 0 3 年 , p. 85比98[6] Kim H-S , Andersen MP , Chen K , Kumar S, Zhao WJ , Ma K , et al.Systemarchitecture directions for post-PCI/32-bit networked sensors. 在 :Proceedings的第16届ACM会议上嵌入式网络传感器系统。ACM; 2018,p.264比7720 https://github.com/contiki-ng/contiki-ng/issues?q=is%3Aopen+is%3Aissue+label%3Aroadmap21 https://github.com/contiki-ng/contiki-ng/graphs/contributors[7]Baccelli E,Hahm O,Günes M,Wählisch M,Schmidt TC. RIOT OS:面向物联网的操作系统。2013年IEEE计算机通信研讨会。IEEE; 2013,p.79比80[8]Javed F,Afzal MK,Sharif M,Kim B-S.物联网(IoT)操作系统支持、网络技术、应用和挑战:比较评论。IEEE Commun Surv Tutor2018;20(3):2062-100.[9]Silva M,Cerdeira D,Pinto S,Gomes T.物联网低端设备的操作系统:分析和基准测试。IEEE Internet ThingsJ2019;6(6):10375[10]美国电气与电子工程师协会。802.15.4-2015 - IEEE低速率无线网络标准。2016年,IEEE标准802.15.4-2015。[11] Thubert P. IEEE 802.15.4(6ti
下载后可阅读完整内容,剩余1页未读,立即下载
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 利用迪杰斯特拉算法的全国交通咨询系统设计与实现
- 全国交通咨询系统C++实现源码解析
- DFT与FFT应用:信号频谱分析实验
- MATLAB图论算法实现:最小费用最大流
- MATLAB常用命令完全指南
- 共创智慧灯杆数据运营公司——抢占5G市场
- 中山农情统计分析系统项目实施与管理策略
- XX省中小学智慧校园建设实施方案
- 中山农情统计分析系统项目实施方案
- MATLAB函数详解:从Text到Size的实用指南
- 考虑速度与加速度限制的工业机器人轨迹规划与实时补偿算法
- Matlab进行统计回归分析:从单因素到双因素方差分析
- 智慧灯杆数据运营公司策划书:抢占5G市场,打造智慧城市新载体
- Photoshop基础与色彩知识:信息时代的PS认证考试全攻略
- Photoshop技能测试:核心概念与操作
- Photoshop试题与答案详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)