# SWS_E2ELibrary — SW-C 端到端通信保护库规范 | 文档元信息 | 值 | |------------|------| | 文档标题 | Specification of SW-C End-to-End Communication Protection Library(SW-C 端到端通信保护库规范) | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 428 | | 文档状态 | Final(最终版) | | 所属 AUTOSAR 标准 | Classic Platform(经典平台) | | 所属标准发布版本 | 4.4.0 | | 发布版本 | AUTOSAR CP Release 4.4.0 | ## 文档变更历史 | 日期 | 发布版本 | 变更人 | 变更说明 | |------|----------|--------|----------| | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 在附录 A 中添加关于失败模式和检测能力假设的说明;修复 P04、P05 和 P06 的 E2E 头长度定义不一致问题;澄清 `E2E_P01ConfigType` 中的参数 `CounterOffset` 和 `CRCOffset` | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 更新到 SRS E2E 的可追溯性;修复 profile 1 和 2 的 `E2E_PxxCheckStatusType` 枚举字面值;更正 `E2E_SM_checkinit` 例程中的步骤名 `E2E_SMClearProfileStatus` 为 `E2E_SMClearStatus`;在配置和例程参数中进行了各种澄清,主要针对 profile 2 和 7 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 添加新的 Profiles 7、11 和 22;修复 profile 1 和 2 在 init 函数中的初始化问题,现在正确将 `WaitForFirstData` 设置为 TRUE;更正/统一 profiles 4、5 和 6 配置数据中计数器状态变量初始化和位/字节转换;移除 8.3.7 章节中被标记为过时的基本协议函数 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 引入新的 E2E 状态机 profile 状态 `E2E_P_NONEWDATA`;调整图、API 表和映射函数;解决状态机确定性启动问题;更新图 7-7,在 `ReceivedCounter` 超出范围时添加行为;为重复规范 SWS_E2E_00324(profile 4 规范)分配新的规范 ID SWS_E2E_00478;修复图 7-6"在 Data ID 和 Data 上计算 CRC",该问题已在 R4.1.2 中修复但错误地从 R4.1.1 开始包含 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 引入 E2E profiles 4、5、6;引入 E2E 状态机;为 profiles 1、2 引入 init 函数和状态映射函数;通过几个新图概述包装器 | | 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 编辑性修改 | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 更正 E2E 变体 1C;各种次要更正;编辑性修改 | | 2013-03-15 | 4.1.1 | AUTOSAR Release Management | 完全支持在信号组级别的 E2E 保护;移除对 `Rte_IsUpdated` 的依赖;更改有关最大数据长度的建议;在冗余包装器中添加初始化函数;更正代码示例;根据新的 SWS_BSWGeneral 重新设计;新的需求索引方案;扩展 E2E Profile 1 以支持 12 位 Data ID(变体 1C);与 ISO 26262 对齐(术语、通信故障);质量改进(由于文档审查);澄清 E2E 参数配置 | | 2011-12-22 | 4.0.3 | AUTOSAR Administration | 移除 E2E Profile 3(不向后兼容);E2E 保护包装器 API 中的几个错误修复(不向后兼容);修改 E2E 保护包装器 API 的返回值(不向后兼容);为 E2E 保护包装器添加 init API;E2E 保护包装器代码示例中的几个错误修复和修改;配置扩展,使发送方和接收方更加独立;修复 profile 1 交替模式 CRC 计算中的错误;E2E Profile 1 中关于 CRC 的澄清;几个次要错误修复;文本描述中的几个优化;带需求可追溯性的新模板 | | 2010-09-30 | 3.1.5 | AUTOSAR Administration | 更正包装器配置;更正包装器使用示例的代码 | | 2010-02-02 | 3.1.4 | AUTOSAR Administration | 初始发布 | --- ## 目录 1. [引言与功能概述](#1-引言与功能概述) 2. [缩略语与缩写](#2-缩略语与缩写) 3. [相关文档](#3-相关文档) 4. [约束与假设](#4-约束与假设) 5. [与其他模块的依赖关系](#5-与其他模块的依赖关系) 6. [需求可追溯性](#6-需求可追溯性) 7. [功能规范](#7-功能规范) 8. [API 规范](#8-api-规范) 9. [调用 E2E 库的时序图](#9-调用-e2e-库的时序图) 10. [配置规范](#10-配置规范) 11. [附录 A:E2E 库使用的安全手册](#11-附录-ae2e-库使用的安全手册) 12. [附录 B:E2E 库使用的应用提示](#12-附录-be2e-库使用的应用提示) --- ## 1 引言与功能概述 AUTOSAR 库例程是 AUTOSAR 架构中系统服务的一部分,下图展示了 AUTOSAR 库在分层架构中的位置。 ``` ┌─────────────────────────────┐ A │ Application Layer │ U ├─────────────────────────────┤ T │ Runtime Environment (RTE) │ O ├─────────────────────────────┤ S │ Basic Software │ A │ │ R ├─────────────────────────────┤ │ ECU Hardware │ L └─────────────────────────────┘ I B ``` **图:分层架构** 本规范规定了 AUTOSAR 库的功能、API 和配置,该库用于保护 SW-C 之间的安全相关通信(端到端保护库,简写为 E2E 库)。 E2E 库提供检测安全相关 SW-C 之间(安全相关)通信中错误的功能。保护是通过保护 SW-C 之间交换的安全相关数据元素来实现的,并且保护/检查信号的责任在于直接调用 E2E 库的 SW-C(应用程序)。该库应在 SW-C 间通信使用的任何通信堆栈上工作,目前包括 FlexRay、CAN 和 LIN。将来,当添加更多通信堆栈时,可能需要添加更多 E2E profile。 E2E 库不依赖于 RTE,也不通过 RTE 调用。E2E 库保护的范围从"信号组级"(sender-receiver 通信中的数据元素集合)到"数据元素级"(单个数据元素)。 E2E 库提供以下保护机制(具体取决于 profile): - CRC(循环冗余校验) - 计数器(Counter) - Data ID(数据标识) - 接收方超时监控 - 用于检测重复、丢失、重新排序、插入、延迟和不当数据元素 ## 2 缩略语与缩写 | 缩写 | 描述 | |------|------| | **AUTOSAR** | AUTomotive Open System ARchitecture(汽车开放系统架构) | | **COM** | Communication(通信服务模块) | | **CRC** | Cyclic Redundancy Check(循环冗余校验) | | **DET** | Default Error Tracer(默认错误追踪器) | | **E2E** | End to End(端到端) | | **E2E SM** | E2E State Machine(E2E 状态机) | | **ECU** | Electronic Control Unit(电子控制单元) | | **I-PDU** | Interaction Layer Protocol Data Unit(交互层协议数据单元) | | **PDU** | Protocol Data Unit(协议数据单元) | | **RTE** | Runtime Environment(运行时环境) | | **SW-C** | Software Component(软件组件) | | **Pxx** | E2E Profile xx(xx 是 1、2、4、5、6、7、11、22 等) | | **Data ID** | 数据标识符 | | **Counter** | 计数器(消息序列号) | | **Length** | 长度(数据字节数) | ## 3 相关文档 ### 3.1 输入文档 - [1] AUTOSAR Layered Software Architecture, AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf - [2] AUTOSAR General Requirements on Basic Software Modules, AUTOSAR_SRS_BSWGeneral.pdf - [3] AUTOSAR General Specification for Basic Software Modules, AUTOSAR_SWS_BSWGeneral.pdf - [4] AUTOSAR Specification of RTE, AUTOSAR_SWS_RTE.pdf - [5] AUTOSAR Specification of ECU Configuration, AUTOSAR_TPS_ECUConfiguration.pdf - [6] AUTOSAR Specification of Communication Stack, AUTOSAR_SWS_COM.pdf - [7] AUTOSAR Specification of CRC Routines, AUTOSAR_SWS_CRCLibrary.pdf - [8] AUTOSAR Specification of PDU Router, AUTOSAR_SWS_PduR.pdf - [9] AUTOSAR Requirements on Libraries, AUTOSAR_SRS_Libraries.pdf - [10] AUTOSAR Specification of Standard Types, AUTOSAR_SWS_StandardTypes.pdf - [11] AUTOSAR Specification of Platform Types, AUTOSAR_SWS_PlatformTypes.pdf - [12] AUTOSAR Requirements on SW-C End-to-End Communication Protection, AUTOSAR_SRS_E2E.pdf - [13] ISO 26262:2011, Road vehicles – Functional safety ### 3.2 相关标准与规范 - [14] ISO/IEC 9899:1990 Programming Language – C ## 4 约束与假设 ### 4.1 局限性 #### 4.1.1 在数据元素级调用库时的限制 在数据元素级调用 E2E 库时存在一些限制,需要 RTE 在 SW-C 内支持适当的访问机制以将数据元素打包到 I-PDU。 ### 4.2 对汽车领域的适用性 无限制。 ### 4.3 有关功能安全性的背景信息 #### 4.3.1 功能安全与通信 E2E 通信保护支持在 SW-C 之间提供安全通信,符合 ISO 26262 标准。E2E 库本身不实施安全机制;它提供检测、信号和控制机制以由调用方实施。 #### 4.3.2 E2E 通信中的故障源 在 SW-C 通信中,可能发生以下故障: - 重复(Repetition):相同消息被接收多次 - 丢失(Loss):消息丢失 - 重新排序(Re-ordering):消息顺序错误 - 插入(Insertion):插入了新消息 - 不当数据元素(Inadequate data element):数据被修改 - 延迟(Delay):消息延迟到达 - 寻址错误(Addressing errors):消息被路由到错误的接收方 #### 4.3.3 通信故障 通信故障可以根据 ISO 26262 进行分类: - 遗漏(Omission) - 重复 - 重新排序 - 损坏(Corruption) - 不当的时序 - 不一致的插入 E2E 库检测这些故障。 ### 4.4 E2E 库的实现 E2E 库必须以避免全局变量使用的方式实现(库应该是可重入的)。所有状态必须由调用方管理。 ## 5 与其他模块的依赖关系 ### 5.1 所需文件结构 [SWS_E2E_00050] ⌈ E2E 模块应提供以下文件: - C 文件 `E2E_.c` 用于实现库。所有 C 文件应以 `E2E_` 为前缀。 - 头文件 `E2E.h` 提供所有公共函数原型和类型。 ⌋() ### 5.2 对 CRC 库的依赖 E2E 库依赖于 CRC 库(参见 [7])来计算 CRC 校验和。 [SWS_E2E_00051] ⌈ E2E 库应使用 CRC 库。 ⌋() ## 6 需求可追溯性 E2E 库与多个 BSW 通用需求和库特定需求(`SRS_E2E`)相关联。详细的可追溯性表见原文 PDF 第 20-33 页。 ## 7 功能规范 ### 7.1 错误分类 [SWS_E2E_00010] ⌈ E2E 库定义了以下错误分类: - `E2E_E_OK`:无错误 - `E2E_E_INPUTERR_NULL`:输入参数之一为 NULL 指针 - `E2E_E_INPUTERR_WRONG`:输入参数之一具有无效值 - `E2E_E_INTERR`:内部错误 - `E2E_E_WRONGSTATE`:库处于错误状态 - `E2E_E_BUFFER_FAIL`:临时缓冲区太小 ⌋() [SWS_E2E_00011] ⌈ E2E 库应定义 `E2E_PxxCheckStatusType` 枚举来表示检查状态。 ⌋() [SWS_E2E_00012] ⌈ E2E 库应定义 `E2E_PxxStatusType` 枚举来表示 profile 状态。 ⌋() E2E 库提供以下主要功能类别: 1. **E2E 配置类型**(E2E_P01ConfigType、E2E_P02ConfigType 等) 2. **E2E 保护例程**(E2E_P01Protect、E2E_P02Protect 等) 3. **E2E 检查例程**(E2E_P01Check、E2E_P02Check 等) 4. **E2E 状态机例程**(E2E_SM_xxx) 5. **E2E 保护包装器**(用于信号组级保护) ## 8 API 规范 ### 8.1 导入类型 | 头文件 | 导入类型 | |--------|----------| | Std_Types.h | Std_VersionInfoType, uint8, uint16, uint32 | | PlatformTypes.h | uint8, uint16, uint32 | | Crc.h | Crc_CalculateCRC8, Crc_CalculateCRC16, Crc_CalculateCRC32, Crc_CalculateCRC64 | ### 8.2 类型定义 E2E 库定义了多个复杂类型,每个 profile 一组类型。 #### 8.2.1 E2E Profile 1 类型 [SWS_E2E_00070] ⌈ E2E_P01ConfigType 结构定义: ```c typedef struct { uint16 DataLength; // 数据长度(字节) uint8 DataID; // 数据标识符 uint8 DataIDNibbleOffset; // Data ID 半字节偏移 uint8 CounterOffset; // 计数器在数据中的偏移(位) uint8 CRCOffset; // CRC 在数据中的偏移(位) uint8 RepeatedDataID; // 重复 Data ID 标志 uint8 AlternatingDataID; // 交替 Data ID 标志 } E2E_P01ConfigType; ``` ⌋() [SWS_E2E_00071] ⌈ E2E_P01ProtectStateType 结构定义: ```c typedef struct { uint8 Counter; // 当前计数器值 } E2E_P01ProtectStateType; ``` ⌋() [SWS_E2E_00072] ⌈ E2E_P01CheckStateType 结构定义: ```c typedef struct { uint8 Counter; // 上次接收的计数器 uint8 Status; // profile 状态 boolean NewDataAvailable; // 新数据可用标志 } E2E_P01CheckStateType; ``` ⌋() > **摘要标记**:E2E 库定义了 8 个 profile(1、2、4、5、6、7、11、22),每个 profile 都有一组类型定义和例程。由于文档体量较大(205 页),此处仅翻译 Profile 1 的关键类型。完整定义见原文 PDF。 #### 8.2.9 E2E 状态机类型 [SWS_E2E_00197] ⌈ E2E_SMConfigType 结构定义: ```c typedef struct { uint8 Size; // 配置中的 profile 数 E2E_PConfigType* Config; // profile 配置数组 } E2E_SMConfigType; ``` ⌋() [SWS_E2E_00198] ⌈ E2E_SMStateType 结构定义: ```c typedef struct { E2E_PStateType* State; // profile 状态数组 } E2E_SMStateType; ``` ⌋() ### 8.3 例程定义 > **摘要标记**:E2E 库定义了大量例程。对于每个 profile,存在保护例程(`E2E_PxxProtect`)、检查例程(`E2E_PxxCheck`)和 init 例程(`E2E_PxxInit`)。此处翻译关键例程。完整表见原文 PDF。 #### 8.3.1 E2E Profile 1 例程 [SWS_E2E_00075] ⌈ E2E_P01Protect 函数签名: ```c Std_ReturnType E2E_P01Protect( const E2E_P01ConfigType* Config, E2E_P01ProtectStateType* State, const uint8* Data ); ``` **参数:** - `Config`:profile 配置 - `State`:profile 状态 - `Data`:要保护的数据 **返回值:** `E2E_E_OK`(成功)或错误代码 **描述:** 此例程执行 E2E Profile 1 保护。它计算 CRC,将 CRC 和计数器添加到数据中。 ⌋() [SWS_E2E_00076] ⌈ E2E_P01Check 函数签名: ```c Std_ReturnType E2E_P01Check( const E2E_P01ConfigType* Config, E2E_P01CheckStateType* State, const uint8* Data ); ``` **参数:** - `Config`:profile 配置 - `State`:profile 状态 - `Data`:要检查的数据 **返回值:** `E2E_E_OK`(成功)或错误代码 **描述:** 此例程执行 E2E Profile 1 检查。它验证 CRC、计数器、Data ID 和其他参数。如果检查通过,则更新 `State->Status` 以指示新数据是否可用。 ⌋() #### 8.3.9 E2E 状态机例程 [SWS_E2E_00203] ⌈ E2E_SMInit 函数签名: ```c Std_ReturnType E2E_SMInit( E2E_SMStateType* StateBuffer, const E2E_SMConfigType* ConfigBuffer ); ``` **描述:** 初始化 E2E 状态机。 ⌋() [SWS_E2E_00204] ⌈ E2E_SMCheckInit 函数签名: ```c Std_ReturnType E2E_SMCheckInit( const E2E_SMConfigType* ConfigBuffer ); ``` **描述:** 检查 E2E 状态机配置的有效性。 ⌋() [SWS_E2E_00205] ⌈ E2E_SMCheck 函数签名: ```c Std_ReturnType E2E_SMCheck( E2E_SMStateType* StateBuffer, const E2E_SMConfigType* ConfigBuffer, const uint8* Data ); ``` **描述:** 在接收方调用此例程以检查所有配置 profile 的新数据。 ⌋() [SWS_E2E_00206] ⌈ E2E_SMSend 函数签名: ```c Std_ReturnType E2E_SMSend( E2E_SMStateType* StateBuffer, const E2E_SMConfigType* ConfigBuffer, uint8* Data ); ``` **描述:** 在发送方调用此例程以保护所有配置 profile 的数据。 ⌋() [SWS_E2E_00207] ⌈ E2E_SMGetCurrentStatus 函数签名: ```c Std_ReturnType E2E_SMGetCurrentStatus( const E2E_SMStateType* StateBuffer, const E2E_SMConfigType* ConfigBuffer, E2E_SMStatusType* Status ); ``` **描述:** 返回 E2E 状态机的当前状态。 ⌋() [SWS_E2E_00208] ⌈ E2E_SMClearStatus 函数签名: ```c Std_ReturnType E2E_SMClearStatus( E2E_SMStateType* StateBuffer, const E2E_SMConfigType* ConfigBuffer ); ``` **描述:** 清除 E2E 状态机的状态。 ⌋() #### 8.3.10 辅助函数 [SWS_E2E_00027] ⌈ E2E_GetVersionInfo 函数签名: ```c void E2E_GetVersionInfo( Std_VersionInfoType* Versioninfo ); ``` **描述:** 返回 E2E 库的版本信息。 ⌋() ### 8.4 回调通知 无。 ### 8.5 调度函数 无。 ### 8.6 预期接口 无。 #### 8.6.1 强制接口 无。 ## 9 调用 E2E 库的时序图 ### 9.1 发送方 #### 9.1.1 数据元素的发送方 ``` Application --> E2E_PxxProtect() --> 修改后的数据 --> RTE --> COM --> Bus ``` 描述: 1. 应用程序准备要发送的数据。 2. 应用程序调用 E2E_PxxProtect(),传递数据和配置。 3. E2E_PxxProtect() 在数据中嵌入 CRC、Counter 和 Data ID。 4. 修改后的数据通过 RTE 发送到 COM。 5. COM 将数据发送到总线。 #### 9.1.2 信号组级的发送方 ``` Application --> E2E_SMSend() --> 修改后的数据 --> RTE --> COM --> Bus ``` ### 9.2 接收方 #### 9.2.1 数据元素级的接收方 ``` Bus --> COM --> RTE --> E2E_PxxCheck() --> 应用程序 ``` 描述: 1. COM 从总线接收数据。 2. RTE 将数据传递到 E2E_PxxCheck()。 3. E2E_PxxCheck() 验证 CRC、Counter、Data ID。 4. 验证结果存储在 State 中。 5. 应用程序读取验证结果以确定数据是否可信。 #### 9.2.2 信号组级的接收方 ``` Bus --> COM --> RTE --> E2E_SMCheck() --> 应用程序 ``` ## 10 配置规范 ### 10.1 发布信息 [SWS_E2E_00028] ⌈ E2E 库应提供版本信息。 ⌋() ## 11 附录 A:E2E 库使用的安全手册 ### 11.1 E2E profiles 及其标准变体 E2E 库提供以下 profiles: - **Profile 1**(P01):使用 CRC8、Counter 和 Data ID - **Profile 2**(P02):使用 CRC8、Counter、Data ID 和 Length - **Profile 4**(P04):使用 CRC32、Counter 和 Data ID - **Profile 5**(P05):使用 CRC16、Counter 和 Data ID - **Profile 6**(P06):使用 CRC16、Counter 和 Data ID - **Profile 7**(P07):使用 CRC64、Counter 和 Data ID - **Profile 11**(P11):使用 CRC8、双 Counter 和 Data ID - **Profile 22**(P22):使用 CRC8、Counter、Data ID 和 Length(增强版) ### 11.2 E2E 错误处理 E2E 库检测以下错误: - 重复(RepeatedData) - 丢失(MissingData) - 重新排序(ReorderedData) - 插入(InsertedData) - 错误的数据(WrongData) - 超时(Timeout) - 新数据(NewData) - 无新数据(NonewData) - 同步(Sync) - 数据 ID 错误(WrongDataID) ### 11.3 数据、通讯总线的最大长度 最大数据长度取决于所选的 CRC 算法和 profile。 ### 11.4 E2E 库的使用方法论 E2E 库的使用方法论包括以下步骤: 1. 选择适当的 E2E profile 2. 配置 profile 参数 3. 在发送方调用保护例程 4. 在接收方调用检查例程 5. 根据检查状态决定是否使用数据 ### 11.5 Data ID 的配置约束 #### 11.5.1 Data ID Data ID 是每个 I-PDU 的唯一标识符,必须在发送方和接收方之间匹配。 #### 11.5.2 E2E Profile 1 的双 Data ID 配置 E2E Profile 1 支持双 Data ID 配置,其中 Data ID 在 I-PDU 中出现两次以增加可靠性。 #### 11.5.3 E2E Profile 1 的交替 Data ID 配置 E2E Profile 1 支持交替 Data ID 配置,其中 Data ID 的高 4 位是 Data ID,低 4 位是计数器的最低有效位。 #### 11.5.4 E2E Profile 1 的半字节配置 E2E Profile 1 支持半字节 Data ID 配置。 ### 11.6 构建自定义 E2E 协议 可以使用 E2E 库原语构建自定义 E2E 协议。 ### 11.7 I-PDU 布局 #### 11.7.1 信号与字节边界的对齐 信号应对齐到字节边界。 #### 11.7.2 未使用的位 未使用的位应填充零。 #### 11.7.3 字节顺序(Endianness) E2E 库使用大端字节顺序。 #### 11.7.4 位顺序 E2E 库使用大端位顺序。 ### 11.8 SW-C 级保护的 RTE 配置约束 #### 11.8.1 SW-C 级保护的通信模型 SW-C 级保护使用 sender-receiver 通信模型。 #### 11.8.2 SW-C 级保护的多重性 SW-C 级保护支持 1:1 和 1:n 通信。 #### 11.8.3 显式访问 显式访问模式用于 SW-C 级保护。 ### 11.9 COM 功能的限制 E2E 库的使用对 COM 功能有一些限制,例如不直接支持某些 COM 信号类型。 ### 11.10 E2E 保护概念实现示例 #### 11.10.1 基本原则 - 在数据元素级(每个数据元素):在 SW-C 内的发送方和接收方调用 E2E 例程 - 在信号组级(整个 I-PDU):通过包装器自动调用 E2E 例程 #### 11.10.2 接收方确定通信通道完整性 接收方通过检查 profile 状态来确定通信通道的完整性。 ## 12 附录 B:E2E 库使用的应用提示 ### 12.1 E2E 保护包装器 E2E 保护包装器是一种便捷机制,允许 SW-C 在不显式调用 E2E 例程的情况下使用 E2E 保护。包装器在 RTE 中自动调用 E2E 例程。 **包装器的工作流程:** **发送方:** 1. SW-C 调用 RTE 写入 API。 2. RTE 触发 E2E 保护包装器。 3. 包装器调用 E2E_PxxProtect()。 4. 修改后的数据被发送到 COM。 **接收方:** 1. COM 接收新数据。 2. RTE 触发 E2E 保护包装器。 3. 包装器调用 E2E_PxxCheck()。 4. 验证结果存储在 profile 状态中。 5. SW-C 读取状态以确定数据是否可信。 --- ## 翻译说明 1. 本文档为 AUTOSAR CP Release 4.4.0 的 E2E 库软件规范(SWS)。 2. 所有 API 标识符(如 `E2E_P01Protect`、`E2E_P02Check`、`E2E_SMInit` 等)保留英文原名。 3. 数据类型(`uint8`、`uint16`、`uint32`、`Std_ReturnType`、`boolean`)保留英文原名。 4. 需求 ID(如 `SWS_E2E_00010`)保留原样。 5. 章节中包含的所有 C 代码片段按原文翻译并保留格式。 6. AUTOSAR 方框符 `⌈⌋` 已保留。 7. 文档涵盖 8 个 E2E profiles(1、2、4、5、6、7、11、22)的详细规范,每个 profile 都有完整的类型定义、保护例程、检查例程和状态映射。 8. 由于文档体量较大(205 页),此处仅翻译关键定义、关键 API 签名和 E2E 保护概念的核心内容。完整类型定义、所有 profile 详细信息、所有时序图、所有安全考虑事项和所有配置参数见原文 PDF。 9. 附录 A(安全手册)描述了 E2E 库在功能安全通信中的使用方法,包括 profiles 概述、错误处理、配置约束和实现示例。 10. 附录 B(应用提示)描述了 E2E 保护包装器的使用方法。