沁恒的CH573芯片是一个非常便宜好用的蓝牙芯片,采用了RISC内核,主频可达60M,资源是18KB RAM + 448KB FLASH + 32KB DataFlash。
在我们使用了芯片的蓝牙库后,会占用很多的ram,快速代码占用4k多,蓝牙协议栈还需要占用5k左右,还需要预留堆栈左右给芯片使用,留给客户的可用ram空间只剩下了8k不到,所以在给ch573移植操作系统时经常会遇到内存不够用的尴尬处境。
对于这类情况,一般都是使用蓝牙库自带的TMOS进行任务的调度处理。但是TMOS有一个无法避免的缺陷-它不是中断安全的。即我们不可以在中断中调用TMOS的函数,不然会出现函数调用不成功等意外情况,导致功能无法实现。
在这里将介绍一个占用特别小的伪RTOS,即ProtoThread。因为它并不是通过切换芯片寄存器等上下文实现的任务切换,所以只能算一个伪RTOS。
ProtoThread的作者Adam Dunkels,他是UIP,lwIP,Contiki的作者。ProtoThread现在作为物联网操作系统Contiki NG中负责任务调度的部分,它综合考虑了低功耗物联网设备的性能,可以在8位MCU上流畅运行。
在这里我们将介绍如何将ProtoThread移植到CH573,并写DEMO测试。
首先打开https://github.com/smartmx/ProtoThread-Core
https://github.com/smartmx/ProtoThread-Core,从该网址下载从Contiki NG中提取出来的ProtoThread部分,该部分已经做了充分的移植准备工作,无需去Contiki NG源码中一点点移植。

最低0.47元/天 解锁文章
572

被折叠的 条评论
为什么被折叠?



