您的位置 首页 应用

用RTOS做嵌入式开发的优势介绍

用RTOS做嵌入式开发的优势介绍-从软件工程的角度,我们在做软件开发时,都会强调高内聚、低耦合的原则。而裸机的模块化开发难度非常大,模块间的耦合较重,这也导致了无法在大型项目使用裸机来开发。

榜首、并发性

程序并发作业功率低在写裸机软件时,不行避免的在主程序中会有一个超级大的 while(1) 循环,这里边简直包括整个项目的一切事务逻辑。因为每个事务逻辑里边都会有 delay 这样的循环等候函数,这样导致了一切的事务逻辑简直都是串行起来作业的。这个时分 CPU 就会有许多时刻都糟蹋在了延时函数里,一向在空转,导致软件的并发功率十分差。

第二、模块化:高内聚、低耦合的准则

从软件工程的视点,咱们在做软件开发时,都会强调高内聚、低耦合的准则。而裸机的模块化开发难度十分大,模块间的耦合较重,这也导致了无法在大型项目运用裸机来开发。

仍是方才 main 函数中大 while(1) 的比方,能够幻想到那么多功用都紧紧的挤在一个函数里,不行拆分,模块化开发的困难重重。

举一个十分恰当的比方,在一些运用看门狗的项目中,假如运用 delay 延时函数,那得留意点,假如延时过长,主函数来不及喂狗,看门狗就被触发了。最后会产生这样一种感觉,一个简简单单的 delay 还得考虑喂狗功用,裸机开发时操的心太多了,天然无法运用在大型项目中。

第三、生态:许多高档软件组件,有必要依赖于操作体系来完成

比方说,我前些年开源过一个根据 FreeModbus 的 Modbus 主机协议栈,因为要考虑各个渠道适配问题,本来方案支撑林林总总的操作体系,乃至是裸机渠道。在各个操作体系上的适配都十分简单,但再去尝试着适配裸机时,发现难度重重,有一些函数在裸机上完成起来十分杂乱,而且针关于不同的裸机环境,简直没有通用性可言,太消耗精力了。所以我终究就抛弃了裸机适配,一向到现在,在裸机上仍是没法用这个 Modbus 主机协议栈。

还有一些软件无法运转在裸机上,比方:乐鑫、Realtek、 ti联发科 供给的 WIFi SOC SDK ,一些蓝牙 SOC 的 SDK 也都是只支撑操作体系,所以,假如你不了解、不会运用操作体系,这些芯片也就玩不转了。

第四、实时性:功用杂乱的情况下,实时性无法确保

软件的实时性在一些范畴会有必定的要求,软件的每个进程有必要在指定的时刻被触发。工控范畴便是最常见到的场景,假如实时性无法确保,机械设备或许就无法依照指定时序要求去动作,以至于产生机械事端,乃至会要挟到人的生命。回过来接着看裸机软件,假如软件变得巨大今后,能够幻想到,主程序中那么大的一个 while(1) 循环,代码耦合严峻,处处都是 delay 延时,要确保实时性简直是不行能的。

第五、可重用性:软件可重用性差,总是重复造轮子

可重用性与模块化程度有直接的联系。信任咱们每个人在作业中都不想做许多重复性的作业,相同在写代码时,也想着尽或许少写一些功用类似的代码。但在这个嵌入式碎片化极端严峻的年代,林林总总的芯片,想要让相同的代码,在裸机环境下一同适配不同的硬件,难度十分大。这样也就导致了裸机的代码会过多的依赖于底层硬件,重复造轮子的进程也就不行避免。

操作体系带来的优势

榜首次触摸操作体系,是在 2010 年左右,那时 STM32 现已开端流行起来,这么强壮的单片机,有许多人都在上面跑操作体系,我也跟着移植了 ucos ,在上面还跑了 ucgui ,这个时分写运用完全是一种全新的体会,爽了许多,玩了一年了 ucos ,后来触摸到咱们国产的 RT-Thread ,在它上面有许多现成的、拿来即用组件,试用今后发现更爽,就一向用到了今日,大概有 8 年了。也跟咱们也聊一聊操作体系的优势:

线程方法的并发使命处理,处理模块化问题,一同确保实时性

1、 模块化

运用了操作体系今后,整个软件的作业被拆分成了由多个使命来构成(也会被称为线程),每个线程有自己独立的运转空间,即线程仓库,这个时分每个线程你玩你的,我做我的,咱们咱们互补干与,模块化程度得到很好的进步。

