文章目录

  • 前言
  • 一、概述
  • 二、用RTOS做嵌入式开发的优势
    • 1.软件工程角度分析
    • 2.操作系统带来的优势

前言

实时操作系统(RTOS)

提示:以下是本篇文章正文内容,下面案例可供参考

一、概述

RTOS(Real Time OS)即**实时操作系统,根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS支持的系统中,每个任务均有一个优先级**,RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。
实时多任务操作系统,以分时方式运行多个任务,任务之间的切换以优先级为根据。只有优先服务方式的RTOS才是真正的实时操作系统。
使用实时操作系统还需要额外的ROM/RAM开销,2~5%的CPU额外负荷,以及内核的费用。
使用实时操作系统的必要性
嵌入式实时操作系统提高了系统的可靠性
提高了开发效率,缩短了开发周期。例如官方甚至提高网络协议栈、文件系统、图形界面(ucGUI、emWin、QT…)的支持。
嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。

二、用RTOS做嵌入式开发的优势

1.软件工程角度分析

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

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

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

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

2.操作系统带来的优势

线程方式的并发任务处理,解决模块化问题,同时保证实时性。
1. 模块化
使用了操作系统以后,整个软件的工作被拆分成了由多个任务来构成(也会被称为线程),每个线程有自己独立的运行空间,即线程堆栈,这个时候每个线程你玩你的,我做我的,咱们大家互补干涉,模块化程度得到很好的提高。

2. 并发性

从并发的角度来看,各个线程在使用 delay/事件等待 这类函数时,会自动的让出 CPU 给其他有需要的线程,不仅书写 delay 延时函数操的心少了,整个 CPU 的利用率也得到了提高,最终提升并发性。

3. 实时性

再来看实时性,像 ucos/RT-Thread 这些 RTOS 本身就被设计为实时的操作系统,各个线程都有不同的优先级别,重要的线程可以设为高优先级,不重要的线程可以降低优先级,做好全局的统筹规划后,这样整个软件的实时性也能得到保证。

4. 开发效率

由于操作系统提供了统一的抽象接口层,方便了可重用组件的积累,提高开发效率。

操作系统其实是一群软件大牛们智慧的结晶,他们站在应用软件、底层驱动的开发角度,对很多常见的软件功能进行了封装、抽象,比如:信号量、事件通知、邮箱、环形缓冲区、单向链表/双向链表等等,这些功能拿来即用,对于开发者方便极了

还有一些操作系统,比如:Linux 和我们国产的 RT-Thread ,他们这些系统对碎片化的硬件,统一封装了一套标准的硬件操作接口,一般称为设备驱动框架。这样我们的应用软件工程师,就可以专攻应用的工作,再也不用怕更换硬件,又需要重复造轮子了。

5. 软件生态
生态的丰富带来了量变到质变的过程(自己玩->大家一起玩)。
使用操作系统所带来的软件可模块化、重用性的提升,也使得我们自己在做软件开发时,可以封装一套基于操作系统、适合嵌入式的可重用组件,这些组件不仅可以用在自己的项目中,还能开源出来分享给更多有需要的嵌入式开发者,把软件的价值最大化。

