汽车电子控制器中目前基本遵循AUTOSAR规范,而其中操作系统作为BSW的重头戏,始终让学习AUTOSAR的同学望而生畏,进而望而却步。所以,今天Demu整理下基于AUTOSAR规范的操作系统知识,方便大家学习,以供参考。
现在嵌入式系统纷繁复杂,这点毋庸置疑,但是为什么需要操作系统呢?有没有仔细思考过。其实在早期的嵌入式系统中,是没有操作系统概念的。相信做嵌入式开发的同学都能理解,在main()函数中,写个while循环,再加个定时器,按照分时间片的方式,定时执行代码,就可以完成简单的调度。
-
任务多样化; -
周期复杂化;
-
分层调用嵌套;
-
多核系统引入;
举个例子。比如,我们有个三核系统,其中core0负责应用功能ASW,core1负责基础功能BSW,core2负责系统监控、功能安全和诊断等。如何在功能运行时,满足其正常任务的调度,同时系统代码指令和监控等也同步呢?在main()函数里,我们通过循环语句加定时器再试试看,估计要“难于上青天”了吧。
所以,就需要一个叫做操作系统的东西出现。它管理任务和事件的调度、不同任务之间的数据流,并提供监视和错误处理功能。操作系统为实时应用提供所有基本服务,包括中断处理、调度、系统时间和时钟同步、本地消息处理,以及错误检测机制。
-
静态配置
-
推断系统的实时性能
-
提供基于优先级的调度策略
-
运行时提供保护功能(内存、定时等)
-
无需外部资源,可嵌入低端控制器
所以,Autosar OS 和常见的OS(如linux系统OS)具有以下的区别:
-
在运行时不会动态创建新任务;
-
属于预编译配置变体,必须在编译之前定义所有任务;
-
操作系统没有动态内存管理,也没有用于手动控制任务的shell。
在AUTOSAR OS提出之前,在汽车电子领域其操作系统已经经历了两个阶段,即non-OSEK OS和OSEK OS。
当然,现在处于的第三个阶段Autosar OS,是与OSEK兼容的操作系统,但是具有多个扩展性能。例如可扩展功能:调度表,OS applications,内存保护和时序保护。OSEK OS 特别提供了以下特性支持AUTOSAR:
-
基于优先级调度
-
处理中断的功能
-
中断高于任务的优先级
-
防止错误使用OS 服务的保护措施
-
StartOS和StartupHook 启动接口
-
ShutdownOS和ShutdownHook 关闭接口
具体的OS的可扩展级别分四级:
SC1 | OSEK OS +计划时间表 |
SC2 | SC1 +时序保护 |
SC3 | SC1 +内存保护 |
SC4 | SC1+SC2+SC3 |

2 AUTOSAR OS的对象
-
Basic Task:包含状态Ready,Running,Suspend
-
Extend Task:包含状态Ready,Running,Suspend和Waiting
所谓的扩展task,就是多了一个Waiting状态,因此它一般就是等待一个Event的到来。
此外Task的调度分为抢占式和协作式,对于可抢占的Task,OS会根据Task的优先级进行排序调度,优先级高的可以抢占优先级低的。在AUTOSAT OS中数字越大优先级越高。
当然,操作系统还有内存保护,时序保护和错误机制等内容,今天概览性地介绍这些,后续有机会再分别详细阐述。
--- 往期推荐 ---
作者简介:
Demu,传统汽车电控向智能驾驶转变的汽车人。从事发动机控制器系统工程师和软件工程师多年,有丰富的ECU系统和软件设计经验。欢迎大家一起留言交流,共同进步。

点击“在看”是莫大的鼓励