操作系统需求(Requirements on Operating System)

📄 文档 ID:008 🏷 类型:SRS(软件需求规范) 📅 版本:AUTOSAR CP 4.4.0 📑 页数:39 📌 状态:Final 🔗 原 PDF:AUTOSAR_SRS_OS.pdf

目录

1 文档范围(Scope of this document)

本文档的目标是定义 AUTOSAR 操作系统的高层级需求。

2 如何阅读本文档(How to Read this Document)

2.1 使用的约定(Conventions to be used)

本文档中的关键字 MUSTMUST NOTREQUIREDSHALLSHALL NOTSHOULDSHOULD NOTRECOMMENDEDMAYOPTIONAL 应按以下方式解释:

不包含特定选项的实现应当准备好与包含该选项的另一实现互操作(尽管可能功能减少)。同样,包含特定选项的实现应当准备好与不包含该选项的另一实现互操作(当然,该选项提供的功能除外)。

2.2 缩略语与缩写(Acronyms and abbreviations)

缩写说明
APIApplication Programming Interface(应用程序编程接口)
BSWBasic Software(基础软件)
COMCommunications(通信)
ECUElectronic Control Unit(电子控制单元)
HWHardware(硬件)
ISRInterrupt Service Routine(中断服务例程)
MCMulti-Core(多核)
MCUMicrocontroller Unit(微控制器单元)
MPUMemory Protection Unit(内存保护单元)
NMNetwork Management(网络管理)
OILOSEK Implementation Language(OSEK 实现语言)
OSOperating System(操作系统)
OSEK/VDXOffene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug(汽车电子开放系统及其接口)
SCSingle-Core(单核)
SWSoftware(软件)
SWCSoftware Component(软件组件)

3 需求指南(Requirements Guidelines)

应引用现有规范(以单个需求形式)。与这些规范的差异被指定为附加需求。

3.1 需求质量(Requirements quality)

所有需求应具有以下属性:

3.2 需求标识(Requirements identification)

每个需求都有以 BSW("Basic Software",基础软件)作为前缀的唯一标识符。对于任何评审注释、意见或问题,请引用此唯一 ID 而非章节或页码!

3.3 需求状态(Requirements status)

此外,每个需求包含状态信息。状态可以是以下之一:

状态说明
Open需求已由 WP 成员创建但尚未在 WP 会议上讨论。
Proposed需求已在 WP 会议上评审。它被接受,但仍有一些未决问题。
Approved需求已被所有 WP 参与者评审并批准。
Conflict需求已被评审,但存在冲突(例如与其他需求的矛盾),这些问题尚未解决。
Rejected需求已被评审并被拒绝。

因此,所有完成的需求都处于"Approved"状态。

4 需求规范(Requirement Specification)

4.1 可追溯性(Traceability)

特性号特性名称
RS_BRF_01200AUTOSAR OS 应当向后兼容 OSEK OS
RS_BRF_01232AUTOSAR OS 应当支持应用软件的隔离与保护
RS_BRF_01096AUTOSAR 应当支持 ECU 的启动与关闭
RS_BRF_01208AUTOSAR OS 应当支持定期启动任务列表
RS_BRF_01216AUTOSAR OS 应当支持将 ScheduleTable 与外部时间源同步
RS_BRF_01240AUTOSAR OS 应当支持 OSApplications 之间的通信
RS_BRF_02008AUTOSAR 应当提供机制保护系统免受未授权读访问
RS_BRF_01224AUTOSAR OS 应当支持时序保护
RS_BRF_01248AUTOSAR OS 应当支持终止和重启 OSApplications
RS_BRF_01256AUTOSAR OS 应当提供关闭核的支持
RS_BRF_01264AUTOSAR OS 应当支持多核无死锁互斥
RS_BRF_01184AUTOSAR 应当支持不同的降级方法
RS_BRF_00206AUTOSAR 应当支持多核 MCU

4.2 实时操作系统(Real-Time Operating System)

4.2.1 功能描述(Functional description)

嵌入式汽车 ECU 中的实时操作系统构成软件动态行为的基础。它管理任务和事件的调度、不同任务之间的数据流,并提供监控和错误处理功能。

然而,在汽车系统中,对操作系统的需求高度依赖于具体域。例如,在车身、动力总成和底盘域中,重点在于任务和报警的高效调度、共享资源的处理和截止时间监控。所使用的操作系统必须在运行时高效,内存占用小。

在多媒体和远程信息处理应用中,操作系统提供的功能集以及可用计算资源也有显著不同。除纯任务管理外,还包含复杂数据处理(例如流、闪存文件系统等)、内存管理,甚至图形用户界面。

汽车 OS 的经典域仅涵盖调度和同步的核心功能。在 AUTOSAR 架构中,上述附加功能不在 OS 的范围内。这些功能由其他 AUTOSAR 基础软件模块涵盖(例如 COM 提供通信抽象)。在 AUTOSAR 架构约束下,不可能将其他 OS(例如 QNX、VxWorks 和 Windows CE 等)的功能集集成到单一的 OS/通信/驱动结构中。因此,AUTOSAR OS 应当仅考虑核心功能。

4.2.2 核心 OS 需求(Core Operating System requirements)

[SRS_Os_00097] OS 应当提供与 OSEK OS API 向后兼容的 API。

类型Valid
描述OS 应当提供与 OSEK OS API 向后兼容的 API。有效需求应作为 OSEK OS 所提供功能的扩展进行集成。
理由保证迁移进度
用例现有驱动软件可被重用,因为其与 OS 的接口未改变。
依赖--
支持材料[STD_OSEK_OS]
满足RS_BRF_01200

