用RTOS做嵌入式开发,究竟有什么优势

程序并发工作效率低在写裸机软件时 , 不可避免的在主程序中会有一个超级大的while(1)循环 , 这里面几乎包含整个项目的所有业务逻辑 。 因为每个业务逻辑里面都会有delay这样的循环等待函数 , 这样导致了所有的业务逻辑几乎都是串行起来工作的 。 这个时候CPU就会有很多时间都浪费在了延时函数里 , 一直在空转 , 导致软件的并发效率非常差 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片

第二、模块化:高内聚、低耦合的原则
从软件工程的角度 , 我们在做软件开发时 , 都会强调高内聚、低耦合的原则 。 而裸机的模块化开发难度非常大 , 模块间的耦合较重 , 这也导致了无法在大型项目使用裸机来开发 。 还是刚才main函数中大while(1)的例子 , 可以想象到那么多功能都紧紧的挤在一个函数里 , 不可拆分 , 模块化开发的困难重重 。 举一个非常贴切的例子 , 在一些使用看门狗的项目中 , 如果使用delay延时函数 , 那得注意点 , 万一延时过长 , 主函数来不及喂狗 , 看门狗就被触发了 。 最后会产生这样一种感觉 , 一个简简单单的delay还得考虑喂狗功能 , 裸机开发时操的心太多了 , 自然无法应用在大型项目中 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片

第三、生态:很多高级软件组件 , 必须依赖于操作系统来实现
比如说 , 我前些年开源过一个基于FreeModbus的Modbus主机协议栈 , 因为要考虑各个平台适配问题 , 原本计划支持各种各样的操作系统 , 甚至是裸机平台 。 在各个操作系统上的适配都非常容易 , 但再去尝试着适配裸机时 , 发现难度重重 , 有一些函数在裸机上实现起来非常复杂 , 而且针对于不同的裸机环境 , 几乎没有通用性可言 , 太耗费精力了 。 所以我最终就放弃了裸机适配 , 一直到现在 , 在裸机上还是没法用这个Modbus主机协议栈 。 还有一些软件无法运行在裸机上 , 比如:乐鑫、Realtek、ti和联发科提供的WIFiSOCSDK , 一些蓝牙SOC的SDK也都是只支持操作系统 , 所以 , 如果你不了解、不会使用操作系统 , 这些芯片也就玩不转了 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片

第四、实时性:功能复杂的情况下 , 实时性无法保证
软件的实时性在一些领域会有一定的要求 , 软件的每个步骤必须在指定的时间被触发 。 工控领域就是最常见到的场景 , 如果实时性无法保证 , 机械设备可能就无法按照指定时序要求去动作 , 以至于发生机械事故 , 甚至会威胁到人的生命 。 回过来接着看裸机软件 , 如果软件变得庞大以后 , 可以想象到 , 主程序中那么大的一个while(1)循环 , 代码耦合严重 , 到处都是delay延时 , 要保证实时性几乎是不可能的 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片

第五、可重用性:软件可重用性差 , 总是重复造轮子
可重用性与模块化程度有直接的关系 。 相信大家每个人在工作中都不想做很多重复性的工作 , 同样在写代码时 , 也想着尽可能少写一些功能相似的代码 。 但在这个嵌入式碎片化极其严重的时代 , 各式各样的芯片 , 想要让同样的代码 , 在裸机环境下同时适配不同的硬件 , 难度非常大 。 这样也就导致了裸机的代码会过多的依赖于底层硬件 , 重复造轮子的过程也就不可避免 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片