2、 并发性

从并发的视点来看,各个线程在运用 delay/工作等候 这类函数时,会主动的让出 CPU 给其他有需求的线程,不只书写 delay 延时函数操的心少了,整个 CPU 的利用率也得到了进步,终究进步并发性。

3、 实时性

再来看实时性,像 ucos/RT-Thread 这些 RTOS 自身就被规划为实时的操作体系,各个线程都有不同的优先等级,重要的线程能够设为高优先级,不重要的线程能够下降优先级,做好大局的统筹规划后,这样整个软件的实时性也能得到确保。

4、开发功率

因为操作体系供给了一致的笼统接口层,便利了可重用组件的堆集,进步开发功率

操作体系其实是一群软件大牛们才智的结晶,他们站在运用软件、底层驱动的开发视点,对许多常见的软件功用进行了封装、笼统,比方:信号量、工作告诉、邮箱、环形缓冲区、单向链表/双向链表等等,这些功用拿来即用,关于开发者便利极了

还有一些操作体系,比方:Linux 和咱们国产的 RT-Thread ,他们这些体系对碎片化的硬件,一致封装了一套规范的硬件操作接口,一般称为设备驱动结构。这样咱们的运用软件工程师,就能够专攻运用的作业,再也不必怕替换硬件,又需求重复造轮子了。

5、软件生态

生态的丰厚带来了量变到突变的进程(自己玩-》咱们一同玩)

运用操作体系所带来的软件可模块化、重用性的进步,也使得咱们自己在做软件开发时,能够封装一套根据操作体系、合适嵌入式的可重用组件,这些组件不只能够用在自己的项目中,还能开源出来共享给更多有需求的嵌入式开发者,把软件的价值最大化。

个人感觉这是一件蛮有意义工作,我自己自身也是一名开源极客,也有在 GitHub 上开源一些嵌入式软件。说实话在做开源软件前,能够深化沟通嵌入式软件的当地十分少,究竟咱们的代码不是芯片纷歧样,便是硬件纷歧样,你的代码给了他,也不必定能运转起来。可是自从用了操作体系后,软件的可重用性进步了,能够让更多的人很敏捷的用起来我的开源软件,这个时分能够有更多的人能够一同沟通,还触摸到了许多的大牛们,乃至是国外的朋友。俗话说:水涨船高,我的才能也从此得到了快速的进步。所以总结下来,有一个能一同沟通嵌入式软件圈子仍是蛮重要的,自己凭空捏造,或许都是在重复造轮子。

常见RTOS优势比照

ucos/freertos/RT-Thread,挑选这三款 OS 的原因是,它们的年限都比较长了,在市面上都蛮有知名度,用过的人比较多,更有说服力。

1、 基本功用、功能

各家 RTOS 差异很小,可比性并不是很大

2、 易用性/可读性

这块 FreeRTOS 应该说是最差,奇葩的匈牙利命名法,代码完成用了许多宏,可读性十分差。ucos 可读性还能够,注释也很全。这块做的比较好的是 RT-Thread ,它是类 Linux 的代码风格,面向对象的规划形式,代码简练易懂。在确保了体积(最小 ROM:3K RAM:1.5K)的一同,还学习了 Linux 的设备驱动结构、虚拟文件体系、Shell 等功用,规划愈加高雅。

3、 组件丰厚性

RT-Thread 比起传统 UCOS、FreeRTOS 不只仅在根底功用上多而全,多达 50 个以上的可重用软件组件,还有许多物联网组件,关于物联网产品简直做到开箱即用。RT-Thread 还能够运转 PythonJava、Lua 这些高档言语的脚本,进一步下降开发难度。

4、 开发材料

这块 ucos 做的最好,还有配套相关的书本,FreeRTOS 归于后起之秀,网上也有许多相关材料。RT-Thread 这块之前仍是略显单薄的,不过现在 RT-Thread 对这块十分重视,最直观的能够看到官网上的运用笔记越来越多了,还有一些配套教育视频。

5、版权

ucos 商业是要收费的,FreeRTOS 和 RT-Thread 版权都很宽松,特别是RT-Thread刚刚运用了Apache答应协议。

6、 社区生态

这三款 RTOS 的社区都比较活泼,现在能够感觉到 ucos 渐渐的用的人越来越少了,RT-Thread 和 FreeRTOS 用的人都在增多。RT-Thread 也是开发者最多的国产 RTOS,而且还具有国内最大的嵌入式开源软件社区。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/94374.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部