实时操作系统(RTOS)相关推荐

  1. 浅议实时操作系统RTOS

    ​01.什么是实时操作系统(RTOS)? 实时操作系统 (Real-Time Operating System,RTOS) 是一种为实时应用程序提供服务的操作系统,该类操作系统能快速响应并处理数据,处 ...

  2. 实时操作系统 RTOS的任务调度器的理解

    前言 熟悉实时的操作系统RTOS,需要深入理解[任务调度器]的原理与实现方法 大部分的实时操作系统RTOS,任务调度器算法都是[抢占式的](可剥夺方式) 介绍 任务是实时操作系统RTOS的最重要的管理 ...

  3. 实时内核(Core)和实时操作系统(RTOS)有何不同?

    大家都知道什么是实时操作系统,但是,大家熟知的实时操作系统,站在更广的角度来看,其实它就是一个实时内核. 一.实时内核和实时操作系统 一个实时内核是管理微处理器(MPU).微控制器(MCU)或数字信号 ...

  4. threadx系统_实时操作系统(RTOS)市场简报

    ​微控制器与微处理器 微控制器单元,简称微控制器,其英文名为microcontroller unit(简写微MCU),是指在一个芯片上构成的以实现控制目的为主的功能单元.其包括中央处理器.存储器.寄存 ...

  5. android和rtos相互切换,通用操作系统与实时操作系统(RTOS)比较

    零.引 子---由终端设备到RTOS:RTOS无处不在.......... (1).Android手机有两个处理器,一个叫Application Processor(AP),一个叫Baseband P ...

  6. RTOS实时操作系统

    RTOS实时操作系统 RTOS的起源与目的 RTX实时操作系统模块 任务创建.消灭 任务调度 调度方式---抢占式.时间片.合作式 优先级修改 任务间同步 事件标志组 信号量 互斥信号量 进程锁 任务 ...

  7. linux 内核rt,实时操作系统kernel rt

    https://blog.csdn.net/baidu_34045013/article/details/78886617 实时应用程序在某些触发事件和应用程序对该事件的响应之间有操作截止日期.为了满 ...

  8. 嵌入式实时操作系统ucos-ii_「正点原子NANO STM32开发板资料连载」第三十六章 UCOSII 实验 1任务调度...

    1)实验平台:alientek NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第三十六章 ...

  9. 用于实时操作系统固件更新开发指南的MediaTek Linkit MT2523开发平台

    LinkIt_for_RTOS_Firmware_Update_Developers_Guide--用于实时操作系统固件更新开发指南的MediaTek Linkit™开发平台 MediaTek Lin ...

  10. 基于STM32的实时操作系统FreeRTOS移植教程(手动移植)

    前言:此文为笔者FreeRTOS专栏下的第一篇基础性教学文章,其主要目的为:帮助读者朋友快速搭建出属于自己的公版FreeRTOS系统,实现后续在实时操作系统FreeRTOS上的开发与运用.操作系统的学 ...

最新文章

  1. HDU3338 Kakuro Extension(最大流+思维构图)
  2. Python统计网站访问日志log中的IP信息,并排序。。
  3. pytorch注意事项
  4. codeforces 1060b Maximum Sum of Digits(思维题)
  5. python文本替换 数据库_在Python中使用ASCII文件中的注释查找/替换子...
  6. bom .dom_MicroProfile 2.2 BOM导入支持
  7. 几种常见的集成触发器(D、T、JK)
  8. android新建工程横屏,华为MatePad Pro构建的安卓平板横屏生态有何不同?来看看
  9. laravel实现前后台路由分离(转载)
  10. 何小鹏退出UC浏览器母公司股东名单
  11. Handler、AsyncTask、HandlerThread和IntentService之间的对比
  12. 力拼5G,台湾拟释放出更多频谱
  13. NetCore MiddleWare 注意事项
  14. 古董留念 - Microsoft Office 4.2中文版
  15. 异常,性能损失在哪?
  16. 解决conda install速度慢
  17. 复制:为什么你说“就差一个码农了”,我们是拒绝的
  18. paip.提升用户检验--------取回密码-忘记密码提醒
  19. 无法连接终端授权服务器,许可证已过期的客户端可能无法连接到终端服务器的解决方案...
  20. QPSK调制解调原理(IQ调制)

热门文章

  1. 【Leetcode】1152. Analyze User Website Visit Pattern
  2. matlab狗抓兔子,怎样训成年犬捉兔子-怎样训狗抓兔子
  3. Salome_meca2019安装教程
  4. js创建一个电脑对象,该对象要有颜色、重量、品牌、型号,可以看电影、听音乐、打游戏和敲代码。
  5. Jasper导出excel
  6. Linux下替换文件中的字符串
  7. word2vec聚类
  8. Brain Stimulation:深部脑刺激治疗难治性抑郁症的连接体分析
  9. Science:前额叶皮层在哺乳动物上的解剖学异同
  10. 技嘉GA-H97-HD3黑苹果安装+配置windows双系统