操作系统带来的优势
第一次接触操作系统 , 是在2010年左右 , 那时STM32已经开始流行起来 , 这么强大的单片机 , 有很多人都在上面跑操作系统 , 我也跟着移植了ucos , 在上面还跑了ucgui , 这个时候写应用完全是一种全新的体验 , 爽了很多 , 玩了一年了ucos , 后来接触到咱们国产的RT-Thread , 在它上面有很多现成的、拿来即用组件 , 试用以后发现更爽 , 就一直用到了今天 , 大概有8年了 。 也跟大家也聊一聊操作系统的优势:线程方式的并发任务处理 , 解决模块化问题 , 同时保证实时性1、模块化使用了操作系统以后 , 整个软件的工作被拆分成了由多个任务来构成(也会被称为线程) , 每个线程有自己独立的运行空间 , 即线程堆栈 , 这个时候每个线程你玩你的 , 我做我的 , 咱们大家互补干涉 , 模块化程度得到很好的提高 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片
2、并发性从并发的角度来看 , 各个线程在使用delay/事件等待这类函数时 , 会自动的让出CPU给其他有需要的线程 , 不仅书写delay延时函数操的心少了 , 整个CPU的利用率也得到了提高 , 最终提升并发性 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片
3、实时性再来看实时性 , 像ucos/RT-Thread这些RTOS本身就被设计为实时的操作系统 , 各个线程都有不同的优先级别 , 重要的线程可以设为高优先级 , 不重要的线程可以降低优先级 , 做好全局的统筹规划后 , 这样整个软件的实时性也能得到保证 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片
4、开发效率由于操作系统提供了统一的抽象接口层 , 方便了可重用组件的积累 , 提高开发效率操作系统其实是一群软件大牛们智慧的结晶 , 他们站在应用软件、底层驱动的开发角度 , 对很多常见的软件功能进行了封装、抽象 , 比如:信号量、事件通知、邮箱、环形缓冲区、单向链表/双向链表等等 , 这些功能拿来即用 , 对于开发者方便极了还有一些操作系统 , 比如:Linux和我们国产的RT-Thread , 他们这些系统对碎片化的硬件 , 统一封装了一套标准的硬件操作接口 , 一般称为设备驱动框架 。 这样我们的应用软件工程师 , 就可以专攻应用的工作 , 再也不用怕更换硬件 , 又需要重复造轮子了 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片
5、软件生态生态的丰富带来了量变到质变的过程(自己玩->大家一起玩)使用操作系统所带来的软件可模块化、重用性的提升 , 也使得我们自己在做软件开发时 , 可以封装一套基于操作系统、适合嵌入式的可重用组件 , 这些组件不仅可以用在自己的项目中 , 还能开源出来分享给更多有需要的嵌入式开发者 , 把软件的价值最大化 。 个人感觉这是一件蛮有意义事情 , 我自己本身也是一名开源极客 , 也有在GitHub上开源一些嵌入式软件 。 说实话在做开源软件前 , 能够深入交流嵌入式软件的地方非常少 , 毕竟大家的代码不是芯片不一样 , 就是硬件不一样 , 你的代码给了他 , 也不一定能运行起来 。 但是自从用了操作系统后 , 软件的可重用性提高了 , 能够让更多的人很迅速的用起来我的开源软件 , 这个时候能够有更多的人可以一起交流 , 还接触到了很多的大牛们 , 甚至是国外的朋友 。 俗话说:水涨船高 , 我的能力也从此得到了快速的提升 。 所以总结下来 , 有一个能一起交流嵌入式软件圈子还是蛮重要的 , 自己闭门造车 , 可能都是在重复造轮子 。 用RTOS做嵌入式开发,究竟有什么优势
文章图片

常见RTOS优势对比
ucos/freertos/RT-Thread , 选择这三款OS的原因是 , 它们的年限都比较长了 , 在市面上都蛮有知名度 , 用过的人比较多 , 更有说服力 。 1、基本功能、性能各家RTOS差异很小 , 可比性并不是很大2、易用性/可读性这块FreeRTOS应该说是最差 , 奇葩的匈牙利命名法 , 代码实现用了很多宏 , 可读性非常差 。 ucos可读性还可以 , 注释也很全 。 这块做的比较好的是RT-Thread , 它是类Linux的代码风格 , 面向对象的设计模式 , 代码简洁易懂 。 在保证了体积(最小ROM:3KRAM:1.5K)的同时 , 还借鉴了Linux的设备驱动框架、虚拟文件系统、Shell等功能 , 设计更加优雅 。
用RTOS做嵌入式开发,究竟有什么优势
文章图片
3、组件丰富性RT-Thread比起传统UCOS、FreeRTOS不仅仅在基础功能上多而全 , 多达50个以上的可重用软件组件 , 还有很多物联网组件 , 对于物联网产品几乎做到开箱即用 。 RT-Thread还可以运行Python、Java、Lua这些高级语言的脚本 , 进一步降低开发难度 。
用RTOS做嵌入式开发,究竟有什么优势
文章图片
4、开发资料这块ucos做的最好 , 还有配套相关的书籍 , FreeRTOS属于后起之秀 , 网上也有很多相关资料 。 RT-Thread这块之前还是略显薄弱的 , 不过现在RT-Thread对这块非常重视 , 最直观的可以看到官网上的应用笔记越来越多了 , 还有一些配套教学视频 。 5、版权ucos商业是要收费的 , FreeRTOS和RT-Thread版权都很宽松 , 特别是RT-Thread刚刚使用了Apache许可协议 。
用RTOS做嵌入式开发,究竟有什么优势
文章图片
6、社区生态这三款RTOS的社区都比较活跃 , 现在可以感觉到ucos慢慢的用的人越来越少了 , RT-Thread和FreeRTOS用的人都在增多 。 RT-Thread也是开发者最多的国产RTOS , 并且还拥有国内最大的嵌入式开源软件社区 。
用RTOS做嵌入式开发,究竟有什么优势
文章图片
免责声明:本文由作者原创 , 文章内容系作者个人观点 , 电子发烧友网转载仅作为传达一种不同的观点 , 不代表电子发烧友网对该观点的赞同或支持 , 如有异议 , 欢迎联系电子发烧友网 。 更多精彩文章阅读
全球135万确诊!停工停产、无薪休假、降薪 , 扛过寒冬!
戴口罩人脸照片2毛一张暗中交易!人脸识别安全应用如何保障?
华为斥资6600万入股中电仪器 , 国内测试仪器局面将巨变?
拆解华为P40:“去A化”加强 , 国产化更进一步
【用RTOS做嵌入式开发,究竟有什么优势】主动降噪与音质加强 , TWS耳机的未来走向


    推荐阅读