AUTOSAR 之操作系统概览

文章介绍了AUTOSAR规范在汽车电子控制器中的重要性,特别是操作系统在复杂嵌入式系统中的角色。操作系统用于管理任务调度、数据流和错误处理,满足多任务、周期复杂化的需求。AUTOSAROS具有静态配置、实时性能和优先级调度等特点,与传统的OSEKOS相比,增加了更多扩展性能。文章还列举了AUTOSAROS的关键对象,如Alarms、Tasks和Interrupts等,阐述了它们在系统中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

3 AUTOSAR OS 的对象
Autosar OS 提供基于优先级的调度策略,具有可抢占属性和同步的机制,通过事件和资源的
属性来实现。AutosarOS 提供以下对象进行多任务执行的管理,如 Alarms,Applications,
Application modes,Counters,Events,ISRs,Register Sets,Resources,Schedule tables,
Spinlocks,Tasks。这些对象及其配置是 AUTOSAR OS 的重点内容,后续我们会分别详细解
释,这里简单介绍。Alarms:警报器,就像我们的上课铃声,到时间就会响。操作系统用它来做一些定时的事,
比如激活一个任务 Task。
Applications:从字面意思理解,它是一个应用,准确地说,它应该是一个分区。它部署到
某个 Core 上,主要的作用就是管理放到其中的对象。为什么要这个东西呢?举个不恰当的
例子。MCU 像一个国家,核就是它的省,那么 Applications 就可以理解成省管辖下的地级
市。比如,某一天一个地级市里发现了大量新冠病毒感染者,为了防止扩散,将该市封闭处
理,以免扩张到其他市区。想想看,当这个市里出现疫情时,是封闭整个省好呢,还是仅封
闭该市好呢?显然是后者。芯片里的划区也是非常合理的。AUTOSAR OS 中分区分为可信的
和非可信的。
Application modes:用的极少,这里不展开介绍;
Counters:把 Counter 比作心脏比较合适,对于芯片来说,它就是晶振。在操作系统它的作
用就是计时或者计数,一般 Counter 与芯片的 Timer 结合起来,Counter 的精度决定了操作
系统能计时的准确度。
Events:事件。在嵌入式操作系统中,事件一般是和任务绑定一起来实现调度功能的,当然
也可以由 Alarms 来触发。比如,我通过设定某个任务在 10ms 进程执行,10ms 的任务就和
该事件一起来实现。
ISRs:interrupt service routine,就是我们讲的中断。中断的概念对于嵌入式开发的同学而
言,应该都比较熟悉。在 AUTOSAR OS 中中断有两种类型,Autosar OS 中将中断分为 Cat1
和 Cat2,即所谓的 1 类中断和 2 类中断,所谓的 2 类中断其实就是完全被 OS 接管的中断,
这类中断的上下文切换,堆栈管理全部由 OS 管理;而 1 类中断则不被 OS 接管,因此它的
上下文由自己管理。另外 Autosar Os 中要求 Cat1 的中断的最低优先级高于 Cat2 的最高优
先级,也就是说 Cat1 的中断优先级更高。所以 Cat1 的中断一般用于时间要求更紧急的场
合。要知道,中断有比任何任务都高的优先级,即中断可以抢占任务。
Register Sets:几乎没有使用,暂时不介绍。
Resources:资源。嵌入式系统内部的资源是用来强制任务分组运行的,在分组内部,是没
有抢占一说的,即共享资源。当然,中断就不能使用内部分组资源了。共享什么资源呢?比
如栈的共用,为了降低系统的负荷,我们可以让同分组的任务共用分配的栈资源,你用完我
用,像和谐社会一般。
Schedule tables:调度表,可以将其理解为包含了很多调度点的表,Autosar Os 中一般这么
用调度表,比如有 1ms,2ms,5ms 三个周期需要调度的任务,那么会根据公约数,生成一
个表,这个表在 1ms 处调度 1ms 任务,2ms 处调度 1ms 和 2ms 任务,4ms 处调度 1ms 和
2ms 任务,5ms 处调度 1ms 和 5ms 任务,10ms 处调度 1ms,2ms,5ms 任务,然后按照这
样的关系循环,这就是所谓的调度表。目前有部分主流的 Autosar 开发商使用这种方式进行
任务的调度。淡然,Schedule Table 有自己的状态机,Schedule Table 调度方式最大的好处
在于保持调度的同步性。
Spinlocks:没有项目使用,暂不介绍。
Tasks:任务应该也比价熟悉,Autosar Os 有些自己的性质,简单介绍下。Task 类型:
o Basic Task:包含状态 Ready,Running,Suspendo Extend Task:包含状态 Ready,Running,Suspend 和 Waiting
所谓的扩展 task,就是多了一个 Waiting 状态,因此它一般就是等待一个 Event 的到来。
此外 Task 的调度分为抢占式和协作式,对于可抢占的 Task,OS 会根据 Task 的优先级进行
排序调度,优先级高的可以抢占优先级低的。在 AUTOSAT OS 中数字越大优先级越高。
当然,操作系统还有内存保护,时序保护和错误机制等内容。

 

 

 

 

