学习RTOS(2)裸机与系统
操作系统与裸机的区别
裸机运行的程序代码,一般由一个main函数中的while死循环和各种中断服务程序组成,平时CPU执行while循环中的代码,出现其他事件时,跳转到中断服务程序进行处理,没有多任务、线程的概念。
而引入操作系统后,程序执行时可以把一个应用程序分割为多个任务,每个任务完成一部分工作,并且每个任务都可以写成死循环。操作系统根据任务的优先级,通过调度器是CPU分时执行各个任务,保证每个任务都能够得到运行。若调度方法优良,则可使多个任务看起来是并行执行的,减少了CPU的空闲时间,提高了CPU的利用率。由操作系统的任务管理衍生出相应的CPU管理、内存管理,它们分别负责分配任务对CPU的占有权和管理任务所占有的内存空间。在linux操作系统中,还具有文件管理、I/O设备管理的功能。
首先操作系统有两种:一种是用MMU(Memory Managenent Unit ,即存储管理单元)的,另一种是不用MMU的。
用MMU的是Windows、 MacOS、 Linux 、Android。
不用MMU的是FreeRTOS 、VxWorks 、 ucLinux、uc/OS。
其次CPU也有有两种 :带MMU的和不带MMU的。
带MMU的有 Cortex-A、ARM9 、ARM11系列。
不带MMU的有 Cortex-M系列
而我们知道STM32是 Cortex-M3、Cortex-M4系列的…所以目前还不可能运行Linux操作系统,但是stm32可以运行uc/OS、ucLinux、FreeRTOS 、VxWorks等操作系统。其中uc/OS操作系统是开源代码,且小巧而严谨,具有很高的实时性,可以作为学习linux等高级操作系统的基础,实际项目中也经常使用uc/OS开发。
轮询系统
轮询系统即是在裸机编程的时候,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,轮询系统只适合顺序执行的功能代码,当有外部事件驱动时,实时性就会降低。
前后台系统
相比轮询系统,前后台系统是在轮询系统的基础上加入了中断。外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断在这里我们称为前台, main 函数里面的无限循环我们称为后台。
虽然事件的响应和处理是分开了,但是事件的处理还是在后台里面顺序执行的,但相比轮询系统,前后台系统确保了事件不会丢失,再加上中断具有可嵌套的功能,这可以大大的提高程序的实时响应能力。在大多数的中小型项目中,前后台系统运用的好,堪称有操作系统的效果。
多任务系统
相比前后台系统,多任务系统的事件响应也是在中断中完成的,但是事件的处理是在任务中完成的。在多任务系统中, 任务跟中断一样,也具有优先级,优先级高的任务会被优先执行。当一个紧急的事件在中断被标记之后,如果事件对应的任务的优先级足够高,就会立马得到响应。相比前后台系统,多任务系统的实时性又被提高了。
相比前后台系统中后台顺序执行的程序主体,在多任务系统中,根据程序的功能,我们把这个程序主体分割成一个个独立的,无限循环且不能返回的小程序,这个小程序我们称之为任务。每个任务都是独立的,互不干扰的,且具备自身的优先级,它由操作系统调度管理。加入操作系统后,我们在编程的时候不需要精心地去设计程序的执行流程,不用担心每个功能模块之间是否存在干扰。加入了操作系统,我们的编程反而变得简单了。整个系统随之带来的额外开销就是操作系统占据的那一丁点的 FLASH 和 RAM。现如今,单片机的 FLASH 和 RAM 是越来越大,完全足以抵挡 RTOS 那点开销。
无论是裸机系统中的轮询系统、前后台系统和多任务系统,我们不能一锤子的敲定孰优孰劣,它们是不同时代的产物,在各自的领域都还有相当大的应用价值,只有合适才是最好。
Hankin
2020.08.18
- 嵌入式系统学习(五)-NanoPi2基础实例开发(裸机程序按钮控制LED灯)
- ARM嵌入式linux系统学习之裸机(一)
- RTOS实时操作系统学习笔记之qnx嵌入式系统qnx系统
- 十.ARM裸机学习之中断系统2(S5PV210按键外部中断及中断处理)
- 02-JZ2440裸机学习之系统时钟和UART串口实验
- 【FreeRTOS学习05】深度解剖FreeRTOSConfig.h实现对系统的自定义剪裁
- RT-Thread源码学习第二篇,从裸机程序到多任务(线程)系统
- 八.ARM裸机学习之S5PV210的时钟系统1(原理概念及框图分析)
- 学习Linux系统的方法经验[有图,长文]
- 系统学习 jQuery (三) 选择器
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
- 嵌入式系统学习笔记(Part.3)
- 学习笔记--银行调度系统
- 操作系统处理器调度(CPU调度)的学习以及批处理系统中采用的调度算法、交互式系统中采用的调度算法
- 系统架构学习知识点
- 信息安全系统设计基础第二周学习总结
- CentOS学习10_CentOS系统安装过程和配置细节
- .NET系统学习----Globalization & Resources
- 推荐系统学习笔记(三)
- [Java学习笔记]Socket网络编程——附控制台版群聊、私聊系统