zoukankan      html  css  js  c++  java
  • RTOS概述

    概述


      如上图所示,裸机也叫做前后台系统,中断属于前台系统,while(1)循环中的叫做后台系统,任务是顺序执行的。而RTOS(Real Time OS)即实时操作系统。在RTOS支持的系统中,每个任务均有一个优先级(类似前面章节的中断抢占优先级),而当前正在运行的任务永远都是已经就绪的最高优先级任务,如上图中所示在裸机中假设在某种情况下需要马上运行task4,但是却不能够马上响应,需要轮到task4执行时,才可以运行,这样就不实时了,而且使用中断可能也不合适,因为中断处理函数中代码执行的代码越少越好,也需要避免使用浮点运算,局限太大了。而实时操作系统可以通过一些任务管理的方式(抢占或挂起)让需要优先运行的任务立即运行,除了中断能够打断其他的任务都不能够,这也是被称为实现系统的原因,任务管理后面再进行补充。
      使用实时操作系统还需要额外的ROM/RAM开销,2~5%的CPU额外负荷,以及内核的费用,但是嵌入式实时操作系统提高了系统的可靠性;线程方式的并发任务处理,解决模块化问题,同时保证实时性;官方提供了网络协议栈、文件系统、图形界面(ucGUI、emWin、QT....)的支持;嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。

    用RTOS做嵌入式开发的优势

      1.并发性
      裸机程序并发工作效率低,不可避免的在主程序中会有一个超级大的 while(1) 循环,这里面几乎包含整个项目的所有业务逻辑。因为每个业务逻辑里面都会有delay这样的循环等待函数,这样导致了所有的业务逻辑几乎都是串行起来工作的。这个时候CPU就会有很多时间都浪费在了延时函数里,一直在空转,导致软件的并发效率非常差;
      2.模块化:高内聚、低耦合的原则
      从软件工程的角度,我们在做软件开发时,都会强调高内聚、低耦合的原则。而裸机的模块化开发难度非常大,模块间的耦合较重,这也导致了无法在大型项目使用裸机来开发。还是刚才 main 函数中大 while(1) 的例子,可以想象到那么多功能都紧紧的挤在一个函数里,不可拆分,模块化开发的困难重重;
    举一个非常贴切的例子,在一些使用看门狗的项目中,如果使用delay延时函数,那得注意点,万一延时过长,主函数来不及喂狗,看门狗就被触发了。最后会产生这样一种感觉,一个简简单单的delay还得考虑喂狗功能,裸机开发时操的心太多了,自然无法应用在大型项目中;
      3.生态
      很多高级软件组件,必须依赖于操作系统来实现;
      4.实时性
      软件的实时性在一些领域会有一定的要求,软件的每个步骤必须在指定的时间被触发。工控领域就是最常见到的场景,如果实时性无法保证,机械设备可能就无法按照指定时序要求去动作,以至于发生机械事故,甚至会威胁到人的生命。回过来接着看裸机软件,如果软件变得庞大以后,可以想象到,主程序中那么大的一个 while(1) 循环,代码耦合严重,到处都是delay延时,要保证实时性几乎是不可能的;
      5.可重用性
      在嵌入式碎片化极其严重的时代,各式各样的芯片,想要让同样的代码,在裸机环境下同时适配不同的硬件,难度非常大。这样也就导致了裸机的代码会过多的依赖于底层硬件,重复造轮子的过程也就不可避免。

    常见RTOS优势对比

    &esmp;&esmp;常见的RTOS有UCOS/FreeRTOS/RT-Thread,其中RT-Thread是国产的,它们的年限都比较长了,在市面上都有一定的知名度,用过的人比较多。
    &esmp;&esmp;1. 基本功能、性能
    &esmp;&esmp;各家 RTOS 差异很小,可比性并不是很大;
    &esmp;&esmp;2. 易用性/可读性
    &esmp;&esmp;其中FreeRTOS做的比较差。UCOS可读性强,注释很全。做的最好的是RT-Thread,它是类Linux的代码风格,面向对象的设计模式,代码简洁易懂。在保证了体积(最小 ROM:3K RAM:1.5K)的同时,还借鉴了 Linux 的设备驱动框架、虚拟文件系统、Shell 等功能,设计更加优雅;
    &esmp;&esmp;3.组件丰富性
    &esmp;&esmp;RT-Thread比起传统UCOS、FreeRTOS 不仅仅在基础功能上多而全,多达50个以上的可重用软件组件,还有很多物联网组件,对于物联网产品几乎做到开箱即用。RT-Thread还可以运行PythonJava、Lua 这些高级语言的脚本,进一步降低开发难度;
    &esmp;&esmp;4.开发资料
    &esmp;&esmp;这块UCOS做的最好,还有配套相关的书籍,FreeRTOS属于后起之秀,网上也有很多相关资料。RT-Thread 这块之前还是略显薄弱的。因此,入门RTOS最好的系统就首选UCOS。

    官方网址

    RT-Thread官网网址:https://www.rt-thread.org/
    UCOS官网网址:https://www.micrium.com/ 
    FreeRTOS官网网址:https://www.micrium.com/ 
    

    UCOS-iii stm32f4xx keil5模板

    链接:https://pan.baidu.com/s/1A0eVfchu0kTflyypQGSTkw 
    提取码:emat 
    复制这段内容后打开百度网盘手机App,操作更方便哦
    
  • 相关阅读:
    python之路1:介绍和入门
    SpringMVC学习指南【笔记3】基于注解的控制器
    SpringMVC学习指南【笔记2】简介、校验器、配置
    SpringMVC学习指南【笔记1】创建bean实例的方法和依赖注入
    2018-12-18笔记
    elastic-job简介
    Java中由于数据太大自动转换成科学计数法解决方式
    Redis主从复制
    Redis数据类型
    Redis的基本命令
  • 原文地址:https://www.cnblogs.com/ding-ding-light/p/14515248.html
Copyright © 2011-2022 走看看