[SRS_Os_11001] OS 应当提供允许故障隔离和故障恢复能力的分区。

类型Valid
描述OS 应当提供分区(错误包容区域,Fault Containment Regions),允许故障隔离和故障恢复能力。
理由AUTOSAR 允许多个逻辑应用共存于同一处理器。OSEK OS 现有规范不知道多个逻辑应用驻留在单个处理器上。因此没有用于错误包容的机制。一个应用中的故障可能传播到驻留在同一处理器上的另一个应用。例如,一个软件组件或基础软件模块中的错误可能导致驻留在同一处理器上的另一个软件组件和/或基础软件模块检测到故障,而它们与故障部分的唯一关系是它们驻留在同一处理器上。
OSEK OS 具有以下 OS 对象操作规则:
  • 任务和 ISR 是由 OS 管理的可执行对象。
  • 标准资源只能由在配置时声明的任务/ISR 操作。
  • 事件可由任何任务或 ISR 设置。事件只能由在配置时声明的任务等待或清除。
  • 报警可由任何任务或 ISR 操作。
在 AUTOSAR 中:
  • 将这个通用方案扩展到基于表的调度(SRS_Os_00098)意味着 ScheduleTable 可由任何任务或 ISR 操作。
这种松散的 OS 对象(任务、ISR、报警、事件、调度表、资源)所有权使得在运行时容纳某些类别的故障变得困难,例如一个软件组件错误地取消属于另一个软件组件的报警。因此,需要定义 OS 对象与软件组件或基础软件模块之间的关系,以便在运行时实现错误包容。
OS 应当提供一个更高级别的抽象,允许用户对现有 OS 对象(任务、ISR 等)进行分组,以便组中的对象只能由同一组中的对象操作。这样的组称为OS-Application
此外,定义 OS-Application 允许提供内存保护域(见 SRS_Os_11005)。
用例在故障条件下,故障处理机制需要停止与软件组件关联的所有对象的执行。
依赖--
支持材料--
满足RS_BRF_01232RS_BRF_01234

[SRS_Os_11018] OS 应当提供中断屏蔽功能。

类型Valid
描述OS 应当在调用 StartOS() 之前和 ShutdownOS() 调用之后提供中断屏蔽功能。这些功能已在 OSEK OS 中定义,现在用途已扩展。
理由SPAL 需要。
用例SPAL 驱动需要在正常 OS 操作之前、期间和之后操作中断屏蔽。
依赖C 初始化必须在这些功能可用之前执行。
支持材料
满足RS_BRF_01096

[SRS_Os_11019] AUTOSAR OS 生成工具应当创建中断向量表。

类型Valid
描述AUTOSAR OS 生成工具应当创建中断向量表。
理由每个 ECU 都需要有一个中断向量表。操作系统配置已包含系统使用的所有中断的详细信息。AUTOSAR OS 生成工具应是开发过程中生成中断向量表的最终工具。
用例其他模块的集成。
依赖--
支持材料--
满足()

4.3 静态定义调度(Statically Defined Scheduling)

4.3.1 功能概述

在许多应用中,必须静态定义彼此相关的一组任务的激活。这可能是为了保证数据流设计中的数据一致性、与时间触发网络同步、保证正确的运行时分段等。

时间触发的操作系统通常被提议作为此问题的解决方案。然而,时间只是一个事件,所以任何事件触发的 OS,包括 OSEK OS,都可以在汽车 ECU 中实现静态调度的实时软件调度器。

调度表的需求提供了一个 OSEK OS 对象,可以用与 OSEKtime 调度器表相同的方式操作。

4.3.2 需求

[SRS_Os_00098] 操作系统应当提供基于时间表的静态可配置调度表作为可选服务。

类型Valid
描述操作系统应当提供基于时间表的静态可配置调度表作为可选服务。
理由Standard Core 用户的需求。表基调度比由 OSEK 报警服务激活的任务更高效且更易于理解。
作为 OSEK OS 的扩展添加基于表的调度机制,使用户能够构建类似 OSEKtime 的调度器表,而无需引入堆栈式调度策略的不必要限制或额外的 OS 规范。
用例以静态定义的间隔时间同步释放多个任务。
依赖--
支持材料--
满足RS_BRF_01208

[SRS_Os_00099] 操作系统应当提供允许在不同调度表之间切换的机制。

类型Valid
描述操作系统应当提供允许在不同调度表之间切换的机制。
理由对于不同的应用状态(例如初始化、启动、预启动、正常运行、诊断、预睡眠、关闭),需要不同的调度表。
用例由 ECU 状态管理器控制的 ECU 模式
依赖SRS_OS_00098
支持材料--
满足RS_BRF_01208

[SRS_Os_11002] 操作系统应当提供将调度表的处理与全局系统时间基准同步的能力。

类型Valid
描述操作系统应当提供将调度表的处理与全局系统时间基准同步的能力。它应当支持立即(硬)同步和逐渐适配(平滑)同步。
理由一些分布式应用需要与全局时间基准同步。对于从 OSEKtime 迁移到 AUTOSAR OS 的用户,需要此类功能。
用例从 OSEKtime 调度器表迁移的用户可以在不引入额外 OS 规范的情况下,使用调度表复制类似功能。
依赖--
支持材料
满足RS_BRF_01216

4.4 监控设施(Monitoring Facilities)

4.4.1 功能概述

