我知道的嵌入式操作系统——用还是不用,确实是个问题
[复制链接]
1、嵌入式操作系统的使用其实最大的问题是用还是不用。
2、嵌入式系统的逻辑和概述
嵌入式系统在很大的意义上并不是必需品,在各种程序设计语言中都没有任何嵌入式系统的逻辑思想,在计算机架构和体系这门课中,也没有任何关于嵌入式系统的架构说明。但是,除非开发的项目接近硬件的极限,或者需要很多底层的资源访问,那么嵌入式系统是非常有必要的选择。
嵌入式系统是在一个极小的硬件资源上,实现
- 类似并行多任务的功能,
- 尽可能多的访问和管理硬件资源,
- 用更统一化的语言格式和逻辑格式实现快速开发。
以上的每一项同时都是不选用的嵌入式系统的原因,也就是大家所认为的缺点,
- 在单片机上实现的任务都是以单线程流水线任务为主,并行没有必要。其实,对应两个LED的同时blink任务来说,单线程是逐个点亮,每个操作之间,至少差一个时钟周期,本身并不是完全同步的,并行系统中这两个blink任务是在不同的线程中,不需要考虑哪个在先哪个在后。
- 在单片机上一个项目只用到很少一部分的硬件资源,甚至只用GPIO就够了。但是,开发的项目不会只有一个,总会把全部都接触一遍的。
- 嵌入式系统学习曲线太陡,为了简单项目,用更复杂的嵌入式系统反而要用更多的时间。如果,采用线程的方式,一个完整开发流程结束后,这个工程的模板可以几乎用很少的变化就实现另一个完全不同的功能,很多情况,只需要增减若干个线程就能够生成一个完全不同的产品。
3、典型嵌入式系统
3.1 嵌入式系统其实应该从intel的windriver开始,风河公司有很多款嵌入式系统,其中比较出名的即使vxWorks,记住,这个系统是收费的,封闭的。而且在关系可靠性的航天,军工等方面都是必选(这个指NASA啥的)。
3.2 更多的是开源的rtos,对应着FreeRTOS等,很多芯片厂家都想办法提供自己的免费RTOS系统给开发者使用。也有IDE提供的RTOS,如Keil的RTX,和RTXtiny。
3.3 rt-thread,是另一类,开源而丰富。内核开源,用丰富的外部插件生成一个生态系统。这个其实非常值得赞一个,无论是否最后能成功。rt-thread是在做一个生态,而不是若干代码,这个想法其实非常有价值,不过,想要进入别人的地盘,也不是个荣誉的事情。
注意到没有,现在的FreeRTOS是AWS freeRTOS,亚马逊公司Amazon从来就不是个做慈善的企业,今年的竞选中有人(好像是川建国)爆料,去年在美国利润110亿美元,然后美国政府还要给他退税的。那么好心,给大家免费用rtos啊。
4、版权问题
其实嵌入式系统最大的问题,是版权问题。真正的rtos是应该收费的,但是现在通常的做法是任意使用,任意修改。多线程调度是有很多问题的,至少时钟冲突,调度失效,堆栈溢出都是常见的问题,更不要说代码就有bug这些波音公司都会翻车的问题了。如果,点200个灯玩玩还好,如果用在电梯控制,那么就不会那么简单了。
只有,相对封闭的安全代码,能够有稳定收入的开发团队,嵌入式系统才能很好的发展和运用。当然,有大佬出钱撑着,希望等别人都饿死了以后再涨价,这样的系统不可以免费。越是独立的嵌入式系统越需要一个很好的收费机制保证持续的代码更新,同时也使得大佬更有动力把免费进行下去。
5、rt-thread体验
这里还是要赞一下rt-thread,无论是不是国产,这个完整的内核系统及扩展插件都是很潮的。不过,想要完整使用,需要很长的时间去测试和完整研究。
最后建议给一个快速开发指南,30分钟从小白变大佬,这样我们一众菜鸟就更爱用了。毕竟,时间还是有限的。
另外,兼容性测试也是个需要做好的事情,想移植到新的板子上,兼容性总是不容易过关,尤其是现在双核系统越来越多,不能适应再多核系统,这样就太受限制了。
6、小小建议
总体来说,即使是单线程,使用嵌入式系统也会很有意义。
比较遗憾的就是资源受限的系统,只能使用loop循环,轮询等操作。如8051系列,最多用到rtxTiny。
嵌入式系统更重要的是自主版权,开发者可控。
|