Autosar-Os是怎么运行的?(时间保护)

写在前面:
入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!!


1.功能概述

AUTOSAR OS 的四大可定制类型凸显了时间保护(Timing Protection)这一关键功能机制的重要性。作为实时操作系统,AUTOSAR OS 需要在预设时限内精确执行任务。然而,超时错误偶有发生,此时系统需采取有效的时间保护措施以预防此类情况。

Deadline Monitoring 是常见的时间保护手段。一旦 OS 检测到任务运行超时,它会触发相应的 Hook 函数以报告系统错误。然而,AUTOSAR OS 并未采用监控截止时间的方法来实现时间保护,因为这种方式往往无法精确识别错误的根源。

以任务 1 为例,即便其运行时间超过截止时间,也不一定意味着任务 1 本身存在错误。实际上,可能是在执行任务 1 之前,任务 2 频繁抢占资源或长时间阻塞资源访问,间接导致任务 1 超时。若仅因任务 1 超时而判断其为错误并停止,那么真正的罪魁祸首任务 2 则可能继续逍遥法外,这显然不合理,也无法有效保护 OS 中各任务的时间管理。

为了更好地说明这一点,我们可以设想一个操作系统,其中包含任务 A、B、C,每个任务都有明确的优先级、执行时间和截止时间,如下表所示:

假设所有任务均于时间 0 准备就绪,执行流程将严格遵循以下时序,确保所有任务均按时完成。

  • 任务 A 因最高优先级而首先执行。
  • 随后,任务 B 在 1 个 Tick 后启动,任务 C 则在 3 个 Tick 后开始。
  • 任务 C 执行 1 个 Tick 后被任务 A 中断,待任务 A 完成后,任务 C 继续执行。
  • 至第 10 个 Tick,任务 C 完成,整个过程中无超时现象,且剩余 1 个 Tick 的空闲时间。

现考虑任务 A 与 B 出现行为异常的情形。异常状态如下图所示:

  • 任务 A 的第二个周期与任务 B 的第一个周期均出现运行时间延长的情况,但均在截止时间之内完成。
  • 任务 B 在第二个周期提前启动,同样未超过其截止时间。
  • 尽管任务 C 按照正常时序执行,但由于任务 A 与任务 B 的异常行为,导致任务 C 的执行超时,从而引发超时错误。

因此,从上述案例的分析中,我们可以得出以下结论:在固定优先级抢占式操作系统,如 AUTOSAR OS 中,任务或中断服务例程(ISR)是否能够满足其截止日期,主要取决于三大关键因素:

  1. 任务/ISR 的执行时间: 这包括任务从获得 CPU 执行权到主动放弃 CPU 的执行周期时间,以及第二类 ISR 从开始到结束的总运行时间。

  2. 任务/ISR 因低优先级任务/ISR 锁定共享资源或禁用中断而遭受的阻塞时间: 这涉及任务或 ISR 持有共享资源的时间(从 GetResource 调用到 ReleaseResource 调用的时间),操作系统中断被任务/ISR 挂起的时间(OSInterrupts 关闭到打开的时间),以及任务/ISR 暂停/禁用所有中断的持续时间(AllInterrupts 关闭到打开的时间)。

  3. 任务/ISR 的到达间隔率: 这指的是任务从连续两次获得 CPU 执行权之间的间隔时间,包括任务从 SUSPENDED 状态转换到 READY 状态的时间,以及从 WAITING 状态转换到 READY 状态的时间。对于第二类 ISR,这还包括其连续两次执行之间的间隔时间。

针对上述三大关键因素,AUTOSAR OS 采用了以下三种时间保护机制:

  1. 执行时间保护: 确保任务或第二类 ISR 的执行时间在静态配置的上限之内,称为执行预算。这主要保护任务的实际执行时间和第二类 ISR 的完整运行周期。

  2. 锁定时间保护: 确保任务或 ISR 锁定共享资源或禁用中断的时间不超过静态配置的上限,称为锁定预算。这主要涉及对共享资源持有时间、操作系统中断挂起时间以及所有中断禁用时间的监控。

  3. 到达间隔时间保护: 保证任务或第二类 ISR 到达间隔时间在静态配置的下限之上,称为时间帧。这确保了任务从 READY 状态转换的间隔时间以及第二类 ISR 的执行间隔符合预设要求。