监控功能在执行的适当阶段检测错误,而不是错误发生时立即检测。因此,任何监控功能都是运行时故障的检测,而不是故障的预防。

4.4.2 需求

[SRS_Os_11003] 操作系统应当能够按可执行对象监控堆栈使用情况并检查堆栈溢出。

类型Valid
描述操作系统应当能够按可执行对象(任务/ISR)监控堆栈使用情况并检查堆栈溢出。
理由在某些硬件上将无法实现任何复杂的内存保护。当认为一些保护总比没有好时,堆栈监控提供了一种替代方案(但安全性较低)。
用例如果实现一个应用程序可能溢出的系统使用不支持真正内存保护的硬件,则堆栈监控是一个有用的替代方案。
依赖--
支持材料--
满足RS_BRF_01232

4.5 保护设施(Protection Facilities)

4.5.1 功能概述

AUTOSAR 概念要求多源的 OS-Application 共存于同一处理器上。为了防止这些 OS-Application 之间的意外交互,必须提供保护机制使其相互隔离。主要有两种使用场景:

  1. 对于安全关键系统,如果可以将各个 OS-Application 的安全论据集成为总体安全论据,则安全论据的开发将大大简化。只有当可以证明至少一个 OS-Application 中的故障不会传播超出其自身边界并导致另一个不相关 OS-Application 的故障时,这才是可行的。
  2. 只有当可以确保他们的软件不会因处理器范围的故障而被错误地归咎时,供应商才会对他们的软件组件和/或基础软件模块承担责任(和一些责任)。

这两种使用场景可以通过向 OSEK OS 添加保护机制来满足。以下章节概述了保护领域。

4.5.2 内存保护需求(Memory Protection requirements)

[SRS_Os_11005] 操作系统应当防止一个 OS-Application 修改其他 OS-Application 的内存。

类型Valid
描述操作系统应当提供按内存对 OS-Application 进行分区的能力,并防止一个 OS-Application 修改其他 OS-Application 的内存。
理由当多个 OS-Application(不同软件完整性级别)驻留在同一处理器上时,它们的内存可由任何代码全局写入。这意味着一个 OS-Application 的数据可能被另一个不相关的 OS-Application 破坏(即 OS-Application 之间存在故障传播)。例如,一个 OS-Application 的任务可能溢出其堆栈,导致不相关 OS-Application 的静态数据被破坏,从而导致其失败。
为了允许对不同完整性级别函数之间的充分独立进行推理,必须在运行时防止这种情况。
注意 SRS_Os_11003 不同:它仅检测故障,而不是防止内存访问错误产生故障。
用例--
依赖注意满足此需求意味着满足堆栈监控需求,因为如果堆栈受内存写访问控制限制,则不会发生堆栈溢出。
写访问保护需要适当的硬件支持。
支持材料
满足RS_BRF_01232

[SRS_Os_11006] 操作系统应当允许 OS-Application 内的任务和 ISR 交换数据。

类型Valid
描述操作系统应当允许 OS-Application 内的任务和 ISR 通过对共享内存的直接访问来交换数据。
理由出于运行时性能原因,使用共享内存交换数据是常见的(例如使用全局变量)。然而,在 AUTOSAR 中,多个 OS-Application 将共享一个处理器,因此通过共享内存进行的任何数据通信都会破坏内存保护方案。
因此,有必要为 OS-Application 提供以下能力:使用在应用内对任务和 ISR 全局可访问但对其他 OS-Application 不可访问的内存共享数据,即共享内存在 OS-Application 范围内本地化。
用例一个 OS-Application 实现通信,并使用 ISR 处理来自车辆网络的 CAN 帧的接收,但使用任务处理 CAN 帧的内容以减少 ISR 级别阻塞。
依赖--
支持材料[DOC_WP112_REQ],
满足RS_BRF_01240

[SRS_Os_11007] 操作系统应当允许 OS-Application 执行共享代码。

类型Valid
描述操作系统应当允许 OS-Application 执行共享代码。
理由如果代码不能共享,则对于许多软件组件/基础软件模块共有的任何一段软件,必须在软件构建中多次包含它。这有两个含义:
  1. 代码空间大幅增加
  2. 对软件维护引入问题,因为对逻辑共享代码的修改将必须对 ECU 构建中的代码的每个实例进行(单个更改已变为多个更改)
用例使用共享库。
依赖--
支持材料
满足RS_BRF_01240

[SRS_Os_11000] OS 可以提供支持以保护 OS-Application 的内存段免受所有其他 OS-Application 的读访问。

类型Valid
描述OS 可以提供支持以保护 OS-Application 的内存段免受所有其他 OS-Application 的读访问。
理由如果任务/ISR 可以从任何内存读取,则它可能对不正确的数据进行操作。这可能导致运行时故障。防止读访问提供了一种在故障发生时立即捕获它们的方法。
第二个问题是安全。虽然不预期同一处理器上的 OS-Application 之间存在任何安全问题,但读访问在需要时确实提供保护。
用例安全:保护密钥;调试支持
依赖--
支持材料--
满足RS_BRF_02008

4.5.3 时序保护需求(Timing Protection requirements)

[SRS_Os_11008] OS 应当不允许任何 OS-Application 中的时序故障传播。

类型Valid
描述OS 应当不允许任何 OS-Application 中的时序故障传播到驻留在同一处理器上的不同应用。时序故障定义为:
  • 超出指定的执行时间
  • 超出指定的到达率
