Project Nano-RTEMS for ARMV7M
我的想法如下:
1、为 ARMV7M 平台提供一个可靠的RTOS 平台,RTEMS本身就是这么一个可靠的硬实时系统,而Cortex-M3,M4有着越来越强的处理能力,可扩展NAND和SDRAM,非常适合跑这类本身就是比较完善的系统。
2、提供一个相对精简的核心,只耗 20KROM 和 10K RAM,取代 ucos 或者freeRTOS,因为RTEMS有完善的接口处理,但这个损耗对于Cortex M3 设备大容量的ROM和RAM来说完全不是问题。所以不可能像UCOS那么小,但是优点是可扩展性高。非常适合简单OS要求的系统。
3、可选的 termios 串口处理,或者简单的用户实现接口,看具体要求,主要是提供了一种串口的模型,因为实际开发中还是有好多串口的接口芯片的。
4、提供可选的 shell ,处理脚本,看具体的需求。
5、提供常用的文件系统,提供 FatFS,用来访问SD卡,提供 JFFS2 来实现 NAND 上的文件系统。
6、提供精简的 LWIP 网络协议栈供选用,一般64K RAM 以内能使用。如果ROM和RAM够,则提供 RTEMS 自己的 bsd 协议栈,一般要求 256K 以上的 RAM 环境应用,实现一个稳定的网络应用。
7,、移植GUI,让应用可以使用GUI。
8、提供 USB 协议栈 (目前RTEMS还没有,暂时从其他地方移植)
9、容易开发,容易调试,对于习惯单片机的人来说,实在受不了gcc那种调试方式,加快产品开发速度。Keil,IAR 等有无比的优势。
出于以上的考虑,还有对RTEMS的热爱,所以决定移植到 Keil 平台上,去掉一些不要的特性,保留自己需要的。其实这个 project 是从 2014年1月份在搞,刚开始也是尝试,但是到目前为止各种进展顺利,所以有信心能完成。受公司工作的影响,预算是 4月份能发布第一个可用的版本,然后就是进行 bug 修正,压力测试等工作
限制如下:
移植到 Keil MDK 平台,抽取编译器相关的内容
不要 ADA的支持
不要除了 ARMV7M 以外的所有平台,CPU支持
不要 newlib 的支持,不依赖于具体的 C 库,尽量通用
不要 CXX, ITRON
不要多核和多处理器支持
基于 RTEMS 4.10.99 git版本开发,还没有正式发布
第一阶段目标
移植所有 score , sapi, rtems 对应的系统函数
移植调试 contex 相关,应该能实现多任务切换。
能使用C库,printf 等函数正常
控制 ROM 在 20K ,RAM 使用 10KB 以内
能使用 rtems 的 API 函数,task,event,mutex,sem 等OS基本内容必须实现。
保留 posix,网络,但第一阶段不实现
第二阶段目标
文件系统的实现
posix 的移植
网络移植
第二阶段的工作还没有具体的日程,看第一阶段的成果而言