裸机系统
裸机系统一般分为包括轮询系统和前后台系统:
(相关资料图)
(1)轮询系统:轮询系统是指在开发程序时,在main函数里先初始化需要的硬件,然后在一个死循环(while)中不断循环、按照程序的顺序执行各种动作,这种架构的伪代码可表示如下:
轮询系统是一种最简单的软件结构,通常只适用于那些只需要顺序执行代码且不需要外部事件来驱动的就能完成的事情,当有外部事件驱动时(例如按键),实时性就会降低。
(2)前后台系统
前后台系统是在轮询系统的基础上采用了中断处理,外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断响应称为前台, main 函数里面的无限循环称为后台,相应的伪代码可表示如下:
虽然事件的响应和处理是分开了,但是事件的处理还是在后台里顺序执行的,但相比轮询系统,前后台系统确保了事件不会丢失,再加上中断具有可嵌套的功能,这可以大大的提高程序的实时响应能力。在一般简单的中小型项目中,使用前后台的软件架构效果更好。
RTOS:Real Time Operating System,实时操作系统
RTOS也称为多线程/任务系统,相比前后台系统,多线程/任务系统的事件触发是在中断中完成的,但事件的处理是在线程/任务中完成的。在多线程/任务系统中,线程/任务跟中断一样,也具有优先级,当一个紧急的事件/信号在中断被触发之后,事件/信号对应的线程/任务的优先级足够高,就会立马得到响应。相比前后台系统,多线程/任务系统的实时性更高。并且,当所有的线程/任务处于等待状态时,系统会进入idle线程/任务,在idle线程/任务里面可以让CPU进入stop、standy等低功耗模式,降低系统功耗。
相应的伪代码如下:
在多线程/任务系统中,根据程序的功能,我们把这个程序主体分割成一个个独立的,无限循环且不能返回的小程序,称之为线程/任务。每个线程/任务都是独立的,互不干扰的,且具备自身的优先级,由操作系统进行调度管理。
对于一些复杂的需求,加入操作系统反而使我们的编程变得简单了。整个系统随之带来的额外开销是操作系统占据的FLASH 和 RAM。如今单片机的 FLASH 和 RAM 是越来越大,完全能够满足RTOS那点开销。
RTOS因为有了任务优先级、任务调度、事件/信号量等管理机制,
1.能更有效区处理紧急任务
2.能在CPU没有事情需要处理时,进入空闲任务方便低功耗管理
而裸机的前后台系统,更多的是
1. 要么CPU一直顺序查询和顺序执行,一直跑;没有低功耗的概念,无法实现高优先级的事情先处理。
2. 要么CPU通过定时器,周期性休眠,周期性运行,实时性差
定期以通俗易懂的方式分享嵌入式知识,关注公众号,加星标,每天进步一点点。
声明:
本号原创、转载的文章、图片等版权归原作者所有,如有侵权,请联系删除。