理由当为系统中的每个任务/Category 2 ISR 指定这些参数时,可以确定每个任务/Category 2 ISR 是否始终满足其截止时间。
在运行任何固定优先级抢占式 OS(包括 OSEK OS)的 ECU 上,只能使用可调度性分析来保证时序正确性。这使用关于任务和中断的信息(它们运行的频率、运行时间、访问哪些资源、保持它们的时间),然后计算系统将满足其实时性能截止时间。
时序保护的范围是确保在运行时证明满足截止时间的 AUTOSAR 系统不会因应用(或其组成部分)的功能行为失败而违反分析中使用的模型。
严格执行实时性能分析的假设意味着两件重要的事情:
  1. 时序故障被早期检测,因此可以在软件生命周期的早期发现它。例如,在完整集成测试之前可以拒绝来自供应商的有缺陷的软件组件。因此,修复故障的成本得以降低。
  2. 时序故障不会传播。通过在故障发生时检测它,故障的影响被限制在发生故障的 OS-Application 中。因此消除了在错误的子系统(甚至在网络中的错误 ECU)中引起的实时故障的问题。
用例一个 OS-Application 中的对象执行时间过长,导致另一个 OS-Application 中的对象因此错过其截止时间。
依赖--
支持材料--
满足RS_BRF_01224

4.5.4 服务保护需求(Service Protection requirements)

OS 必须在运行时保持其自身完整性和其调度的 OS-Application 的完整性。

[SRS_Os_11009] 操作系统应当防止 OS 被任何系统服务调用所破坏。

类型Valid
描述操作系统应当防止 OS 被任何系统服务调用所破坏。
理由如果可能将 OS 置于未知状态或在运行时破坏 OS 数据结构,则会损坏驻留在同一处理器上的每个 OS-Application。这意味着:
  • 每个 OS 服务调用在所有情况下都必须有定义的行为;或
  • OS 不得允许从可能导致 OS 处于未定义状态的上下文进行服务调用。
这增加了 OS 本身的完整性。
用例避免从未定义的上下文中调用服务时出现未定义行为。
依赖在 OSEK OS 当前规范允许不保护 OS 的配置的情况下,AUTOSAR 配置必须确保这些配置不能被选择。
支持材料--
满足RS_BRF_01232

[SRS_Os_11010] 操作系统应当防止 OS-Application 修改不属于该 OS-Application 的 OS 对象。

类型Valid
描述操作系统应当防止 OS-Application 修改不属于该 OS-Application 的 OS 对象。
理由一个 OS-Application 可能在运行时操纵另一个 OS-Application 中的对象,导致其在其设计范围之外运行。保护 OS-Application 的完整性意味着一个 OS-Application 不能操纵属于另一个 OS-Application 的对象(例如通过 OS 服务调用),导致另一个 OS-Application 中的潜在故障,除非在配置时明确授予对对象的访问。这通过限制可能的故障源来增加追踪由 OS-Application 耦合引起的故障的能力。
用例取消激活另一个 OS-Application 中任务的报警
依赖在 OSEK OS 当前规范允许不保护 OS-Application 的配置的情况下,AUTOSAR 配置必须确保这些配置不能被选择。
支持材料--
满足RS_BRF_01232

[SRS_Os_11011] OS 应当保护自身免受 OS-Application 试图直接修改 OS 管理的控制寄存器。

类型Valid
描述OS 应当保护自身免受 OS-Application 试图直接修改 OS 管理的控制寄存器。
理由OS 必须防止 OS-Application 试图(直接或间接地)规避保护机制。通常这意味着应防止 OS-Application 访问可能正在使用的 MCU 状态寄存器和内存保护寄存器。
用例OS 使用处理器状态字来管理中断,并且该寄存器在运行时被恶意的 OS-Application 写入,破坏了 OS 的内部数据结构。
依赖目标硬件必须支持特权/非特权模式和 MPU 才能进行此保护。因此,此功能在那些不提供足够硬件支持的目标上不可用。
支持材料--
满足RS_BRF_01232

[SRS_Os_11012] OS 应当为其保护功能提供可扩展性。

类型Valid
描述OS 应当为其保护功能提供可扩展性。
理由充分利用处理器的硬件特性:关键保护特性可能在所有硬件上都不可用(例如,当处理器没有 MPU 时,某些类型的内存保护是不可能的),但这不应阻止用户使用可以支持的其他保护特性。
定制为特定用户需求:保护可能仅需要围绕某些应用(无法保证其运行时行为的应用),并且可以根据失败风险的评估选择性地应用保护。
用例在没有硬件内存保护的微控制器上实现符合 AUTOSAR 的 OS。
当使用可以静态保证在运行时不会发生保护违规的过程来设计 ECU 时,它不需要专门资源来检查违规。例如,如果静态分析最坏情况执行时间,则在运行时不需要时序保护。此外,由于分析显示触发代码执行的条件永远不会发生,代码是"死代码",应因其带来的潜在安全风险而被删除。
依赖--
支持材料--
满足RS_BRF_01232

4.5.5 保护错误(Protection Errors)

OS 必须能够识别何时发生了违反保护方案的错误,并且还必须提供可以采取行动来纠正故障的机制。然而,定义错误处理方案不是 OS 的任务。

[SRS_Os_11013] OS 应能够在运行时通知保护错误的发生。

类型Valid
描述OS 应能够在运行时通知保护错误的发生。
保护错误是任何内存访问违规、时序故障、对 OS 服务的未授权调用或软件陷阱(例如除以零、非法指令)。
理由如果在运行时通知保护错误,则提供了根据预定义的故障处理策略潜在地纠正或处理错误的范围。
用例应用程序需要提供某种运行时容错能力,该能力需要根据发生的错误的类型和/或数量采取行动以提高运行时可用性。
依赖--
支持材料--
满足RS_BRF_01232

