diff --git a/translation_zh-CN/P1_SystemServices/AUTOSAR_SWS_OS.html b/translation_zh-CN/P1_SystemServices/AUTOSAR_SWS_OS.html new file mode 100644 index 0000000..2631ac9 --- /dev/null +++ b/translation_zh-CN/P1_SystemServices/AUTOSAR_SWS_OS.html @@ -0,0 +1,1384 @@ + + +
+ +本规范规定了 AUTOSAR 操作系统(Operating System, OS)的功能、API 与配置。OS 提供了 AUTOSAR 基础软件(BSW)运行所需的基础服务,包括任务调度、中断处理、内存保护、时间保护、调度表、OS-Application 隔离、IOC 通信、多核支持、钩子(Hook)函数、外设访问接口等。
+AUTOSAR OS 基于 OSEK/VDX OS 标准(ISO 17356),并在其基础上进行了扩展:增加了多核支持、内存保护、时间保护、调度表、IOC 等。OS 假定可自由访问硬件资源(中断控制寄存器、处理器状态字、栈指针等),并由 OS 自身管理这些资源。
+OS 设计目标:
+本章仅列出对理解本文档有帮助的缩略语与缩写,更全面信息见 AUTOSAR 词汇表。
+| 缩略语 | 描述 |
|---|---|
| API | Application Programming Interface(应用编程接口) |
| ALARM | OS 报警对象(基于计数器到期事件) |
| BSW | Basic Software(基本软件) |
| COM | AUTOSAR Communication Module(通信模块) |
| COUNTER | OS 计数器对象(驱动调度表与报警) |
| CPU | Central Processing Unit(中央处理单元) |
| EcuM | ECU State Manager(ECU 状态管理器) |
| ISR | Interrupt Service Routine(中断服务程序) |
| IOC | Inter-OS-Application Communicator(OS-Application 间通信器) |
| ISR | Interrupt Service Routine(中断服务程序) |
| LE | Locatable Entity(可定位实体) |
| MCU | Micro Controller Unit(微控制器单元) |
| MPU | Memory Protection Unit(内存保护单元) |
| NM | Network Management(网络管理) |
| OS | Operating System(操作系统) |
| OS-Application | OS 应用:一组由 OS 视为单一单元的任务、ISR、调度表、计数器、报警、资源的集合 |
| OSEK | Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug(汽车电子开放系统及其接口) |
| RESOURCE | OS 资源:用于任务优先级的协调机制 |
| RTE | Runtime Environment(运行时环境) |
| SCHEDULE TABLE | 调度表:基于绝对时间或周期时间的任务/ISR 触发集合 |
| SC | Scalability Class(可扩展性类) |
| SPINLOCK | OS 自旋锁:多核间的硬件同步原语 |
| SWFRT | Software Free Running Timer(软件自由运行定时器) |
| SW-C | Software Component(软件组件) |
| TASK | OS 任务:基本调度单元 |
| TP | Timing Protection(时间保护) |
本章定义本文档中使用的关键术语。
+| 术语 | 描述 |
|---|---|
| Alarm(报警) | OS 提供的对象,当关联的计数器达到预设值时触发回调。 |
| Application(应用) | 见 OS-Application。 |
| Counter(计数器) | OS 提供的对象,表示由硬件定时器或软件自由运行定时器驱动的递增计数值。计数器驱动报警与调度表。 |
| Extended Task(扩展任务) | 支持多次激活、事件等待与状态(RUNNING、READY、WAITING、SUSPENDED)的任务类型。 |
| Basic Task(基本任务) | 仅支持 RUNNING、READY、SUSPENDED 三种状态的任务类型;不可等待事件。 |
| Hook Function(钩子函数) | OS 提供的回调函数,在特定系统事件(如启动、关闭、错误)时由 OS 调用。 |
| IOC(Inter-OS-Application Communicator) | OS-Application 间通信机制,支持跨核/核内 OS-Application 的数据传递。 |
| OS-Application | OS 视为单一单元的应用实体集合(任务、ISR、计数器、报警、调度表、资源、IOC)。 |
| Schedule Table(调度表) | 绝对/相对时间点集合,定义了到期时执行的动作(激活任务、设置事件、切换调度表等)。 |
| Spinlock(自旋锁) | 多核间互斥原语,确保对共享资源的排他访问。 |
| Trusted Function(可信函数) | 在特权模式下运行的函数,可被非特权 OS-Application 调用以执行受保护操作。 |
| Timing Protection(时间保护) | OS 机制,防止任务/ISR 阻塞系统过长时间(执行时间监控、到达率监控、锁时间监控)。 |
| Memory Protection(内存保护) | OS 机制,限制 OS-Application 对特定内存区域的访问,防止越界访问。 |
AUTOSAR_SRS_BSWGeneral.pdfAUTOSAR_SRS_OS.pdfAUTOSAR_SWS_RTE.pdfAUTOSAR_SWS_ECUStateManager.pdfAUTOSAR_TPS_ECUConfiguration.pdfAUTOSAR_TPS_BSWModuleDescriptionTemplate.pdfAUTOSAR_SWS_BSWGeneral.pdfAUTOSAR_SWS_COM.pdfAUTOSAR_SWS_NetworkManagementInterface.pdfAUTOSAR_SWS_DiagnosticCommunicationManager.pdfAUTOSAR_SRS_Frt.pdfAUTOSAR_SWS_MCUDriver.pdfAUTOSAR_SWS_GPTDriver.pdfAUTOSAR_SWS_ARTI.pdfAUTOSAR_EXP_LayeredSoftwareArchitecture.pdfAUTOSAR_TPS_Timing.pdfAUTOSAR_SWS_RTE_MultiCore.pdfAUTOSAR_SWS_CRC.pdfAUTOSAR_SWS_DefaultErrorTracer.pdfOSEK/VDX OS、COM、NM、Binding 规范的 ISO 化版本。
+ +不适用。
+ +AUTOSAR 提供了针对基本软件模块的通用规范 [7](SWS BSW General),该规范同样适用于 OS。SWS BSW General 应被视为 OS 的附加且必需的规范。
+ +OS 规范建立在以下 OSEK/VDX 标准之上:
+本规范在保持与 OSEK/VDX OS 兼容性的同时,扩展了多核支持、内存保护、时间保护、调度表、IOC、可信函数、外设访问、ARTI 跟踪钩子等特性。
+ +本规范使用 OSEK/VDX OS 规范中的术语。除此之外,AUTOSAR 还引入了以下 OS 相关术语(详见 §2.1 词汇表):
+RTE(运行时环境)使用 OS 提供的服务(如任务激活、事件设置、调度表控制、ISR 管理)来实现 AUTOSAR 软件组件的通信与调度。OS 假定 RTE 符合 [3] AUTOSAR RTE 规范。
+RTE 假定 OS 提供的功能包括:
+未使用 AUTOSAR OS 的系统可通过操作系统抽象层(OSAL)为 AUTOSAR 软件组件提供执行平台。OSAL 与 AUTOSAR OS 的接口完全相同。
+ +目前多核微处理器有多种现有和建议的硬件架构。本节尝试捕获多核所需的共同架构特征集。
+硬件假设应保持为假设,不应成为 AUTOSAR 官方需求。
+ +核心 AUTOSAR 操作系统假定可自由访问由 OS 自身管理的硬件资源。这包括但不限于以下硬件:
+核心操作系统的特定(扩展)功能扩展了硬件资源需求。下列列表概述了具有硬件需求的功能:
+通常,处理器中的硬件故障不会被操作系统检测到。在硬件故障的情况下,无法保证 OS 的正确运行。
+由特定 OS 实现管理的资源必须在 OS 的相应配置文件中定义。
+ +操作系统的 API 定义为 C 函数调用或宏。若使用其他语言,必须适配 C 接口。
+ +操作系统不提供动态内存管理服务。
+ +操作系统在尺寸和可扩展性方面具有与 [15](OSEK OS)相同的设计约束。因此其当前直接适用领域为车身、底盘和动力总成 ECU。但也没有理由不能将 OS 用于实现信息娱乐应用 ECU。
+ +没有对其他模块的强制依赖,但:
+SyncScheduleTable() 服务被告知全局时间。操作系统模块的代码文件结构未固定,除通用 SRS 中的需求外。
+ +IOC 生成器生成额外的头文件 Ioc.h。Ioc.h 的用户应包含 Ioc.h 文件。若 IOC 的实现需要额外的头文件,则实现可自由包含。头文件是自包含的,这意味着它们将包含它们所需的所有其他头文件。
为支持基于 ARTI 的调试和跟踪,所有包含 ARTI 钩子宏的源文件应包含一个 arti.h 文件。此文件(连同相应的 arti.c 文件)由 ARTI 钩子实现者(即跟踪工具)提供。在构建最终可执行文件时,链接器也会将编译后的 arti.c 文件拉入。
ARTI 钩子宏的使用是可配置的。若 OS 配置为不使用 ARTI,则可以省略 arti.h 的包含,ARTI 钩子宏可以扩展为空宏("无操作")。
本章包含对其他 AUTOSAR 文档需求的引用。下表列出了 SWS 文档中满足输入需求的具体规范条目引用。仅功能需求被引用。
+ +以下 60+ SRS_BSW_* 需求由 SWS_Os_00767(版本检查)或 SWS_Os_00815(编译器特定方法封装)集中满足(按 SRS_BSW_00351):
| SRS 需求 | 由 SWS_Os_* 满足 |
|---|---|
SRS_BSW_00003(所有 BSW 模块应提供版本与标识信息) | SWS_Os_00767 |
SRS_BSW_00006, _00007, _00009, _00010, _00161, _00162, _00168, _00170, _00172, _00301, _00302, _00305, _00306, _00307, _00308, _00309, _00310, _00312, _00314, _00318, _00321, _00325, _00327, _00328, _00330, _00333, _00334, _00335, _00337, _00339, _00342, _00344, _00347, _00350, _00357, _00358, _00361, _00369, _00373, _00374, _00375, _00377, _00378, _00379, _00383, _00384, _00385, _00386, _00401, _00404, _00405, _00406, _00407, _00409, _00410, _00411, _00413, _00414, _00415, _00417, _00419, _00422, _00423, _00437, _00439, _00440, _00441 | SWS_Os_00767 |
SRS_BSW_00351(封装编译器特定方法以映射对象) | SWS_Os_00815 |
| 需求 | 描述 | 由 SWS_Os_* 满足 |
|---|---|---|
SRS_Frt_00020 | 若未使用 GPT 定时器,则配置与初始化由 OS(提供 SWFRT 功能)执行 | SWS_Os_00374 |
SRS_Frt_00022 | 应可指定使用哪个硬件定时器 | SWS_Os_00370 |
SRS_Frt_00025 | 应为不同用户提供访问时间信息的方法 | SWS_Os_00383, SWS_Os_00392 |
SRS_Frt_00030 | 读出值应从零开始 | SWS_Os_00384 |
SRS_Frt_00031 | SWFRT 应递增 | SWS_Os_00384 |
SRS_Frt_00032 | 环绕应在无软件交互的情况下工作 | SWS_Os_00767 |
SRS_Frt_00033 | 应有一个原子读取定时器值的函数 | SWS_Os_00377 |
SRS_Frt_00034 | 模块应提供计算自先前存储值到当前定时器值之间经过的刻度数的功能 | SWS_Os_00382 |
SRS_Frt_00047 | SWFRT 应提供用户相关的 API(函数/宏)将刻度转换为时间 | SWS_Os_00393 |
下表列出了 AUTOSAR SRS_OS 文档中定义的需求及其在 SWS_OS 中的满足关系(节选)。
+| 需求 | 由 SWS_Os_* 满足 | |
|---|---|---|
SRS_Os_00001(向后兼容 OSEK OS API) | SWS_Os_00001 | |
SRS_Os_00002, _00007(基于时间表的调度表,可选) | SWS_Os_00002, SWS_Os_00007 | |
SRS_Os_00003(静态配置报警) | SWS_Os_00121 | |
SRS_Os_00004(静态配置计数器) | SWS_Os_00119, SWS_Os_00120 | |
SRS_Os_00005(静态配置资源) | SWS_Os_00067 | |
SRS_Os_00006(静态配置任务) | SWS_Os_00049, SWS_Os_00050, SWS_Os_00100, SWS_Os_00101 | |
SRS_Os_00010(支持 OSEK OS 任务类型:基本与扩展) | SWS_Os_00001 | |
SRS_Os_00011(支持 OSEK OS 任务状态:RUNNING、READY、WAITING、SUSPENDED) | SWS_Os_00001 | |
SRS_Os_00013(使用调度表的 OS 应支持计数器驱动) | SWS_Os_00017, SWS_Os_00021 | |
SRS_Os_00014(使用调度表的 OS 应支持绝对/相对到期点) | SWS_Os_00134, SWS_Os_00138 | |
SRS_Os_00015(调度表应支持同步与停止) | SWS_Os_00145, SWS_Os_00152, SWS_Os_00153 | |
SRS_Os_00020(OS 应提供按任务/ISR 内存保护) | SWS_Os_00196, SWS_Os_00198, SWS_Os_00207, SWS_Os_00208, SWS_Os_00355 | |
SRS_Os_00021(OS 应提供执行时间监控) | SWS_Os_00290, SWS_Os_00291, SWS_Os_00292, SWS_Os_00293 | |
SRS_Os_00022(OS 应提供锁时间监控) | SWS_Os_00299, SWS_Os_00300 | |
SRS_Os_00023(OS 应提供到达率/间隔时间监控) | SWS_Os_00296, SWS_Os_00297, SWS_Os_00298 | |
SRS_Os_00030(OS 应提供 OS-Application 机制) | SWS_Os_00402, SWS_Os_00403, SWS_Os_00404, SWS_Os_00406, SWS_Os_00408 | |
SRS_Os_00040(多核支持) | SWS_Os_00500, SWS_Os_00501, SWS_Os_00502, SWS_Os_00503 | |
SRS_Os_00050(自旋锁机制) | SWS_Os_00680, SWS_Os_00681, SWS_Os_00682, SWS_Os_00683 | |
SRS_Os_00060(IOC 跨核通信) | SWS_Os_00555, SWS_Os_00560, SWS_Os_00570, SWS_Os_00575 | |
SRS_Os_00070(可信函数调用) | SWS_Os_00496, SWS_Os_00497, SWS_Os_00498 | |
SRS_Os_00080(错误钩子) | SWS_Os_00450, SWS_Os_00451, SWS_Os_00452, SWS_Os_00453 | |
SRS_Os_00090(钩子函数) | SWS_Os_00370, SWS_Os_00371, SWS_Os_00372 | |
SRS_Os_00100(启动/关闭 OS) | SWS_Os_00460, SWS_Os_00461, SWS_Os_00463, SWS_Os_00470 | |
SRS_Os_00110(外设访问 API) | SWS_Os_00600, SWS_Os_00601, SWS_Os_00602 | |
SRS_Os_00120(中断源 API) | SWS_Os_00620, SWS_Os_00621, SWS_Os_00622 | |
SRS_Os_11000(OS-Application 数据段保护) | SWS_Os_00026 | |
SRS_Os_11005(可信应用受限保护) | SWS_Os_00207, SWS_Os_00208, SWS_Os_00195, SWS_Os_00795 | |
SRS_Os_11006(OS-Application 自身数据访问) | SWS_Os_00086, SWS_Os_00087, SWS_Os_00196 | |
SRS_Os_11007(共享库代码) | SWS_Os_00081 | |
SRS_Os_11013(内存访问违规钩子) | SWS_Os_00044 |
完整的 SRS_Os_* 需求追踪表(在原 PDF 第 26-35 页)由 SWS_Os_00499(不适用)汇总标识,本节为节选。
+ +AUTOSAR 操作系统(OS)规范是 AUTOSAR BSW 的核心之一。OS 提供了任务调度、ISR 管理、内存保护、时间保护、调度表、IOC 通信、多核支持、错误处理、钩子函数等基础服务。
+OS 基于 OSEK/VDX OS 标准(ISO 17356),并在其基础上扩展了多核、保护、调度表、IOC、ARTI 跟踪钩子等特性。
+ +OS 的核心功能包括:任务调度、ISR 处理、资源管理、事件机制、报警、计数器。这些功能源自 OSEK/VDX OS 标准,并在 AUTOSAR 中扩展了可扩展性类(SC1-SC4)。
+可扩展性类(SC)定义 OS 支持的功能子集。SC 数值越低,支持的功能越少(适合小型 ECU);SC 数值越高,支持的功能越多(适合高端 ECU)。
+| Scalability Class | 支持的功能 |
|---|---|
| SC1 | 基本任务、固定优先级调度、基本资源 |
| SC2 | SC1 + 扩展任务、事件机制 |
| SC3 | SC2 + 调度表、报警、计数器 |
| SC4 | SC3 + 内存保护、时间保护 |
核心 OS 需求摘要:
+[SWS_Os_00001] ⌈ OS 应提供与 OSEK OS API 向后兼容的 API。 ⌋(SRS_Os_00097)
+[SWS_Os_00049, SWS_Os_00050, SWS_Os_00100, SWS_Os_00101] ⌈ 任务应为基本或扩展类型;任务状态应为 RUNNING、READY、WAITING、SUSPENDED。 ⌋(SRS_Os_00010, SRS_Os_00011, SRS_Os_00006)
+[SWS_Os_00067] ⌈ 资源应通过优先级天花板协议管理。 ⌋(SRS_Os_00005)
+[SWS_Os_00119, SWS_Os_00120] ⌈ 计数器应可静态配置。 ⌋(SRS_Os_00004)
+[SWS_Os_00121] ⌈ 报警应可静态配置。 ⌋(SRS_Os_00003)
+ +SWFRT 是一个完全由软件实现的自由运行定时器,提供单调递增的计数值。它独立于硬件定时器,可在所有 OS-Application 中使用。
+主要 API:
+GetCounterValue():原子读取定时器当前值。GetElapsedValue():计算自上次读值以来经过的刻度。TickToTimeConversion():将刻度转换为时间值(用户相关)。[SWS_Os_00370] ⌈ 应可指定使用哪个硬件定时器(若有)。 ⌋(SRS_Frt_00022)
+[SWS_Os_00374] ⌈ 若未使用 GPT 定时器,则 SWFRT 的配置与初始化由 OS 执行。 ⌋(SRS_Frt_00020)
+[SWS_Os_00377] ⌈ 应提供原子读取定时器值的功能。 ⌋(SRS_Frt_00033)
+[SWS_Os_00382] ⌈ 模块应提供计算自先前存储值以来经过的刻度数的功能。 ⌋(SRS_Frt_00034)
+[SWS_Os_00383, SWS_Os_00392] ⌈ 应为不同用户提供访问时间信息的方法。 ⌋(SRS_Frt_00025)
+[SWS_Os_00384] ⌈ 读出值应从零开始,并单调递增。 ⌋(SRS_Frt_00030, SRS_Frt_00031)
+[SWS_Os_00393] ⌈ SWFRT 应提供用户相关的 API(函数/宏)将刻度转换为时间。 ⌋(SRS_Frt_00047)
+ +调度表(Schedule Table)是一个基于时间的事件表,定义了到期时执行的动作(如激活任务、设置事件、启动/停止其他调度表)。
+调度表支持:
+调度表由计数器(Counter)驱动,计数器决定调度表的最小时间分辨率。
+ +[SWS_Os_00017, SWS_Os_00021] ⌈ 调度表应由计数器驱动。 ⌋(SRS_Os_00013)
+[SWS_Os_00134, SWS_Os_00138] ⌈ 调度表应支持绝对和相对到期点。 ⌋(SRS_Os_00014)
+[SWS_Os_00145, SWS_Os_00152, SWS_Os_00153] ⌈ 调度表应支持同步、启动、停止。 ⌋(SRS_Os_00015)
+[SWS_Os_00002, SWS_Os_00007] ⌈ 操作系统应提供基于时间表的调度表,作为可选服务。 ⌋(SRS_Os_00098)
+ +调度表同步允许将本地调度表与外部时间源(如全局时间)同步。同步通过 SyncScheduleTable() 服务实现,该服务将本地计数器调整为指定值。
同步策略:
+[SWS_Os_00155, SWS_Os_00156, SWS_Os_00157] ⌈ SyncScheduleTable() 服务应支持以绝对或相对时间值同步调度表。 ⌋
[SWS_Os_00158, SWS_Os_00159] ⌈ 同步后的偏差应在可配置的精度范围内。 ⌋
+[SWS_Os_00160, SWS_Os_00161] ⌈ 当同步后偏差超出范围时,应通过错误钩子通知。 ⌋
+ +栈监控用于检测任务/ISR 的栈使用情况,以便在栈溢出前发出警告。栈监控有两种方式:
+[SWS_Os_00230, SWS_Os_00231, SWS_Os_00232] ⌈ OS 应支持栈填充模式以进行栈监控。 ⌋
+[SWS_Os_00233, SWS_Os_00234] ⌈ 栈使用应在上下文切换或钩子中检查。 ⌋
+[SWS_Os_00414, SWS_Os_00415] ⌈ OS 应提供栈使用查询 API。 ⌋
+ +OS-Application 是 OS 视为单一单元的应用实体集合。每个 OS-Application 包含任务、ISR、调度表、计数器、报警、资源、IOC 等对象。
+OS-Application 状态机:
+APPLICATION_ACCESSIBLE:可被访问(默认)。APPLICATION_RESTARTING:正在重启;拒绝外部访问。APPLICATION_TERMINATED:已终止;不可访问。OS-Application 类型:
+[SWS_Os_00402, SWS_Os_00403, SWS_Os_00404] ⌈ OS 应支持 OS-Application 机制,包括启动、关闭、访问控制。 ⌋(SRS_Os_00030)
+[SWS_Os_00406] ⌈ OS 应在 OS-Application 重启期间拒绝来自其他 OS-Application 的访问。 ⌋
+[SWS_Os_00408] ⌈ OS 应支持可信与非可信 OS-Application。 ⌋
+[SWS_Os_00504] ⌈ OS 模块应拒绝对不处于 APPLICATION_ACCESSIBLE 状态的 OS-Application 的访问。 ⌋
[SWS_Os_00509] ⌈ 若对其他 OS-Application 拥有的 OS 对象进行服务调用且该应用不处于 APPLICATION_ACCESSIBLE 状态,则 OS 模块应返回 E_OS_ACCESS。 ⌋
保护仅适用于 OS 管理的对象。这意味着:
+内存保护仅在提供硬件内存保护支持的处理器上可行。内存保护方案基于可执行程序的数据、代码和栈段。
+数据段与栈
+[SWS_Os_00198] ⌈ 操作系统模块应阻止来自非可信 OS-Application 对自身数据段与自身栈的写访问。 ⌋
+[SWS_Os_00795] ⌈ OS 应提供限制可信 OS-Application 写访问的可能性,方式与对非可信 OS-Application 所做的一致。可通过 OsTrustedApplicationWithProtection 配置。 ⌋(SRS_Os_11005)
OS-Application 私有数据
+[SWS_Os_00026] ⌈ 操作系统模块可阻止其他非可信 OS-Application 试图读取某 OS-Application 的数据段。 ⌋(SRS_Os_11000)
+[SWS_Os_00086] ⌈ 操作系统模块应允许某 OS-Application 读写访问自身私有数据段。 ⌋(SRS_Os_11006)
+[SWS_Os_00207] ⌈ 操作系统模块应阻止来自其他非可信 OS-Application 对该 OS-Application 私有数据段的写访问。 ⌋(SRS_Os_11005)
+ +任务/ISR 私有栈
+[SWS_Os_00196] ⌈ 操作系统模块应允许任务/Category 2 ISR 读写访问自身的私有栈。 ⌋(SRS_Os_11006)
+[SWS_Os_00208] ⌈ 操作系统模块可阻止同 OS-Application 内其他任务/ISR 对非可信应用任务/Category 2 ISR 私有栈的写访问。 ⌋(SRS_Os_11005)
+[SWS_Os_00355] ⌈ 操作系统模块应阻止来自其他非可信 OS-Application 对该 OS-Application 任务/Category 2 ISR 全部私有栈的写访问。 ⌋
+ +任务/ISR 私有数据
+[SWS_Os_00087] ⌈ 操作系统模块应允许任务/Category 2 ISR 读写访问自身私有数据段。 ⌋(SRS_Os_11006)
+[SWS_Os_00195] ⌈ 操作系统模块可阻止同 OS-Application 内其他任务/ISR 对非可信应用任务/Category 2 ISR 私有数据段的写访问。 ⌋(SRS_Os_11005)
+[SWS_Os_00356] ⌈ 操作系统模块应阻止来自其他非可信 OS-Application 对该 OS-Application 任务/Category 2 ISR 全部私有数据段的写访问。 ⌋
+ +代码段
+[SWS_Os_00027] ⌈ 操作系统模块可为 OS-Application 提供保护自身代码段不被非可信 OS-Application 执行的能力。 ⌋
+[SWS_Os_00081] ⌈ 操作系统模块应提供在所有 OS-Application 都可执行的段中提供共享库代码的能力。 ⌋(SRS_Os_11007)
+ +外设
+[SWS_Os_00209] ⌈ 若 OsTrustedApplicationWithProtection == FALSE,则 OS 模块应允许可信 OS-Application 读写访问外设。 ⌋
[SWS_Os_00083] ⌈ 操作系统模块应仅允许非可信 OS-Application 写入其分配的外设(包括具有写副作用的读)。 ⌋
+ +内存访问违规
+[SWS_Os_00044] ⌈ 若检测到内存访问违规,操作系统模块应以状态码 E_OS_PROTECTION_MEMORY 调用保护钩子。 ⌋(SRS_Os_11013)
实时系统中的时序故障发生在任务或中断在运行时错过其截止时间时。
+AUTOSAR OS 不提供用于时间保护的截止时间监控。截止时间监控不足以正确识别引起时序故障的任务/ISR。当违反截止时间时,这可能是由不相关的、干扰/阻塞过长时间的任务/ISR 引起的时序故障。此情况下的故障在于不相关的任务/ISR,并且这将在系统中传播,直到任务/ISR 错过其截止时间。因此,错过截止时间的任务/ISR 不一定是运行时失败的任务/ISR,而只是检测到时序故障的最早点。
+若基于截止时间监控识别的错过截止时间采取行动,则可能使用错误的错误证据来终止正确的 OS-Application,以允许不正确的 OS-Application 继续运行。
+为解决此问题,AUTOSAR OS 提供了执行时间监控、到达率/间隔时间监控、锁时间监控三种时间保护机制。
+ +执行时间监控
+[SWS_Os_00290, SWS_Os_00291, SWS_Os_00292, SWS_Os_00293] ⌈ OS 应提供任务/ISR 的执行时间监控。 ⌋(SRS_Os_00021)
+[SWS_Os_00294] ⌈ 若任务/ISR 的执行时间超出配置预算,OS 应调用 ProtectionHook 并返回 E_OS_PROTECTION_TIME。 ⌋
到达率/间隔时间监控
+[SWS_Os_00296, SWS_Os_00297, SWS_Os_00298] ⌈ OS 应提供任务/ISR 的到达率/间隔时间监控。 ⌋(SRS_Os_00023)
+[SWS_Os_00295] ⌈ 若任务/ISR 的到达间隔短于配置时间框架,OS 应调用 ProtectionHook 并返回 E_OS_PROTECTION_ARRIVAL。 ⌋
锁时间监控
+[SWS_Os_00299, SWS_Os_00300] ⌈ OS 应提供资源/中断锁的获取时间监控。 ⌋(SRS_Os_00022)
+[SWS_Os_00301] ⌈ 若资源/中断锁的持有时间超出配置预算,OS 应调用 ProtectionHook 并返回 E_OS_PROTECTION_LOCKED。 ⌋
[SWS_Os_00310, SWS_Os_00311] ⌈ OS 应限制非可信 OS-Application 对其他 OS-Application 对象的访问。 ⌋
+[SWS_Os_00312, SWS_Os_00313] ⌈ 非可信 OS-Application 仅可访问属于自己的对象。 ⌋
+[SWS_Os_00509] ⌈ 若对其他 OS-Application 拥有的对象进行服务调用且该应用不处于 APPLICATION_ACCESSIBLE 状态,OS 应返回 E_OS_ACCESS。 ⌋
[SWS_Os_00420, SWS_Os_00421] ⌈ OS 应将关键硬件资源(如中断控制寄存器、栈指针)保护在非可信 OS-Application 之外。 ⌋
+ +可信函数(Trusted Function)是一种允许非可信 OS-Application 调用特权操作的机制。当非可信应用需要执行受保护操作(如访问外设)时,可通过 CallTrustedFunction() 服务调用在可信 OS-Application 中注册的可信函数。
[SWS_Os_00496, SWS_Os_00497, SWS_Os_00498] ⌈ OS 应支持可信函数的注册与调用机制。 ⌋(SRS_Os_00070)
+[SWS_Os_00499] ⌈ 可信函数应运行在特权模式下,允许访问受保护资源。 ⌋
+ +当 OS 检测到保护错误(内存访问、时间或锁违规)时,调用 ProtectionHook() 回调。用户可在钩子中实现错误恢复逻辑(如重启违规 OS-Application、关闭 OS 等)。
错误码:
+E_OS_PROTECTION_MEMORY:内存访问违规E_OS_PROTECTION_TIME:执行时间超出E_OS_PROTECTION_ARRIVAL:到达间隔过短E_OS_PROTECTION_LOCKED:资源/中断锁持有时间超出钩子返回值:
+PRO_IGNORE:忽略错误PRO_SHUTDOWN:关闭违规 OS-ApplicationPRO_TERMINATE:终止 OSPRO_TERMINATETASKISR:终止违规任务/ISRPRO_RESTART:重启违规 OS-Application[SWS_Os_00450, SWS_Os_00451, SWS_Os_00452, SWS_Os_00453] ⌈ OS 应在保护错误时调用 ProtectionHook()。 ⌋(SRS_Os_00080)
[SWS_Os_00454, SWS_Os_00455] ⌈ 钩子应返回上述值之一以决定错误恢复策略。 ⌋
+ +AUTOSAR R4.0 引入多核 OS 支持。本节描述多核 OS 的概念、行为与限制。
+ +LE 是驻留在特定核上的 OS 对象(任务、ISR、调度表等)。每个 LE 只能由其所在核访问,跨核访问需通过 IOC。
+ +多核 OS 的启动顺序:
+主核通过 StartCore() 激活从核,从核通过 StartOS() 完成本地 OS 启动。
所有受 AUTOSAR OS 控制的核均运行 OS 提供的服务,并通过 IOC 进行核间通信。
+ +可存在不由 AUTOSAR OS 控制的基本核(如 BMHD、CCP 等)。这些核通过专用驱动与 AUTOSAR OS 交互。
+ +多核 OS 的关闭顺序:
+多核 OS 中,所有标准 OS 服务(任务、ISR、资源、计数器、报警、调度表、IOC、自旋锁、钩子)均按核本地方式工作。跨核通信仅通过 IOC 与自旋锁实现。
+ +GetTaskID() 返回当前任务的 ID(核本地)。
中断禁用 API(DisableAllInterrupts、EnableAllInterrupts、SuspendAllInterrupts、ResumeAllInterrupts、SuspendOSInterrupts、ResumeOSInterrupts)仅影响当前核的中断。跨核中断同步需使用自旋锁。
ActivateTask() 仅激活当前核上的任务(任务已绑定到特定核)。跨核任务激活不可直接进行,需通过 IOC 消息通知目标核。
任务链接(Task Chaining)行为与单核相同:完成任务后立即调度同优先级就绪任务。
+ +SetEvent() 仅设置当前核上任务的扩展任务事件。
主核通过 StartNonAutosarCore()(扩展 API)激活附加核。OS-Application 可通过此 API 启动专用计算核。
StartOS() 启动 OS 核心调度。可由主核或从核调用;从核可在不调用 StartOS() 的情况下进入主函数。
任务可通过 TerminateTask() 终止自身。OS 将任务状态切换为 SUSPENDED,并触发重新调度。
TerminateApplication() 终止指定的 OS-Application。OS-Application 状态切换为 APPLICATION_TERMINATED。
ShutdownOS() 关闭 OS。立即停止所有核上的调度,调用关闭钩子,执行最终关闭。
WaitEvent() 等待当前核上任务的扩展任务事件。
CallTrustedFunction() 仅在本地核上调用可信函数(必须属于同一核上的可信 OS-Application)。
Schedule() 触发本地核的任务重调度。
资源(Resource)仅在绑定到同一核的任务间本地使用,跨核资源需使用自旋锁。
+ +GetCoreID() 返回当前核的 ID。
报警基于计数器,绑定到特定核。跨核报警不可直接使用,需通过 IOC 通知目标核。
+ +自旋锁(Spinlock)提供多核间的硬件同步原语,API:GetSpinlock()、ReleaseSpinlock()、TryToGetSpinlock()。
[SWS_Os_00680, SWS_Os_00681, SWS_Os_00682, SWS_Os_00683] ⌈ OS 应支持自旋锁的获取、释放与尝试获取。 ⌋(SRS_Os_00050)
+ +OS-Application 可配置自动启动的任务、ISR、报警、调度表,在 StartOS() 后自动激活。
IOC(Inter-OS-Application Communicator)提供 OS-Application 之间的通信机制,支持核内与跨核通信。IOC 通过共享内存实现,对调用方透明。
+ +IOC 提供两种通信原语:
+API:IocSend_<cn>()、IocReceive_<cn>()、IocWrite_<cn>()、IocRead_<cn>()、IocCall_<cn>()。
系统可扩展性类(SC1-SC4)允许 OS 配置为支持不同范围的功能。SC 越低,开销越小;SC 越高,安全性/可调试性越好。
+ +[SWS_Os_00900, SWS_Os_00901, SWS_Os_00902, SWS_Os_00903, SWS_Os_00904] ⌈ OS 应支持 SC1-SC4 的可扩展性类配置。 ⌋
+ +Hook 函数是 OS 在特定系统事件时调用的回调,用于用户扩展 OS 行为或实现 OS-Application 级别的初始化/清理。
+主要 Hook 函数:
+StartupHook():OS 启动后立即调用。ShutdownHook():OS 关闭前调用。ErrorHook():每次 OS 服务返回错误时调用。ProtectionHook():保护错误时调用。PreTaskHook() / PostTaskHook():任务切换前后调用。[SWS_Os_00370, SWS_Os_00371, SWS_Os_00372] ⌈ OS 应支持启动、关闭、错误、保护等 Hook 函数。 ⌋(SRS_Os_00090)
+ +OS 提供了一组直接访问硬件外设的 API(绕过 AUTOSAR MCAL),用于需要高性能或低延迟的特殊场景(例如中断处理、GPIO 快速翻转等)。
+API:ReadPeripheral8/16/32、WritePeripheral8/16/32、ModifyPeripheral8/16/32。
[SWS_Os_00600, SWS_Os_00601, SWS_Os_00602] ⌈ OS 应提供 8/16/32 位宽度的外设读、写、修改 API。 ⌋(SRS_Os_00110)
+ +中断源 API 允许 OS-Application 查询中断源信息(向量、优先级、状态等),用于高级中断处理场景。
+API:GetInterruptSource()、EnableInterruptSource()、DisableInterruptSource()、ClearInterruptSource()、TriggerInterruptSource()、InstallInterruptHandler()。
[SWS_Os_00620, SWS_Os_00621, SWS_Os_00622] ⌈ OS 应提供完整的中断源管理 API。 ⌋(SRS_Os_00120)
+ +OS 错误分为:
+主要错误码:E_OS_ACCESS、E_OS_CALLEVEL、E_OS_ID、E_OS_LIMIT、E_OS_NOFUNC、E_OS_RESOURCE、E_OS_STATE、E_OS_VALUE、E_OS_SERVICEID、E_OS_PARAM_POINTER、E_OS_PARAM_VALUE、E_OS_PROTECTION_MEMORY、E_OS_PROTECTION_TIME、E_OS_PROTECTION_ARRIVAL、E_OS_PROTECTION_LOCKED、E_OS_DISABLEDINT、E_OS_SYS_ASSERTION 等。
ARTI(AUTOSAR Run-Time Interface)提供 OS 的运行时跟踪与调试接口。ARTI Hook 宏由 OS 在关键事件(任务调度、中断、信号量、调用)处调用,由跟踪工具实现以收集运行时信息。
+ +主要 ARTI 类:
+AR_CP_OS_APPLICATION:OS-Application 事件AR_CP_OS_TASKSCHEDULER:任务调度事件AR_CP_OS_CAT2DISPATCHER:Cat2 中断分发AR_CP_OS_SERVICECALLS:OS 服务调用AR_CP_OS_SPINLOCK:自旋锁事件| 错误码 | 值 | 描述 |
|---|---|---|
E_OK | 0x00 | 无错误 |
E_OS_ACCESS | 1 | 对对象的访问被拒绝(服务保护) |
E_OS_CALLEVEL | 2 | 错误的 API 调用上下文 |
E_OS_ID | 3 | 无效的对象 ID |
E_OS_LIMIT | 4 | 超出实例/资源限制 |
E_OS_NOFUNC | 5 | 服务不可用(如已终止) |
E_OS_RESOURCE | 6 | 资源正被占用 |
E_OS_STATE | 7 | 状态错误 |
E_OS_VALUE | 8 | 参数值越界 |
E_OS_SERVICEID | 9 | 错误的服务 ID(在错误钩子中) |
E_OS_PARAM_POINTER | 10 | 参数指针无效 |
E_OS_PARAM_VALUE | 11 | 参数值无效 |
E_OS_PROTECTION_MEMORY | 12 | 内存保护违规 |
E_OS_PROTECTION_TIME | 13 | 执行时间超出 |
E_OS_PROTECTION_ARRIVAL | 14 | 到达间隔过短 |
E_OS_PROTECTION_LOCKED | 15 | 锁持有时间超出 |
E_OS_DISABLEDINT | 16 | 中断被禁用时的非法调用 |
E_OS_SYS_ASSERTION | 17 | 系统级断言失败 |
注:值 0-17 是标准错误码;具体值在编译器配置(os_types.h)中定义。
OS 提供以下宏:
+OS_DECLARE_STATIC_ASSERT(name, condition):声明编译时静态断言。OS_STATIC_ASSERT(name, condition):定义编译时静态断言。OS_PARAM_ASSERT(param, condition, errorcode):参数检查宏。OS_INVOKE_ERRORHOOK(errorcode, ...):调用错误钩子(内部宏)。| 类型 | 描述 |
|---|---|
ApplicationType | OS-Application 标识符(uint8)。 |
ApplicationStateType | OS-Application 状态枚举(APPLICATION_ACCESSIBLE, APPLICATION_RESTARTING, APPLICATION_TERMINATED)。 |
ApplicationStateRefType | ApplicationStateType 的引用(用于 GetApplicationState 输出参数)。 |
TrustedFunctionIndexType | 可信函数索引类型。 |
TrustedFunctionParameterRefType | 可信函数参数引用类型。 |
AccessType | OS 对象访问权限枚举(ACCESS, NO_ACCESS)。 |
ObjectAccessType | 对象访问子集枚举。 |
ObjectTypeType | OS 对象类型枚举(OBJECT_TASK, OBJECT_ISR, OBJECT_ALARM, OBJECT_RESOURCE, OBJECT_COUNTER, OBJECT_SCHEDULETABLE, OBJECT_SPINLOCK, OBJECT_IOC)。 |
MemoryStartAddressType | 内存起始地址类型(平台相关)。 |
MemorySizeType | 内存大小类型。 |
ISRType | ISR 标识符(uint32)。 |
ScheduleTableType | 调度表标识符。 |
ScheduleTableStatusType | 调度表状态枚举(SCHEDULETABLE_STOPPED, SCHEDULETABLE_RUNNING, SCHEDULETABLE_NEXT)。 |
ScheduleTableStatusRefType | ScheduleTableStatusType 的引用。 |
ProtectionReturnType | 保护钩子返回值枚举(PRO_IGNORE, PRO_SHUTDOWN, PRO_TERMINATE, PRO_TERMINATETASKISR, PRO_RESTART)。 |
RestartType | 重启类型枚举(RESTART, NO_RESTART)。 |
PhysicalTimeType | 物理时间类型(uint64 或 uint32,平台相关)。 |
CoreIdType | 核 ID 类型(uint32)。 |
SpinlockIdType | 自旋锁 ID 类型。 |
TryToGetSpinlockType | TryToGetSpinlock 返回值枚举(TRYTOGETSPINLOCK_NOSUCCESS, TRYTOGETSPINLOCK_SUCCESS)。 |
IdleModeType | 空闲模式类型(IDLE_NO_HALT, IDLE_HALT)。 |
AreaIdType | 外设区域 ID 类型(用于外设访问 API)。 |
本节列出 OS 提供的所有 API 函数。Service ID 范围为 0x00-0x32(部分为 0x60+)。所有函数均以 C 函数或宏形式提供。
[SWS_Os_00500] ⌈
+Service name:GetApplicationID |
Syntax:ApplicationType GetApplicationID(void) |
Service ID [hex]:0x00 |
| Sync/Async:Synchronous |
| Reentrancy:Reentrant |
| Parameters (in):None |
Return value:ApplicationType — 当前运行 OS-Application 的 ID |
| Description:返回当前正在运行的 OS-Application 的 ID。SC3/SC4 中可用。 |
Available via:Os.h |
⌋(SRS_Os_00030)
+ +[SWS_Os_00519] ⌈
+Service name:GetCurrentApplicationID |
Syntax:ApplicationType GetCurrentApplicationID(void) |
Service ID [hex]:0x01 |
| Sync/Async:Synchronous |
| Reentrancy:Reentrant |
Return value:ApplicationType — 拥有当前任务/ISR 的 OS-Application 的 ID |
| Description:返回拥有当前正在运行任务/ISR 的 OS-Application 的 ID。可从 Cat2 ISR 中调用。SC3/SC4 中可用。 |
⌋
+ +[SWS_Os_00520] ⌈
+Service name:GetISRID |
Syntax:ISRType GetISRID(void) |
Service ID [hex]:0x02 |
| Sync/Async:Synchronous |
| Reentrancy:Reentrant |
Return value:ISRType — 当前正在执行 ISR 的 ID;若非 ISR 上下文,返回 INVALID_ISR |
| Description:返回当前正在执行 Cat2 ISR 的 ID。 |
⌋
+ +主要计数器函数(Service ID 0x04-0x11):
+InitCounter(0x04):初始化计数器(静态)CounterType CounterID(0x05)IncrementCounter(0x06):增加软件计数器GetCounterValue(0x10):读取当前计数值GetElapsedValue(0x11):读取经过的刻度TerminateApplication(0x12):终止 OS-ApplicationAllowAccess(0x13):允许访问重启中的 OS-ApplicationGetApplicationState(0x14):获取 OS-Application 状态EnableInterruptSource(0x31):使能中断源DisableInterruptSource(0x30):禁用中断源ClearPendingInterrupt(0x32):清除中断挂起标志ActivateTaskAsyn(0x33):异步激活任务SetEventAsyn(0x34):异步设置事件GetSpinlock(0x35):获取自旋锁ReleaseSpinlock(0x36):释放自旋锁TryToGetSpinlock(0x37:尝试获取自旋锁OS-Application API(SC3/SC4):
+TerminateApplication(0x12):终止 OS-Application(RESTART/NO_RESTART)AllowAccess(0x13):将状态从 RESTARTING 改为 ACCESSIBLEGetApplicationState(0x14):返回 OS-Application 状态中断源 API:
+EnableInterruptSource(0x31):使能 Cat2 ISR 中断源DisableInterruptSource(0x30):禁用 Cat2 ISR 中断源ClearPendingInterrupt(0x32):清除挂起标志外设访问 API:
+ReadPeripheral8/16/32(0x2a-0x2c):8/16/32 位外设读WritePeripheral8/16/32(0x2b-0x2d):8/16/32 位外设写ModifyPeripheral8/16/32(0x2e-0x30):8/16/32 位外设读改写多核 API:
+GetCoreID(0x10):获取当前核 IDGetNumberOfActivatedCores:获取已激活核数GetActiveApplicationMode:获取应用模式StartCore:启动从核(仅主核)StartNonAutosarCore:启动非 AUTOSAR 核标准 OSEK OS API(SC1-SC4):
+ActivateTask(TaskID):激活任务(优先级或 FIFO)TerminateTask():终止当前任务ChainTask(TaskID):链接到任务(不返回)Schedule():触发重调度GetTaskID()、GetTaskState(TaskID, State*)SetEvent(TaskID, Mask)、ClearEvent(Mask)、GetEvent(TaskID, Mask*)、WaitEvent(Mask)GetResource(ResourceID)、ReleaseResource(ResourceID)SetRelAlarm(AlarmID, Increment, Cycle)、SetAbsAlarm(AlarmID, Start, Cycle)、CancelAlarm(AlarmID)、GetAlarmBase(AlarmID, TickRef)、GetAlarm(AlarmID, TickRef)StartScheduleTableAbs(SchedTabID, Start)、StartScheduleTableRel(SchedTabID, Offset)、StartScheduleTableSynchron(SchedTabID, Value)、StopScheduleTable(SchedTabID)、NextScheduleTable(From, To)、GetScheduleTableStatus(SchedTabID, Status*)、SyncScheduleTable(SchedTabID, Value)DisableAllInterrupts()、EnableAllInterrupts()、SuspendAllInterrupts()、ResumeAllInterrupts()、SuspendOSInterrupts()、ResumeOSInterrupts()CallTrustedFunction(Index, FunctionParams):调用可信函数StartOS(AppMode)、ShutdownOS(Error)IOC API(由 IOC 生成器自动生成,<IocId> 为配置标识符):
IocSend_<IocId>(0x20):事件语义发送IocWrite_<IocId>(0x21):数据语义发送IocSendGroup_<IocId>(0x22):事件语义组发送IocWriteGroup_<IocId>(0x23):数据语义组发送IocReceive_<IocId>(0x22):事件语义接收IocRead_<IocId>(0x23):数据语义接收IocReceiveGroup_<IocId>(0x24):事件语义组接收IocReadGroup_<IocId>(0x25):数据语义组接收IocEmptyQueue_<IocId>(0x26):清空队列IOC 错误码:IOC_E_OK、IOC_E_NOK、IOC_E_LIMIT、IOC_E_LOST_DATA、IOC_E_NO_DATA。
SWFRT API:
+GetCounterValue(CounterID, Value*):原子读取定时器值GetElapsedValue(CounterID, Value, ElapsedValue*):读取经过的刻度TickToTimeConversion(CounterID, ticks, time*):刻度转时间| 回调 | 用途 | 调用时机 |
|---|---|---|
StartupHook() | OS 启动后立即调用 | StartOS() 之后、调度开始之前 |
ShutdownHook(StatusType Error) | OS 关闭前调用 | ShutdownOS() 之后、OS 真正关闭之前 |
ErrorHook(StatusType Error) | 每次 OS 服务返回错误时调用 | 任何 OS API 返回 E_OS_* 错误时 |
ProtectionHook(StatusType Fatalerror) | 保护错误时调用 | 检测到内存/时间/锁违规时 |
PreTaskHook() | 任务进入运行前调用 | 任务上下文切换后 |
PostTaskHook() | 任务离开运行后调用 | 任务上下文切换前 |
本节列出 OS 模块所需的其他模块接口。
+无对其他模块的强制接口依赖。
+ +Det_ReportError(Det.h):开发错误报告。GetCounterValue、EnableTrigger、DisableTrigger、SetTriggerWindow、SetClearTriggerTime、TimeStamp:来自 GPT 驱动(用于 SWFRT)。GetTimeElapsed、GetTimeRemaining、GetCounterState:来自 GPT 驱动。无。
+ +原 OS 规范包含若干序列图,描绘了 OS 服务调用时各对象间的交互。典型序列包括:
+ActivateTask(T1) → OS 检查状态 → 状态切换为 READY → 触发重调度 → 在调度点任务切换至 T1。SetEvent(T2, E1) → T2 状态切换至 READY → 任务 T2 调用 WaitEvent(E1) → 状态切换至 WAITING → 事件被设置后回到 READY。StartScheduleTableRel(ST, offset) → 计数器达到 offset 触发表项 → 到期动作(激活任务/设置事件)。IocSend_<IocId>(data) → 数据写入共享缓冲区 → 接收方调用 IocReceive_<IocId>(out) → 读取数据。StartOS() → 初始化共享内存/IOC → StartCore(core1) → 从核 StartOS() → 同步开始调度。由于序列图主要以图形表示,详细图像请参阅原 PDF 第 9 章。
+ +本章定义 OS 的配置参数及其到容器的分组。10.1 节描述基础规范,10.2 节规定容器结构与参数,10.3 节规定发布信息。
+ +详情参阅 SWS_BSWGeneral 中"10.1 Introduction to configuration specification"章节。
+ +OS 的配置由 Os 顶层容器管理,包含 OsAppMode、OsApplication、OsTask、OsIsr、OsCounter、OsAlarm、OsResource、OsScheduleTable、OsSpinlock、OsIoc 等子容器,以及它们的配置参数。
SWS Item: ECUC_Os_00001
+Module Name:Os |
Post-Build Variant Support:true |
Supported Config Variants:VARIANT-POST-BUILD, VARIANT-PRE-COMPILE |
包含的容器:OsAppMode、OsApplication、OsTask、OsIsr、OsResource、OsCounter、OsAlarm、OsScheduleTable、OsSpinlock、OsIoc、OsAppMode 等。
SWS Item: ECUC_Os_00080
+Container Name:OsAppMode |
Description:应用模式集合。OS 启动时选择一个 AppMode(通过 StartOS(AppMode) 参数)。 |
配置参数:OsAppModeIdentifier(ECUC_Os_00081):模式标识符,类型 EcucIntegerParamDef,范围 0..255。
SWS Item: ECUC_Os_00706
+Container Name:OsApplication |
| Description:OS-Application 容器。包含任务、ISR、计数器、报警、调度表、IOC、内存保护等对象的引用。 |
配置参数:
+OsApplicationIdentifier(ECUC_Os_00010):应用 ID,uint8。OsTrusted(ECUC_Os_00687):是否可信应用,bool。OsApplicationCore(ECUC_Os_00714):多核应用,引用 OsCore。OsApplicationEcucPartitionRef(ECUC_Os_00917):EcuC 分区引用。OsRestartTask(ECUC_Os_00911):OS-Application 重启时激活的任务。OsTrustedApplicationWithProtection(ECUC_Os_00760):可信应用的写保护设置。OsAppModeRef:引用的 AppModes 列表。SWS Item: ECUC_Os_00707
+Container Name:OsTask |
| Description:OS 任务定义。任务为基本或扩展类型(见 §7.1.1)。 |
配置参数:
+OsTaskIdentifier(ECUC_Os_00686):任务 ID,uint16。OsTaskPriority(ECUC_Os_00006):优先级,uint8,0(最低)到 OsTaskMaxPriority(最高)。OsTaskStackSize(ECUC_Os_00109):栈大小,uint32,字节。OsTaskStackUsage:栈使用测量点(用于栈监控)。OsTaskFunctionPointer(ECUC_Os_00685):任务入口函数。OsTaskSchedule(ECUC_Os_00013):调度策略,枚举(FULL/NON)。OsTaskActivation(ECUC_Os_00008):最大激活次数。OsTaskType(ECUC_Os_00009):任务类型(BASIC/EXTENDED)。OsTaskEventRef(ECUC_Os_00192):扩展任务的事件引用。OsTaskResourceRef:资源引用列表。OsTaskTimingProtection:时间保护配置(执行预算、到达间隔、锁时间)。OsTaskMemoryProtection:内存保护配置(栈、读写访问)。OsTaskAutostart(ECUC_Os_00705):自动启动条件。OsTaskAppModeRef:自动启动关联的 AppModes。OsTaskCore:任务绑定核(多核)。SWS Item: ECUC_Os_00708
+Container Name:OsIsr |
| Description:Category 2 ISR 定义(Category 1 ISR 在 MCAL 中实现,不在 OS 容器中)。 |
配置参数:
+OsIsrIdentifier(ECUC_Os_00688):ISR ID,uint16。OsIsrPriority(ECUC_Os_00029):ISR 优先级,uint8(高于所有任务优先级)。OsIsrVector:ISR 向量号(平台相关)。OsIsrFunctionPointer:ISR 入口函数。OsIsrResourceRef:ISR 使用的资源列表。OsIsrTimingProtection:时间保护配置。OsIsrMemoryProtection:内存保护配置。OsIsrCore:ISR 绑定核(多核)。OsIsrCategory:ISR 类别(Cat2)。SWS Item: ECUC_Os_00709
+Container Name:OsCounter |
| Description:计数器定义。可为硬件计数器(由 GPT 驱动支持)或软件计数器(SWFRT)。 |
配置参数:
+OsCounterIdentifier(ECUC_Os_00689):计数器 ID,uint16。OsCounterType(ECUC_Os_00064):计数器类型(HARDWARE/SOFTWARE)。OsCounterTicksPerBase:每个时基的刻度数。OsCounterMinCycle:最小周期。OsCounterMaxAllowedValue:最大允许值。OsCounterDriverIndex:硬件计数器对应的 GPT 通道索引。OsCounterCore:计数器绑定核。OsTimeConstant:用于 SWFRT 的时间常数。SWS Item: ECUC_Os_00710
+Container Name:OsAlarm |
| Description:报警定义。报警绑定到计数器,到期时执行动作(激活任务、设置事件、调用回调、自增计数器)。 |
配置参数:
+OsAlarmIdentifier(ECUC_Os_00690):报警 ID。OsAlarmCounterRef(ECUC_Os_00025):绑定的计数器引用。OsAlarmAction(ECUC_Os_00026):动作类型(ACTIVATE_TASK/SET_EVENT/ALARM_CALLBACK/INCREMENT_COUNTER)。OsAlarmTaskRef、OsAlarmEventRef、OsAlarmCallbackName、OsAlarmIncrementCounterRef:动作的具体目标。OsAlarmAutostart:自动启动配置。SWS Item: ECUC_Os_00711
+Container Name:OsResource |
| Description:OS 资源定义。使用优先级天花板协议。 |
配置参数:
+OsResourceIdentifier(ECUC_Os_00691):资源 ID。OsResourceProperty(ECUC_Os_00012):资源属性(STANDARD/LINKED)。OsResourcePriority(ECUC_Os_00030):资源天花板优先级。OsResourceLinkedResourceRef:链接资源引用(用于 LINKED 类型)。SWS Item: ECUC_Os_00712
+Container Name:OsScheduleTable |
| Description:调度表定义。包含同步配置、持续时间、自动启动配置、到期点列表。 |
配置参数:
+OsScheduleTableIdentifier(ECUC_Os_00692):调度表 ID。OsScheduleTableCounterRef(ECUC_Os_00024):绑定的计数器引用。OsScheduleTableDuration(ECUC_Os_00034):调度表持续时间(刻度)。OsScheduleTableRepeating(ECUC_Os_00035):是否周期重复。OsScheduleTableAutostart(ECUC_Os_00335):自动启动容器。OsScheduleTableExpiryPoint(ECUC_Os_00143):到期点容器列表。OsScheduleTableEventSetting(ECUC_Os_00059):事件设置动作。OsScheduleTableTaskActivation(ECUC_Os_00066):任务激活动作。OsScheduleTblAdjustableExpPoint(ECUC_Os_00077):可调整到期点。包含参数:OsScheduleTableAutostartType(ECUC_Os_00056,ABSOLUTE/RELATIVE/SYNCHRON)、OsScheduleTableStartValue(ECUC_Os_00057)、OsScheduleTableAppModeRef(ECUC_Os_00058)、OsScheduleTblExpPointOffset(ECUC_Os_00062)、OsScheduleTableSetEventRef(ECUC_Os_00060)、OsScheduleTableSetEventTaskRef(ECUC_Os_00061)、OsScheduleTableActivateTaskRef(ECUC_Os_00067)等。
SWS Item: ECUC_Os_00713
+Container Name:OsSpinlock |
| Description:多核自旋锁定义。 |
配置参数:
+OsSpinlockIdentifier(ECUC_Os_00715):自旋锁 ID。OsSpinlockSuccessor:后继自旋锁引用(用于按顺序锁定)。OsSpinlockLockMethod(ECUC_Os_00900):加锁方法(OS/CPU)。SWS Item: ECUC_Os_00729
+Container Name:OsIoc |
| Description:OS-Application 间通信器(IOC)容器定义。 |
配置参数:
+OsIocIdentifier(ECUC_Os_00730):IOC ID。OsIocSenderProperty:发送方属性(属性 + 数据元素)。OsIocReceiverProperty:接收方属性。OsIocBufferLength(ECUC_Os_00755):事件语义的内部缓冲区大小。OsIocDataType:数据类型("data" 或 "event")。SWS Item: ECUC_Os_00715
+Container Name:OsCore |
| Description:AUTOSAR OS 控制的核定义。 |
配置参数:
+OsCoreId(ECUC_Os_00716):核 ID,uint32。OsCoreStartOption:启动选项(AUTOSAR/NONE)。OsCoreHardwareDerivation:硬件派生选项。OS 钩子的启用配置:
+OsHooks(ECUC_Os_00921):包含 OsErrorHook、OsStartupHook、OsShutdownHook、OsPreTaskHook、OsPostTaskHook、OsProtectionHook 等子容器。OsHook*Identifier 和 OsHook*FunctionPointer 参数。内存保护相关配置(SC4):
+OsMemoryRegion(ECUC_Os_00668):内存区域定义。OsMemoryRegionStartAddress(ECUC_Os_00669):起始地址。OsMemoryRegionSize(ECUC_Os_00670):区域大小。OsMemoryRegionAccessType(ECUC_Os_00671):访问权限(READ/WRITE/EXECUTE)。OsApplicationMemoryAccess:OS-Application 的内存区域访问配置。时间保护相关配置(SC4):
+OsTaskTimingProtection、OsIsrTimingProtection:执行时间预算、到达间隔、锁时间监控。OsExecutionBudget:执行时间预算。OsTimeFrame:到达间隔时间框架。OsResourceLockBudget:资源锁时间预算。OsInterruptLockBudget:中断锁时间预算。用于外设访问 API 的区域定义:
+OsPeripheralArea(ECUC_Os_00762):外设区域容器。OsAreaStartAddress(ECUC_Os_00763):起始地址。OsAreaSize(ECUC_Os_00764):大小。OsAreaId(ECUC_Os_00765):区域 ID。栈监控相关配置:
+OsStackMonitoring(ECUC_Os_00756):栈监控容器。OsStackMonitoringMethod(ECUC_Os_00757):栈监控方法(STATIC/DYNAMIC)。OsStackCheck:栈检查点(用于静态监控)。中断源 API 配置:
+OsEnableInterruptSource(ECUC_Os_00770):是否启用中断源 API。OsInterruptSource:中断源容器(ECUC_Os_00771),含 OsInterruptSourceNumber、OsInterruptSourceCategory 等参数。静态溢出检测(栈填充)配置:
+OsStaticOverrunDetection:启用标志。OsStackFillPattern:栈填充模式(默认 0xCC)。OS 发布的发布信息包括:
+Os.h 中的 OS_VERSION、OS_PATCH_VERSION 宏。OS_VENDOR_ID。OS_MODULE_ID。[SWS_Os_00499] ⌈ 这些需求不适用于本规范。 ⌋
+具体涉及 SRS_BSW_* 需求中适用于 AUTOSAR OS 但不由 OS 直接满足的若干项(详见原 PDF 第 264-276 页)。
+ + + + diff --git a/translation_zh-CN/P1_SystemServices/index.html b/translation_zh-CN/P1_SystemServices/index.html index 5910c6b..7254c1c 100644 --- a/translation_zh-CN/P1_SystemServices/index.html +++ b/translation_zh-CN/P1_SystemServices/index.html @@ -12,7 +12,7 @@ @@ -29,7 +29,7 @@11 / 13 篇完成(84.6%)。下一步按编号顺序推进:SWS_OS → TR_TimingAnalysis。
12 / 13 篇完成(92.3%)。下一步:TR_TimingAnalysis。