下图显示了执行时间保护和到达间隔时间保护如何与 AUTOSAR OS 的任务状态转换模型进行交互。

特别的,值得注意的是 AUTOSAR OS 的时间保护机制具备以下基本特性:

  1. 任务与二类中断的专用性: 时间保护机制仅适用于任务和第二类中断,而不适用于第一类中断。这是因为在 AUTOSAR OS 中,第一类中断通常被设计为异步事件处理,其执行时间通常较短且难以预测,因此不适用于时间保护。

  2. OS 启动先决条件: 在操作系统(OS)未启动之前,时间保护机制将不会生效。这是因为时间保护机制依赖于 OS 提供的服务和资源,如任务调度、中断管理等,而这些服务在 OS 未启动前是不可用的。

  3. 信任级别的要求: 在 trusted OS-Applications 场景中,所有的时间信息都必须准确无误,否则系统可能会在运行时发生失败。这是因为信任级别的应用通常对实时性和可靠性有更高的要求,任何时间上的误差都可能导致系统行为异常。然而,对于 non-trusted OS Applications,时间保护机制可以作为加强可执行对象之间定时界限的一个手段,以提高系统的稳定性和可靠性。

  4. 中断禁用限制: DisableAllInterrupts 和 SuspendAllInterrupts 等相关接口并不能关闭时间保护定时器中断。这是因为时间保护定时器中断是确保系统实时性和任务截止日期的重要机制,如果允许这些接口关闭时间保护定时器中断,将会破坏时间保护的完整性和有效性。因此,AUTOSAR OS 设计规定这些接口不得影响时间保护定时器中断的正常工作。

关于时间保护机制在检测到时间异常后的具体处理细节,AUTOSAR_SWS_OS 7.7.2.2 Requirements 规范中进行了明确的规定。当时间保护机制检测到任何与时间相关的异常时,会调用 ProtectionHook 函数,并传递相应的错误码,以便应用程序或系统能够采取适当的措施进行响应。

  • E_OS_PROTECTION_ARRIVAL:当触发到达间隔时间保护时,意味着任务或 ISR 的到达间隔时间违反了静态配置的下限(时间帧)。这种情况下,ProtectionHook 函数将收到 E_OS_PROTECTION_ARRIVAL 错误码。这通常表明系统调度或任务管理存在问题,可能需要重新评估任务的时间需求或调度策略。

  • E_OS_PROTECTION_TIME:当触发执行时间保护或锁定时间保护时,意味着任务或 ISR 的执行时间或锁定时间超过了静态配置的上限(执行预算或锁定预算)。在这种情况下,ProtectionHook 函数将收到 E_OS_PROTECTION_TIME 错误码。这通常表明存在代码效率问题、资源争用或优先级配置不当等问题,需要进行性能调优或资源分配调整。

  • E_OS_PROTECTION_LOCKED:当触发锁定时间保护时,意味着任务或 ISR 因锁定共享资源或禁用中断而遭受的阻塞时间超过了静态配置的上限。此时,ProtectionHook 函数将接收到 E_OS_PROTECTION_LOCKED 错误码。这通常表明资源管理或中断控制存在问题,可能需要优化资源访问方式、减少资源争用或调整中断处理策略。

ProtectionHook 函数的具体实现取决于应用程序或系统的需求。在接收到这些错误码后,它可以用于记录错误信息、触发警报、执行恢复操作或采取其他适当的措施来应对时间异常。

2.硬件实现

以英飞凌芯片为例:

TriCore 架构的时间保护定时器具有以下功能:

  • 单调递减: 时间保护定时器以 CPU 主频的频率单调递减。这意味着定时器从写入的非零值开始,以固定的时钟周期逐渐递减至零。

  • 启动与关闭: 通过写入非零值来启动定时器,而写入零值则关闭定时器。这种机制允许软件精确地控制何时开始和停止时间监控。

  • 异常陷阱触发: 当定时器到期(即递减至零)时,会触发一个异常陷阱(Class-4Tin-7)。这是一个硬件级别的中断,用于通知软件有一个时间保护事件发生了。重要的是,这个异常陷阱是不能通过 DisableAllInterrupts/SuspendAllInterrupts 等接口关闭的,因为它是由硬件直接管理和触发的。

  • 多核支持: 每个核都配备了独立的时间保护定时器。以 TC397 为例,它有 6 个核,每个核有 3 个独立的时间保护定时器。这意味着总共有 6 * 3 = 18 个时间保护定时器可供使用。这种设计允许每个任务或第二类中断服务例程(ISR)在不同的核上运行,并独立地受到时间保护的监控。

另外,TriCore 架构还提供了一个 CPU_CCNT 的寄存器,该寄存器在手册Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN中的 12.11 Performance Counter Registers 章节可以查阅到,该寄存器会记录当前的 CPU 时钟周期,这个寄存器非常适合用来进行间隔时间保护。

3.功能实现

3.1Scalability Class

Os-OS配置项中的Scalability Class选择SC2或者SC4。

Autosar OS可分为四个等级:SC1~SC4)(SC: Scalability Class,可伸缩的类型 )。各等级支持的功能如下:

3.2Timming Protection