[SRS_Os_11014] 在保护错误的情况下,OS 应提供在 OS、OS-Application 和 task/ISR 级别上的恢复操作。

类型Valid
描述在保护错误的情况下,OS 应提供在 OS、OS-Application 和 task/ISR 级别上的恢复操作。用户应能够选择该操作。
理由对错误发生的反应是系统整体故障模式的函数。例如,在某些情况下简单地终止故障任务将是适当的,而在其他情况下这可能比允许其继续执行对安全构成更大的风险。
因此,哪个操作是适当的决定取决于应用。
用例--
依赖--
支持材料--
满足RS_BRF_01248

4.6 定时器服务(Timer Services)

4.6.1 功能概述

定时器服务为应用和基础软件提供软件定时器。定时机制的核心已由 OSEK OS 中的计数器和报警提供。因此,以几乎相同的形式(定时器服务)引入新的机制是不必要的。

然而,为了提供通用软件定时,需要向 AUTOSAR OS 添加一些补充功能。这些在 SRS_Os_11020SRS_Os_11021 中描述。

4.6.2 功能需求

[SRS_Os_11020] OS 应提供用于触发软件计数器的标准接口。

类型Valid
描述OS 应提供用于触发软件计数器的标准接口。
理由OSEK OS 未定义计数器和报警之间的接口。这在不同供应商实现之间移植应用时会带来问题。在 AUTOSAR OS 中定义此接口消除了此可移植性问题。
用例--
依赖--
支持材料--
满足()

[SRS_Os_11021] OS 应提供从单个硬件计数器级联多个软件计数器的机制。

类型Valid
描述OS 应提供从单个硬件计数器级联多个软件计数器的机制。
理由如果需要不同分辨率的计数器,可能不可能(例如由于有限的硬件定时器)或不可取(例如由于中断干扰)使用多个硬件定时器源。在许多情况下,可以通过从较高分辨率计数器触发较低分辨率计数器来驱动较低分辨率软件计数器。
用例通过 1ms 定时器中断驱动 1ms 软件计数器,并从 1ms 计数器驱动 100ms 计数器。
依赖此需求意味着实现必须支持多于一个计数器(否则级联不可能)。AUTOSAR OS SWS 中提供了实现必须支持的计数器数量下限规范。
支持材料--
满足()

4.7 可扩展性(Scalability)

4.7.1 功能概述

对于特定应用,操作系统可以配置为仅包含该应用所需的服务。因此,操作系统的资源需求尽可能小。

核心 OS 的可扩展性由 OSEK OS 的符合类提供。关于 AUTOSAR OS 功能的可扩展性在此处定义。

4.7.2 功能需求

[SRS_Os_11016] OS 实现应提供由生成工具配置的可扩展性。

类型Valid
描述OS 应提供以下配置,至少具有指定的功能(可以包括附加功能):
Class1:OSEK OS + 计划调度
Class2:Class1 + 时序保护
Class3:Class1 + 内存保护
Class4:Class1 + Class2 + Class3
理由Class3 和 Class4 需要硬件支持。强制此功能将阻止 AUTOSAR OS 在许多常用的微控制器上实现。
实现可以选择不同的实现策略,如果某些功能不需要,则相应地提高性能。
用例--
依赖SRS_Os_11012
支持材料--
满足RS_BRF_01232

4.8 应用错误处理(Application Error Handling)

4.8.1 功能概述

一些影响应用程序的错误可能不会导致 OS 可检测到的保护违规,但仍会导致应用程序进入无法自行恢复并继续执行的状态。检测此类错误是应用程序本身的责任,但从此类错误中恢复需要与 OS 管理的控制线程进行交互。因此,OS 需要提供应用程序可以构建内部恢复机制的机制。

核心 OSEK OS 提供了一些支持:任务可以检测内部错误并自行终止;系统可以使用报警机制来编程超时、实现基于阈值的错误检测;可以检测内部错误并可以关闭系统等。但是,核心 OS 不提供为 OS-Application 定义的逻辑应用程序实现错误恢复的方法(见 SRS_Os_11001)。

本节介绍提供应用级和系统级 OS-Application 控制框架的需求。

4.8.2 功能需求

[SRS_Os_11022] OS 应提供终止 OS-Application 的机制。

类型Valid
描述OS 应提供一种机制,通过该机制可以将 OS-Application 作为单个单元终止,并释放由 OS-Application 持有且由 OS 管理的所有资源。
终止应防止 OS-Application 拥有的任何任务运行以及由 OS-Application 拥有的 ISR 处理的任何中断发生。
理由AUTOSAR 软件组件的错误处理要求 OS 可以终止 OS-Application。
当应用程序包含多个任务/ISR 时,除非关闭 OS 本身,否则在核心 OS 中不可能以原子方式停止应用程序。当存在不需要终止的其他 OS-Application 时,关闭是不切实际的。
因此,OS 必须提供一种机制来终止不影响其他 OS-Application 的 OS-Application。
用例响应于检测到内部错误,在 OS-Application 中进行错误恢复。
依赖SRS_Os_11023
支持材料--
满足RS_BRF_01248

[SRS_Os_11023] OS 应提供一种机制,通过该机制可以重新启动已终止的 OS-Application。