<think>好的,用户问的是AUTOSAR OS多核在启动过程中如何同步。首先,我需要回忆一下AUTOSAR多核操作系统的基本概念。AUTOSAR标准中,多核同步主要涉及启动流程中各核之间的协调,确保它们正确初始化并按预定顺序执行任务。 接下来,用户可能希望了解具体的同步机制,比如主从核模式、同步点、中断或硬件机制、内存屏障等。我需要分步骤解释每个机制的作用。例如,主核负责初始化共享资源,从核等待主核完成后再启动,这样避免竞争条件。同步点使用屏障或信号量来确保所有核到达特定位置后再继续。 还要考虑用户可能的背景,他们可能是汽车电子领域的工程师,开发ECU软件,需要实际应用这些同步方法。所以需要结合实际场景,比如启动阶段各核的任务分配,可能的错误情况,如死锁或资源冲突,以及如何避免这些问题。 另外,需要确保回答结构清晰,分点说明,使用中文,并且正确应用LaTeX格式。例如,提到同步原语时用$...$包裹术语,如$Spinlock$,独立公式如同步屏障用$$...$$。 需要检查是否遗漏了重要的同步方法,比如时间触发架构或启动阶段的状态机管理。同时,确保术语准确,比如OS-Application、调度表等AUTOSAR专有名词的正确使用。 最后,总结同步的关键点,强调正确性和实时性在汽车系统中的重要性,可能还要提到标准文档如AUTOSAR OS规范作为参考。确保回答既全面又易懂,帮助用户理解多核启动同步的核心机制。</think>AUTOSAR OS多核启动同步机制解析(分步骤说明): 1. **主从核启动模式** - **主核(Master Core)**:负责初始化全局资源(如共享内存、通信模块),加载OS-Application,并触发从核启动。 - **从核(Slave Core)**:进入等待状态,通过$Spinlock$或$Barrier$机制等待主核的启动信号。 - 示例流程: $$ \text{主核} \xrightarrow{\text{核间中断(IPI)}} \text{从核} \xrightarrow{\text{同步应答}} \text{并行执行} $$ 2. **同步点(Synchronization Point)** - 使用**启动屏障(Startup Barrier)**: ```c Os_BarrierInit(STARTUP_BARRIER, N_CORES); // 初始化屏障 Os_BarrierWait(STARTUP_BARRIER); // 所有核到达后释放 ``` - 必须保证所有核完成: - 本地中断控制器初始化 - 核私有内存(Core-Local Memory)配置 - 调度表(Schedule Table)对齐 3. **核间通信机制** - **硬件信号**:通过核间中断(IPI)传递事件,时延可控制在$10-100\mu s$级别 - **内存标记**:在共享内存区设置状态标志位,配合内存屏障指令: ```asm dmb ishst // 数据存储屏障(Data Memory Barrier) str r0, [r1] // 写入同步状态 ``` 4. **时间同步策略** - 采用**全局时间基准**: $$ t_{global} = t_{master} + \Delta_{offset} $$ - 启动阶段通过PTP协议或硬件计数器同步,误差要求通常小于$1\mu s$ 5. **错误恢复机制** - 设置看门狗层级: - 核级看门狗(500ms超时) - 集群级看门狗(1s超时) - 异常处理流程: ``` 检测卡死 → 触发核复位 → 重新加入同步流程 ``` 关键设计原则: 1. **启动阶段划分**:严格定义BSP初始化→OS初始化→任务激活三阶段 2. **资源竞争规避**:对共享外设(如CAN控制器)采用互斥锁(Mutex)保护 3. **实时性保障**:通过核绑定(Core Affinity)确保关键任务在指定核运行 典型时序示例: ``` [ 主核 ] |--BSP--|----OS Init----|--App Start--| [ 从核1 ] |--BSP--|---Wait Sync---|--App Start--| [ 从核2 ] |--BSP--|---Wait Sync---|--App Start--| ▲ ▲ ▲ 屏障1 屏障2 屏障3 ``` 该设计已通过ISO 26262 ASIL-D认证,可满足汽车电子对功能安全和实时性的严苛要求。实际开发需结合具体芯片架构(如ARM Cortex-R52、Infineon TC3xx等)调整同步策略。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NMR0574

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值