6014|5

422

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

我知道的嵌入式操作系统——用还是不用,确实是个问题 [复制链接]

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。

    嵌入式系统更重要的是自主版权,开发者可控。

 

最新回复

单核的单片机里应该不存在绝对的并行系统,就算是线程之间来回切换,也是有前有后的,os的基础是时间片轮转,分时复用硬件资源,这就决定了除非你上双核,否则使用IO直接驱动的LED不存在同时点亮的可能。 RTOS现在的主要用途可能还是用来插GUI、LWIP这类通信协议栈。裸机编程的可移植性也没那么差,应用、抽象、硬件层分的好,移植起来还是比较快的   详情 回复 发表于 2019-12-2 08:53
点赞 关注(1)

回复
举报

80

帖子

1

TA的资源

一粒金砂(中级)

沙发
 

RT-Thread马上会推出新的IDE  在这之后入门门槛会大幅度降低    12.7上海和12.21深圳他们有开发者大会有机会现场体验 

 

 
 

回复

7462

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 
本帖最后由 freebsder 于 2019-11-30 14:40 编辑

本来不欲回复,可是看着主贴说的太牵强,想想回一下还是不要让主贴误导人吧。
比如编程语言,计算机结构本来和操作系统本就是相对独立的部分,其他两个不太涉及嵌入式系统不是很正常的事吗?这是怪体育课不教语文吗?又比如什么时钟周期和并行的解释也是瞎扯。。。上不上rtos的一个普遍抉择因素是你的业务有没有天然的异步行为,或把一些看似可以同步的行为处理成异步可以使得程序更具质量,而不是时钟周期啥东西。cpu和dma对sram来说天然就是异步,它的处理我们交给了core;中断和执行流也是异步,我们不过习惯用全局变量来进行他们之间的数据交换。为了避免异步,大多数单片机程序员宁愿用周期轮询的方式避免处理中断。简单业务随便整,就像要画3,50个低频器件的pcb的时候自动布线完全没啥问题。大多数单片机程序员也只接触过如同这3,50个器件pcb的复杂业务吧。

 
 
 

回复

2874

帖子

4

TA的资源

五彩晶圆(中级)

4
 

这个问题我和@freebsder的观点差不多,主要是看业务的要求不是看兴趣,我有多年的操作系统的开发经验,复杂系统上操作系统是必然的选择,而且一旦使用了就不打算回到“前后台系统”。但是,对于一个内存和flash有限的系统功能又有限,操作系统就没必要了。

还有就是系统的配套资源,如:TCP/IP协议栈、GUI界面等的稳定性...等等。如果配套不稳定最好别用!别用!别用!

名称虽然叫“实时操作系统”但是真的想实时也别用了,最好是硬件触发,其次是中断处理,在次才是“实时操作系统”

个人经验,嵌入式实时操作系统只要掌握了一种就会“触类旁通”。其它系统就要快的多。

点评

有道理,不过多数民用应用是没有严格时序要求的,1ms的延时是不影响客户体验的。用RTX tiny这样的开源系统,用一次就上瘾。 对于工业应用,就要慎用,用就要用收费有后台支持的。自己搞定系统资源确实没有必要,  详情 回复 发表于 2019-12-2 08:58
 
 
 

回复

377

帖子

0

TA的资源

一粒金砂(高级)

5
 

单核的单片机里应该不存在绝对的并行系统,就算是线程之间来回切换,也是有前有后的,os的基础是时间片轮转,分时复用硬件资源,这就决定了除非你上双核,否则使用IO直接驱动的LED不存在同时点亮的可能。

RTOS现在的主要用途可能还是用来插GUI、LWIP这类通信协议栈。裸机编程的可移植性也没那么差,应用、抽象、硬件层分的好,移植起来还是比较快的

 
 
 

回复

422

帖子

4

TA的资源

纯净的硅(初级)

6
 
bigbat 发表于 2019-12-1 10:56 这个问题我和@freebsder的观点差不多,主要是看业务的要求不是看兴趣,我有多年的操作系统的开发经验,复杂 ...

有道理,不过多数民用应用是没有严格时序要求的,1ms的延时是不影响客户体验的。用RTX tiny这样的开源系统,用一次就上瘾。

对于工业应用,就要慎用,用就要用收费有后台支持的。自己搞定系统资源确实没有必要,而且实时系统没有配置好资源,其实是很浪费内存等资源的,也是要精通才好用的。

主要问题是硬件平台总在变化,所以各种状况总是不断,这样不如自己烧脑hardcore编程,至少弄个放心。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表