类型Valid
描述OS 应提供一种机制,通过该机制可以重新启动已终止的 OS-Application。
理由AUTOSAR 软件组件的错误处理要求 OS 可以以受控方式重新启动已终止的 OS-Application,以便可以重新初始化软件组件的内部状态。
用例响应于检测到内部错误,在 OS-Application 中进行错误恢复。
依赖SRS_Os_11022
支持材料--
满足RS_BRF_01248

4.9 通用多核问题(General Multi-Core issues)

4.9.1 概述

本节中的需求非常通用。它们定义了 AUTOSAR 环境将支持的多核(MC)能力的要点。从架构的角度来看,多核硬件可以以各种不同的方式管理。在一端,核可以被理解为几乎独立的 ECU;在另一端,它们可以作为几乎具有真正并行能力的单核(SC)系统呈现给用户。

在汽车系统中,对 MC 支持的需求非常依赖于具体域。高效调度、低资源消耗和短响应时间至关重要。

需求的设计方式是引入多核不会改变 AUTOSAR 的整体理念。

MC 概念允许像 SC 系统一样处理多个核,但给予在概念之外使用核的自由,例如作为专用 I/O 控制器。

4.9.2 功能需求

[SRS_Os_80001] OS 应能够管理多个紧密耦合的 CPU 核。

类型valid
描述OS 应能够管理多个紧密耦合的 CPU 核。这并不意味着 µC 上的所有核都由 OS 控制。
理由提供一个 OS 控制多个核的解决方案的原因是:
  • 支持功能的高效并行化
  • 核数量的向上和向下可扩展性
  • 允许将 AUTOSAR 多核扩展限制为可用核的子集,以在不受控制的核上运行其他 OS 实例
用例
  • 需要通过算法并行化实现高性能计算的应用(例如信号处理应用)
  • 具有公共 BSW 的多核系统
  • 超出给定核数量(例如 1 个)边界的应用可以轻松利用更高数量的核(向上可扩展性)
  • 为多个核设计的应用可以剥离(例如对于低成本系统)到更少(例如 1 个)核(向下可扩展性)
  • 将发动机控制系统迁移到多核
  • 将以前分离的应用集成到一个多核 ECU 中
依赖SRS_Os_80008
支持材料
满足RS_BRF_00206

[SRS_Os_80003] 多核扩展应提供与单核同等级别的可预测性。

类型valid
描述多核扩展应提供与单核同等级别的可预测性。这包括无死锁执行和免于无界阻塞。
理由实时能力是汽车域的关键需求。现有 SC 解决方案的设计方式是它们的使用不能引起无界阻塞并保证无死锁执行。MC 解决方案应以类似的方式运行。
用例--
依赖SRS_Os_80005
支持材料--
满足RS_BRF_00206

4.9.3 "一个 AUTOSAR 系统控制多个核" 术语的附加说明

当讨论控制多个核的 AUTOSAR 系统时(如 SRS_Os_80001),有几个含义:

4.9.4 "无界阻塞" 术语的附加说明

阻塞是高级运行时对象由于低级运行时对象阻止其执行(例如通过占用所需资源)而无法执行的情况。意外阻塞可能由优先级反转引起。

无界阻塞一词意味着潜在阻塞持续时间不受限制,因此无法保证所需的实时行为。

4.10 运行时对象到核的分配(Assignment of runtime objects to cores)

4.10.1 概述

在定义多核系统时,一个主要问题是运行时对象(任务和 ISR)是否可以在动态上在不同核之间更改。

动态地将运行时对象分配到不同核的能力将对系统的所有效率方面(代码大小/数据大小/速度/响应时间/实时能力)产生巨大影响。

可以将 OsApplications 绑定到核或在任务和 ISR 级别上定义核绑定。为了最小化 AUTOSAR 内多核支持的复杂性和影响,决定在 OsApplication 级别定义核绑定。

本节定义了将核绑定声明为在 MC AUTOSAR 环境中处理运行时对象的方式的需求。

4.10.2 需求

[SRS_Os_80005] OsApplications 以及结果上的 TASKS 和 OsISRs 应静态分配到核。

类型Valid
描述OsApplications 以及结果上的 TASKS 和 OsISRs 应静态分配到核。
理由
  • 如果 TASKS 或 OsISRs 可以在运行时更改核,则可能违反实时能力。
  • 如果单个 OsApplication 的任务可以绑定到不同的核,则 OsApplication 的关闭变得困难。需要有效机制。
  • 为了满足需求 [BSW00009] 和 [BSW00010],应可以访问不同 OsApplications 的 EVENTS 和 TASKS。
  • 在多核情况下,无论可扩展性类别如何,都应使用 OsApplications(参见 AUTOSAR_SWS_OS)。
用例--
依赖OS 规范;SRS_Os_80003SRS_Os_80015SRS_Os_80016
支持材料AUTOSAR_SWS_OS
满足RS_BRF_00206

4.11 多核系统的启动(Startup of Multi-Core systems)

4.11.1 概述

本节包含关于启动的一些高层需求。根据使用的微控制器,微控制器的启动或复位行为可以有所不同。复位后最常见的行为如下:

唤醒机制和引导需求因微控制器和微控制器衍生品而异。

不同核上启动代码的进度不可重现;这是因为加载和存储操作的持续时间取决于总线仲裁和其他非常时间敏感的硬件效应。因此,引导代码必须以不依赖于其他核上引导进度的知识的方式设计。需要同步不同核在启动期间的状态。

4.11.2 需求

[SRS_Os_80026] 应当可以启动多核系统中的任何核。

