我正在评估要在物联网项目中使用的操作系统,但我不知道什么是最好的进行方法。
我正在使用带有32k RAM和CC2520 802.15.4收发器的TM4C123GH6PM MCU,如果系统已经提供了这些驱动程序,那就太好了。
系统将运行一个(交互式)任务,以绘制一个点矩阵屏幕并对用户输入做出反应。它将配置和应用程序数据存储在spi闪存上。将有一个包含多个模块的网格(基于802.15.4),以在模块之间同步数据,从模块中提取传感器数据并将其转发到网关(想到了rpl),并在八卦中分发OtA固件更新。喜欢时尚。所有这些同时也运行着一个内存消耗大的应用程序。
到目前为止,我已经研究了以下系统:
RIOT:
优点
- 好的硬件抽象
- 占地面积小
- 非常活跃和乐于助人的社区
- 完整的802.15.4 / 6LoWPAN堆栈
缺点
- 不稳定,仍在发生根本变化
- 仍然包含比赛条件/崩溃
- 没有文件系统支持
- 少数网络协议
优点
- 成熟的系统,用于商业产品
- 具有许多有用协议的完整802.15.4 / 6LoWPAN堆栈
- 文件系统支持
- cc2520支持
缺点
优点
- 几乎没有其他复杂性
- 易于使用,可靠的调度程序
- 成熟的项目,用于许多产品
- 很多港口
缺点
- 没有文件系统
- 没有用于驱动程序的硬件抽象/没有硬件驱动程序
- 没有网络堆栈
- 动态内存使用率较高
优点
- 功能非常丰富,几乎感觉像Linux,但仍然很小
- 文件系统支持
- 好的硬件抽象
- Tiva C端口,许多其他端口
缺点
- 有点复杂
- 不支持802.15.4 / 6LoWPAN,仅支持“经典”网络堆栈
我的结论是将Contiki的大部分内容(网络堆栈,文件系统)移植到FreeRTOS。但是我对这样的叉子并不完全满意。我可能会添加错误,并且无法向后移植上游修补程序,而且我仍然必须发明自己的硬件抽象才能在将来切换MCU。因此,我最终将自己的操作系统用于似乎很多其他人也应该拥有的问题-之前有人没有这样做吗?(我的意思是我确实找到了一些东西,但是将整个contiki-os作为FreeRTOS任务运行的想法让我感到不舒服)
有什么我想念的吗?也许痛苦是值得的,我应该尝试让Contiki在硬件上达到功能状态?还是我错过了另一个可以解决我的问题的系统?
另外我不确定我是否完全需要6lowPan,但是当那意味着能够建立在现有协议上/与其他系统(例如Linux)兼容时,我愿意承担额外的开销。
running the entire contiki-os as a FreeRTOS task makes me uncomfortable
就是..哇!我永远不会想到这一点..