OsTaskAllInterruptLockBudget :一个任务在其执行期间可以锁定所有中断的最大时间(通过suspend endallinterrupts()或DisableAllInterrupts()(以秒为单位)

TaskExecutionBudget:一个任务最大允许执行时间

TaskOsInterruptLockBudget:一个任务运行锁定共享资源或禁用中断的时间的最大时间(通过suspend endosinterrupts())(以秒为单位)。

TaskTimeFrame:连续Task之间的最小到达时间。

<think>好的,我现在需要回答用户关于“AUTOSAROS”的问题。用户之前已经问过堆栈未对齐的问题,现在转向AUTOSAR的操作系统,可能需要了解其基本概念、特点以及在汽车电子中的应用。 首先,我要确认自己对AUTOSAR OS的理解。AUTOSAR(AUTomotive Open System ARchitecture)是一个汽车行业的标准,旨在提供统一的软件架构,促进汽车电子系统的开发。其中的OS属于实时操作系统(RTOS),专为汽车ECU设计,符合OSEK/VDX标准,但又有扩展。 接下来,我需要组织回答的结构。用户可能需要知道AUTOSAR OS的定义、核心功能、特点、与OSEK的关系、应用场景以及优势。此外,可能需要比较传统OSEK OSAUTOSAR OS的区别,或者提到合规性认证如ISO 26262。 需要确保内容准确,比如AUTOSAR OS的调度机制(固定优先级、可抢占)、内存保护、时序约束、可扩展性等。可能还要提到多核支持,因为现代ECU多核化是趋势。 要注意避免技术错误,例如AUTOSAR OS分为SC(标准)和OSEX(扩展),后者支持更复杂功能如多核。此外,AUTOSAR OS的配置通过XML文件,使用工具链生成代码,这也是其特点之一。 用户可能对分层结构、可移植性、静态配置等概念感兴趣。需要解释这些术语,并说明它们如何适应汽车行业的高可靠性和实时性要求。 最后,总结AUTOSAR OS的作用,强调标准化带来的好处,如降低开发成本,提高软件复用性,符合功能安全标准等。确保回答清晰,层次分明,适合不同背景的读者理解。</think>**AUTOSAR OS** 是 **AUTOSAR汽车开放系统架构)** 标准中定义的一种实时操作系统(RTOS),专为汽车电子控制单元(ECU)设计。它是基于 **OSEK/VDX OS** 标准的扩展,针对汽车嵌入式系统的实时性、安全性和可靠性需求进行了优化。以下是其核心内容: --- ### **1. 基础特性** - **实时性** AUTOSAR OS 是硬实时操作系统,保证任务在严格的时间约束内完成,适用于发动机控制、制动系统等对时序敏感的场景。 - **静态配置** 系统资源(任务、中断、调度策略等)在编译时静态配置,减少运行时动态分配的不确定性,提高系统可靠性。 - **标准化接口** 提供统一的API(如启动任务、激活中断、同步机制),确保不同ECU间的软件组件可移植。 --- ### **2. 核心功能** - **任务管理** - 支持 **基本任务(Basic Task)** 和 **扩展任务(Extended Task)**: - 基本任务:不可阻塞,适用于简单逻辑; - 扩展任务:可等待事件或资源,支持复杂状态机。 - 优先级调度:固定优先级抢占式调度,确保高优先级任务及时响应。 - **中断管理** - 定义两类中断: - **Category 1 中断**:短时不可阻塞的中断(如硬件信号); - **Category 2 中断**:允许调用操作系统API的中断(需谨慎设计)。 - **资源管理** - 通过 **资源锁(Resource)** 避免优先级反转(如优先级天花板协议)。 - **时间管理** - 提供计数器(Counter)和警报器(Alarm),用于周期性任务触发或超时检测。 --- ### **3. 扩展特性(AUTOSAR OS vs. OSEK OS)** - **内存保护(Memory Protection)** 支持分区间隔离(如应用与底层驱动隔离),符合ISO 26262功能安全要求。 - **多核支持(Multi-Core)** - 在多核ECU中协调任务调度、核间通信(Spinlocks、消息队列)和资源共享。 - 定义 **OS-Application** 概念,将任务分配到不同核或安全域。 - **时序监控(Timing Protection)** - 检测任务执行超时、死锁或资源占用超限,防止系统级故障。 - **可扩展性(Scalability)** - 提供 **SC(Standard Compliance)** 和 **OSEX(Extended OS)** 两种模式: - SC:兼容OSEK OS,适用于简单ECU; - OSEX:支持多核、内存保护等高级功能。 --- ### **4. 典型应用场景** - **动力总成系统**(如发动机控制、变速箱管理) - **底盘控制**(如ABS、ESP) - **高级驾驶辅助系统(ADAS)**(如自动紧急制动AEB) - **车载信息娱乐(IVI)**(需结合通用OS如Linux使用) --- ### **5. 开发流程** - **基于配置的代码生成** 使用工具链(如Vector DaVinci、ETAS ISOLAR)通过XML配置文件(.os)定义任务、中断和资源,自动生成OS代码。 - **功能安全合规** 需满足ISO 26262 ASIL等级(如ASIL-D),通过静态分析、时序验证等确保可靠性。 --- ### **6. 优势与挑战** - **优势** - **标准化**:统一汽车软件架构,降低开发成本; - **高可靠性**:静态配置与保护机制避免运行时错误; - **可移植性**:不同供应商的ECU软件可复用。 - **挑战** - 学习曲线陡峭(需掌握AUTOSAR方法论和工具链); - 资源开销较大(静态配置可能导致内存占用高)。 --- ### **示例代码(伪代码)** ```c TASK(Task_EngineControl) { // 读取传感器数据 SensorData data = ReadSensor(); // 计算控制指令 ControlSignal signal = CalculateControl(data); // 发送指令到执行器 ActuatorWrite(signal); } ALARM(Alarm_10ms) { // 每10ms激活一次任务 ActivateTask(Task_EngineControl); } ``` --- **总结**:AUTOSAR OS汽车电子领域的“幕后指挥官”,通过严格的实时调度、资源隔离和安全机制,确保ECU在复杂环境中可靠运行。其标准化设计是汽车软件从“分散开发”走向“平台化”的关键支撑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值