类型valid
描述应当可以启动多核系统中的任何核。
理由如果核不能被激活,则灵活性非常低。
用例MC 系统的引导。
依赖--
支持材料--
满足RS_BRF_01256

[SRS_Os_80027] 应当可以初始化多核系统中的任何核。

类型valid
描述应当可以初始化多核系统中配置为运行 AUTOSAR 系统的任何核。
理由--
用例MC 系统的引导。
依赖--
支持材料--
满足RS_BRF_01256

[SRS_Os_80006] 系统的初始化/启动应同步。

类型valid
描述系统的初始化/启动应同步。
理由为了支持广泛的硬件,需要在不同核的某些点同步软件。否则无法依赖其他核的状态。(当一个核已经执行任务时,另一个核仍处于初始化阶段。)
用例MC 系统的引导。
依赖
  • OS 规范
  • ECU 状态管理器
  • 硬件
  • 适用于 NonAUTOSAR 核和 AUTOSAR 核
支持材料--
满足RS_BRF_00206

4.12 多核系统的关闭(Shutdown of Multi-Core systems)

4.12.1 概述

与启动类似,多核系统的关闭行为与单核系统的行为不同。

如果具有适当权限的运行时对象调用 "ShutdownOS",则整个系统(MC-OS 控制的所有核)必须关闭。一旦启动关闭过程,validtasks 就不能被激活。确保在调用 "ShutdownOS" 之前完成应用和基础软件级别的任何关闭准备工作是开发者/系统集成商的责任。

4.12.2 需求

[SRS_Os_80007] 关闭程序应可由任何核触发。

类型valid
描述关闭程序可从任何核触发。
理由在错误情况下,相关处理程序可能需要系统关闭。任何核都必须可能执行此操作。
用例保护钩返回 PRO_SHUTDOWN
依赖OS 规范
支持材料--
满足RS_BRF_00206

4.13 多核系统的配置(Configuration of Multi-Core systems)

4.13.1 概述

本节包含关于多核系统配置的高层需求。

4.13.2 需求

[SRS_Os_80008] 应当在多个核上使用通用 OS 配置。

类型valid
描述如果要跨核寻址对象,则必须生成不相交的(disjunctive)对象 ID。
理由例如,如果跨核激活任务,则 ID 在核之间必须唯一。这导致一个通用配置,并影响刷写/编程策略。
用例跨核激活任务或设置事件
依赖OS 规范
SRS_Os_80001
SRS_Os_80015
SRS_Os_80016
支持材料多核概念文档
满足RS_BRF_00206

[SRS_Os_80011] 操作系统管理的核数应可离线配置。

类型valid
描述操作系统管理的核数应可离线配置。
理由操作系统规范不应限于特定数量的核。
用例在不同核数的项目中使用操作系统。
依赖
  • 配置规范(例如系统模板)
  • 引导程序(例如 ECU 状态管理器)
支持材料--
满足RS_BRF_00206

4.14 多核系统中的服务(Services in Multi-Core systems)

4.14.1 概述

以下章节定义了一组允许优化使用多核环境的机制/服务。这些服务可能由不同的 AUTOSAR BSW 模块提供。AUTOSAR_SWS_Multi-Core 定义了从哪个模块可以访问哪个服务。

4.14.2 需求

[SRS_Os_80013] 服务的行为应与单核系统相同。

类型Valid
描述当发起对象和被操纵对象(例如任务)驻留在同一核上时,服务(例如任务激活)的行为应与单核系统相同。
理由SC 系统的已知服务在本地使用时(即不跨越核边界)应在 MC 系统上表现相同。
用例--
依赖OS 规范、BSW 规范
支持材料
满足RS_BRF_00206

[SRS_Os_80015] MC 扩展应提供在不同核上激活任务的机制。

类型Valid
描述MC 扩展应提供在不同核上的不同 OsApplications 中激活任务的机制。
理由在不同项目(例如低成本和高端车辆)的核之间离线重新分配任务应是可行的,而无需重新编程所有任务激活。此外,系统集成商应可以将子功能分配到具有空闲处理能力的核上。
用例使用以目标代码形式交付的第三方软件。
依赖OS 规范
支持材料--
满足RS_BRF_00206

[SRS_Os_80016] 事件机制应跨核工作。

类型Valid
描述MC 扩展应提供将事件发送到不同核上的任务中的机制,位于不同 OsApplications 中。
理由如果使用事件并且任务移动到不同的核(离线),则应仍可以使用事件。
用例监控/安全概念。
依赖OS 规范
支持材料
满足RS_BRF_00206

[SRS_Os_80018] 应提供在多个核上同步任务的方法。

类型Valid
描述应提供在多个核上同步任务的方法。
理由需要跨核同步任务。这可以通过多种方式完成,例如激活跨核任务的报警、同步计数器或使用共享硬件定时器。
用例同步应用
依赖OS 规范
支持材料--
满足RS_BRF_00206

[SRS_Os_80020] 应提供数据交换机制。

类型Valid
描述应提供独立于硬件保证数据一致性的数据交换机制。
理由为了最小化 RTE 的硬件依赖性,需要 RTE 可以使用的交换机制。
用例MC 系统中的数据交换。
依赖--
支持材料--
满足RS_BRF_01240

[SRS_Os_80021] AUTOSAR 环境的 MC 扩展应支持核之间的互斥机制,该机制不应引起死锁。

