一、引言
几天前,在一家研究机构与一位同事闲聊时,他提到:目前在航空、航天及导弹武器装备领域,控制系统几乎全部采用串口屏,而非嵌入式系统。
起初,听起来我们的直觉有些矛盾:如此复杂的设备,控制逻辑必定非常复杂,如何在没有嵌入式系统的情况下完成如此复杂的功能控制?仔细理解后,答案是:安全+可控。
本文将探讨串口屏(SCM)与嵌入式系统、操作系统(OS)及实时操作系统(RTOS)之间的关系!本文将帮助您系统、全面地理解实时操作系统!
二、关于微控制器与嵌入式系统的定义
坦白说,目前尚无标准、正确的区分两者的答案。大家对MCU和嵌入式系统的理解略有不同。
撇开硬件不谈,从应用开发的角度,我理解如下:
串口屏:可以直接使用状态机实现程序框架,也可以使用一些实时操作系统(如ucOS、FreeRTOS、VxWorks、RT-Thread)来完成一些调度功能。
嵌入式系统:使用嵌入式Linux操作系统及其变种来编写应用程序。
我知道我的理解可能有误,至少不够严谨,范围也较窄,因为没有标准答案,让我们参考维基百科的定义,毕竟概念是死的,重要的是我们如何根据实际需求进行选择。
- 微型计算机,全称单片微型计算机,也称为微控制器单元 MCU(微控制器单元)。将中央处理单元、存储器、定时/计数器、各种输入/输出接口等集成到单个集成电路芯片中的微型计算机。由于其发展非常迅速,旧的单片微型计算机定义已无法满足需求,因此在许多应用中被称为更广泛的微控制器;
- 嵌入式系统 嵌入式系统是一种嵌入在机械或电气系统中的计算机系统,具有特定功能和实时计算性能。嵌入式系统常用于高效控制各类常见设备。嵌入式系统通常是包含数字硬件和机械组件的完整设备,例如汽车的防抱死制动系统。现代嵌入式系统通常基于微控制器(如集成内存和/或外围接口的中央处理单元),但在更复杂系统中,使用外部内存芯片和外围接口电路的通用微处理器也较为常见。
- 嵌入式Linux(英文:Embedded Linux)是基于Linux内核并设计用于嵌入式设备的嵌入式操作系统的一类通用名称。它本质上与计算机上运行的Linux系统相同,尽管经过了一些功能定制,但本质上是相同的,主要使用Linux内核中的任务调度、内存管理、硬件抽象等功能。
- RTOS 实时操作系统(RTOS),也称为实时操作系统,按顺序运行,管理系统资源,并为应用程序开发提供一致的基础。与通用操作系统相比,实时操作系统的最大特点是“实时性”。如果一个任务需要执行,实时操作系统会立即(在短时间内)执行该任务,而不会有长时间的延迟。这一特性确保了单个任务的及时执行。
- 非实时、软实时、硬实时
首先需要理解什么是实时。实时不考虑速度、性能或吞吐量,而是考虑确定性。也就是说,当事件发生时,可以保证在一定时间内被处理。只要满足这一要求,就可以成为硬实时。例如:
操作系统1:当发生中断时,可保证在1秒内到达此处,则为硬实时系统,尽管响应时间较长,但确定性高;
操作系统2:当发生中断时,几乎总能在1毫秒内完成,因此不是硬实时系统,尽管响应时间较短,但不确定性高。
我还看到一些文章认为应取消“软实时”这一模糊术语,要么是实时系统,要么是非实时系统!
操作系统包含许多功能:任务调度、内存管理、文件管理等,其中最核心的是任务调度,这也是非实时系统、软实时系统与硬实时系统的最大区别。
换言之,衡量实时性能的指标包括:
- 中断延迟:从外部事件触发中断到中断处理程序执行第一条指令之间的时间间隔;
- 任务抢占延迟:高优先级任务准备就绪并从正在执行的低优先级任务中抢占CPU资源所需的时间。
不同的操作系统具有不同的任务调度机制,调度策略与实际使用场景相关。因此,没有好坏之分,最适合的才是最好的!
例如,在我们的桌面系统中,需要考虑多任务处理和并发性,这要求同时执行多个程序。用户并不关心哪个程序运行较慢,甚至可能不会察觉。但对于导弹控制系统,当外部传感器输入信号触发事件时,必须立即进行相应处理,否则一毫秒的延迟都可能造成巨大差异!
Why spacecraft, missiles like to use single chip, rather than embedded system?