对RTEMS移植剪裁的一些想法(闲聊)

我想的是剪裁一个真正的精简版 RTEMS ,因为直接从源代码中整合,删除一些不要的特性。

不要浮点支持
不要多核,多CPU支持。
timestamp 使用UNIX格式的,不使用 64位。
只支持时间片调度和优先级调度。
将 newlib 的头文件包含进来,不再独立
整理,精简头文件,包含等
不要 16位ID
主要为 ARMV7 设计,
不要文件系统,整理一套简单的libio系统,和 open read write 的函数接口,方便访问驱动。
termios移植和剪裁,比较重要的串口处理机制。
删除线程对libc保存的接口,这意味着,libc的一些非重入因数(例如 error 变量)需要用户线程加锁去保证,
或者干脆就在单线程中访问C库,就没问题了。
剪裁 shell,只留下接口框架,简化,不要流重定位,可以很方便的添加命令。
将多个功能相同的函数整理到一个文件中,加快编译速度。
删除一些编译器相关的关键字,采用编译器指定的形式
平台绑定在 IAR 上面。

目标是用在 M3 上面作为一个常用的RTOS使用,在一些资源缺乏的IC上上一个稳定的系统。
如果需要FS,则直接使用 FatFS,而不使用rtems那套超耗资源但完整的文件系统机制。
如果需要GUI,则直接移植ucgui
如果需要网络,则移植 lwip,如果需要稳定的网络,则直接使用rtems的bsd协议栈,不过需要至少 256K RAM

最近在linux上面搞驱动,500us 中断一次,对于linux这类不是实时系统,搞得整个人都崩溃了。双CPU的方案其实很实用,A9 + M3 的形式, A9 处理液晶,安卓等GUI,或者直接做一些时间要求不高的驱动。而 M3 则有强实时的优势,快速反应,可以做一些一百us几百的事件快速响应。而2个CPU之间需要一个稳定的协议栈进行通讯,可以通过 UART,所以 termios在这里显得很重要。而其他FS,网络等,并不是实时性要求,并且资源耗很多很多,比较适合在linux直接完成,这样就配合得很好。我基本就是基于这个考虑来做rtems的剪裁的。


对于一些单任务的,则直接用循环延时的方式来完成,并且通常资源很缺乏,只有10K以内的RAM,不需要RTOS
对于一些需要很多状态,如果使用状态机又变得很繁琐,用2-3个任务切换就显得很简单的场合,也适合用RTOS
对于一些系统有很多个设备协调,但是实时性不是很高,其实也是比较需要RTOS的。开发维护都很好做。

我一直评估RTEMS,由于它的设计完全是基于UNIX的思想,功能做得挺完整的,但是这样一来,系统就很臃肿,一般的MCU很难跑,这样就变得意义不大,有这些资源,何不直接上linux?例如如果要GUI,网络,那非得500K 的RAM,这样M3+SRAM 的方案其实价格很贵,何不使用 ARM9+linux 来做?所以我觉得,只有跳出这个圈才有生存的空间,那就是大刀阔斧的剪裁,适合一般的MCU使用。

不过我很喜欢RTEMS,就当是一个小型的UNIX系统,里面很多编程思想对我的影响很大。


仅仅的我的一点想法。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值