类型Valid
描述如果正确配置和使用,AUTOSAR 环境的 MC 扩展应支持核之间的互斥机制,不应引起死锁。
该机制应可从任务和 ISR 级别使用。
理由在 MC 系统中,需要互斥机制以同步不同的核。该互斥机制应支持用户防止构建死锁。
用例对共享资源的并发访问
依赖
  • OS 规范
  • 需要硬件支持
支持材料--
满足RS_BRF_01264

[SRS_Os_80022] 在特定核上没有任务将被调度的情况下,OS 应执行用户可选择的操作。

类型Valid
描述在特定核上没有任务将被调度的情况下,OS 应执行用户可选择的操作。
理由为了将核独立地设置为低功耗模式,使用了间接方法。代替显式请求核 HALT,考虑了 ECUM 等某些模块中实现的橡皮筋原理:只要其活动被分配给它的某些任务需要,核保持正常模式,并且一旦没有任务处于 RUNNING 或 READY 状态就停止。核可以通过 SW 中断(由 OS 管理)或 HW 中断唤醒。
用例通过将未使用的核临时设置为省电模式来降低能耗
依赖
  • OS 规范
  • 需要硬件支持
支持材料--
满足RS_BRF_01184

[SRS_Os_80023] 在特定核上没有任务将被调度的情况下,OS 应执行可在运行时选择的操作。

类型Valid
描述在特定核上没有任务将被调度的情况下,OS 应执行可在运行时选择的操作。
理由当满足 SRS_Os_80022 的条件时,OS 应提供不同的操作选项。应可以定义不同的操作,从预定义的 NO_HALT 模式(不采取任何操作,核保持运行)到由 OS 供应商定义的多个特定于 OS 和 HW 的选项,这些选项将核设置为 HALT 状态。
用例通过将未使用的核临时设置为省电模式来降低能耗
依赖
  • OS 规范
  • 需要硬件支持
支持材料--
满足RS_BRF_01184

4.15 调试与跟踪(Debugging and Tracing)

4.15.1 ARTI 支持

[SRS_Os_12001] OS 应创建 ARTI 模块描述文件。

类型Valid
描述如果 OS 配置为使用 ARTI,则 OS 生成器应创建 ARTI 模块描述文件。
理由调试工具需要内部信息以可视化软件的状态。实现此需求的组件和模块应提供必要的状态信息,可由内部和外部工具使用。
用例调试软件。
依赖--
支持材料--
满足()

4.15.2 跟踪支持(Tracing Support)

[SRS_Os_12002] OS 代码应包含 ARTI 钩子。

类型Valid
描述如果 OS 配置为使用 ARTI,则其代码应包含 ARTI 钩子。OS 生成器应在 ARTI 模块描述中公开钩子和可跟踪变量。
理由跟踪和时序分析工具需要内部信息以可视化和检查软件的运行时行为。实现此需求的组件和模块应提供必要的详细信息和钩子,可由工具使用。
用例运行时跟踪软件、分析、时序测量。
依赖此需求依赖于"模块的生成器应创建 ARTI 模块描述文件"的需求。
支持材料--
满足()

5 需求追溯(Requirements Tracing)

需求描述由以下 SRS 满足
RS_BRF_00206AUTOSAR 应当支持多核 MCUSRS_Os_80001, SRS_Os_80003, SRS_Os_80005, SRS_Os_80006, SRS_Os_80007, SRS_Os_80008, SRS_Os_80011, SRS_Os_80013, SRS_Os_80015, SRS_Os_80016, SRS_Os_80018
RS_BRF_01096AUTOSAR 应当支持 ECU 的启动与关闭SRS_Os_11018
RS_BRF_01184AUTOSAR 应当支持不同的降级方法SRS_Os_80022, SRS_Os_80023
RS_BRF_01200AUTOSAR OS 应当向后兼容 OSEK OSSRS_Os_00097
RS_BRF_01208AUTOSAR OS 应当支持定期启动任务列表SRS_Os_00098, SRS_Os_00099
RS_BRF_01216AUTOSAR OS 应当支持将 ScheduleTable 与外部时间源同步SRS_Os_11002
RS_BRF_01224AUTOSAR OS 应当支持时序保护SRS_Os_11008
RS_BRF_01232AUTOSAR OS 应当支持应用软件的隔离与保护SRS_Os_11001, SRS_Os_11003, SRS_Os_11005, SRS_Os_11009, SRS_Os_11010, SRS_Os_11011, SRS_Os_11012, SRS_Os_11013, SRS_Os_11016
RS_BRF_01234AUTOSAR OS 应当支持 BSW 模块之间的隔离与保护SRS_Os_11001
RS_BRF_01240AUTOSAR OS 应当支持 OSApplications 之间的通信SRS_Os_11006, SRS_Os_11007, SRS_Os_80020
RS_BRF_01248AUTOSAR OS 应当支持终止和重启 OSApplicationsSRS_Os_11014, SRS_Os_11022, SRS_Os_11023
RS_BRF_01256AUTOSAR OS 应当提供关闭核的支持SRS_Os_80026, SRS_Os_80027
RS_BRF_01264AUTOSAR OS 应当支持多核无死锁互斥SRS_Os_80021
RS_BRF_02008AUTOSAR 应当提供机制保护系统免受未授权读访问SRS_Os_11000

6 参考资料(References)

6.1 AUTOSAR 交付物(Deliverables of AUTOSAR)

6.2 相关标准与规范(Related standards and norms)

6.2.1 OSEK

6.2.2 公司报告、学术著作等

📋 校对记录

校对轮次:L1 自动校对(2026-06-13)

质量评级A 级