# EEPROM 驱动需求规范 > **文档标题**: Requirements on EEPROM Driver > **AUTOSAR CP Release**: 4.4.0 > **文档编号**: 192 > **文档类型**: SRS (Software Requirements Specification) --- ## 文档标识 | 项目 | 内容 | |------|------| | Document Title | Requirements on EEPROM Driver | | Document Owner | AUTOSAR | | Document Responsibility | AUTOSAR | | Document Identification No | 192 | | Document Status | Final | | Part of AUTOSAR Standard | Classic Platform | | Part of Standard Release | 4.4.0 | --- ## 文档变更历史 | 日期 | 版本 | 变更者 | 变更描述 | |------|------|--------|----------| | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 编辑性修订 | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 移除过时引用;编辑性修订 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 编辑性修订 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | 按 TPS_standardizationTemplate(TPS_STDT_00078)的形式更新;BSWAndRTE_Features 追溯 | | 2010-09-30 | 3.1.5 | AUTOSAR Administration | 法律免责声明修订 | | 2008-08-13 | 3.1.1 | AUTOSAR Administration | 法律免责声明修订 | | 2007-12-21 | 3.0.1 | AUTOSAR Administration | 文档元信息扩充;小幅排版调整 | | 2007-01-24 | 2.1.15 | AUTOSAR Administration | "用户须知"修订;增加"版本信息" | | 2006-11-28 | 2.1 | AUTOSAR Administration | 法律免责声明修订 | | 2006-05-16 | 2.0 | AUTOSAR Administration | 作为独立文档发布;SRS SPAL V1.0.0 在 Release 2.0 拆分为 12 个独立文档 | | 2005-05-31 | 1.0 | AUTOSAR Administration | 作为 SRS SPAL V1.0.0 的一部分初始发布 | --- ## 目录 1. [文档范围](#1-文档范围) 2. [如何阅读本文档](#2-如何阅读本文档) 3. [缩略语](#3-缩略语) 4. [功能概述](#4-功能概述) 5. [需求追溯](#5-需求追溯) 6. [需求规范](#6-需求规范) - 6.1 [功能性需求](#61-功能性需求) - 6.1.1 [内部 EEPROM 驱动](#611-内部-eeprom-驱动) - 6.1.2 [外部 EEPROM 驱动](#612-外部-eeprom-驱动) - 6.2 [非功能性需求](#62-非功能性需求) 7. [参考文献](#7-参考文献) --- ## 1 文档范围 本文档规定了 EEPROM Driver 模块的需求。 **约束** 基础软件模块需求规范的首要范围是非安全相关系统。因此安全需求被分配为中等优先级。 --- ## 2 如何阅读本文档 每条需求都有一个以"BSW"(代表"Basic Software")为前缀的唯一标识符。对于任何评审注释、备注或问题,请引用此唯一 ID,而非章节号或页码! ### 2.1 使用的约定 - AUTOSAR 文档中需求的表示形式遵循 [5] 中规定的表格格式。 - 需求中使用以下特定语义。 本文档中的关键字 "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY" 和 "OPTIONAL" 需按下述方式解读。 - **MUST**:绝对要求。 - **MUST NOT**:绝对禁止。 - **SHOULD**/**RECOMMENDED**:推荐但有合理理由可忽略。 - **SHOULD NOT**/**NOT RECOMMENDED**:不推荐但有合理理由可接受。 - **MAY**/**OPTIONAL**:可选。 ### 2.2 需求结构 每个模块特定章节包含基础软件模块的简短功能描述。每章中同类需求归类于以下小标题之下(如适用): **功能性需求**: - 配置 - 初始化 - 正常运行 - 关机运行 - 故障运行 - …… **非功能性需求**: - 时序需求 - 资源使用 - 易用性 - 为其他工作包提供的输出 - …… --- ## 3 缩略语 | 缩略语 | 描述 | |--------|------| | CS | Chip select(片选) | | DIO | Digital Input Output(数字输入输出) | | ECU | Electric Control Unit(电子控制单元) | | EOL | End Of Line(下线) | | ICU | Interrupt Capture Unit(中断捕获单元) | | MAL | Microcontroller Abstraction Layer 旧名(已由 MCAL 替代) | | MCAL | Microcontroller Abstraction Layer(微控制器抽象层) | | MCU | Microcontroller Unit(微控制器单元) | | MMU | Memory Management Unit(内存管理单元) | | Master | 控制其他设备(slave)的设备 | | Slave | 完全被 master 设备控制的设备 | | NMI | Non maskable interrupt(不可屏蔽中断) | | OS | Operating System(操作系统) | | PLL | Phase Locked Loop(锁相环) | | PWM | Pulse Width Modulation(脉宽调制) | | RX | Reception(总线通信中的接收) | | SPAL | 本工作组的名称 | | SFR | Special Function Register(特殊功能寄存器) | | RTE | Runtime environment(运行时环境) | | WP | Work Package(工作包) | | 缩写 | 描述 | |------|------| | STD | Standard(标准) | | REQ | Requirement(需求) | | UNINIT | Uninitialized(未初始化) | --- ## 4 功能概述 ### 4.1 内部 EEPROM 驱动 内部 EEPROM 驱动提供初始化以及对内部 EEPROM 读、写、擦的服务。 ### 4.2 外部 EEPROM 驱动 外部 EEPROM 驱动提供初始化以及对外部 EEPROM 读、写、擦的服务。 --- ## 5 需求追溯 | 需求 | 描述 | 满足者 | |------|------|--------| | RS_BRF_01000 | AUTOSAR 架构应将 BSW 组织为硬件无关层和硬件相关层 | SRS_Eep_12053 | | RS_BRF_01008 | AUTOSAR 应将硬件相关层组织为微控制器无关层和微控制器相关层 | SRS_Eep_12053 | | RS_BRF_01080 | AUTOSAR 应允许访问内部和外部外设 | SRS_Eep_12124, SRS_Eep_12164 | | RS_BRF_01136 | AUTOSAR 应支持已配置 BSW 数据在系统启动后才解析的变体 | SRS_Eep_00096, SRS_Eep_12164 | | RS_BRF_01808 | AUTOSAR 非易失存储器处理应支持不同种类的存储器硬件 | SRS_Eep_12051, SRS_Eep_12052 | | RS_BRF_01928 | AUTOSAR 微控制器抽象应提供对非易失存储器硬件的访问 | SRS_Eep_00087~00095, SRS_Eep_12047, SRS_Eep_12050, SRS_Eep_12072, SRS_Eep_12091, SRS_Eep_12156, SRS_Eep_12157 | --- ## 6 需求规范 ### 6.1 功能性需求 #### 6.1.1 内部 EEPROM 驱动 ##### 6.1.1.1 配置 ###### 6.1.1.1.1 [SRS_Eep_00096] EEPROM 驱动应静态配置 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动的以下常量应可静态配置:
1. EEPROM 基地址
2. EEPROM 大小(可等于或小于物理 EEPROM 大小)
3. 作业处理函数内处理的最大块大小(写、擦)
4. 普通模式和快速模式 EEPROM 下作业处理函数内处理的最大读块大小
5. 读、写、擦周期作业处理函数的调用周期 | | 理由 | 基本配置 | | 用例 | 第 5 项:当 EEPROM 硬件不提供该时序和/或需要截止时间检查时所需 | | 依赖 | [SRS_Eep_12072] 作业处理 – 快速模式;[SRS_Eep_12157] 作业处理 – 普通模式 | | 支持材料 | -- | ⌋(RS_BRF_01136) ###### 6.1.1.1.2 [SRS_Eep_12071] EEPROM 属性应被发布 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动描述应发布以下 EEPROM 属性:
- EEPROM 总物理大小
- 已擦除 EEPROM 单元的值
- 一个 EEPROM 单元的大小(如 8bit、16bit 等)
- 物理内存分段(最小可写/可读/可擦单元) | | 理由 | 用于配置上层模块 | | 用例 | -- | | 依赖 | -- | | 支持材料 | -- | ⌋() ##### 6.1.1.2 正常运行 ###### 6.1.1.2.1 [SRS_Eep_00087] EEPROM 驱动应提供异步读功能 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动应提供异步读功能,从内部 EEPROM 中所请求的 EEPROM 地址开始按所传入的长度读取数据块。EEPROM 驱动应提供按字节的数据读访问。 | | 理由 | 基本功能 | | 用例 | -- | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.2 [SRS_Eep_00088] EEPROM 驱动应提供异步写功能 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动应提供异步写功能,从所请求的 EEPROM 地址开始按所传入的长度向内部 EEPROM 写入数据块。

如果被寻址的 EEPROM 单元非空,在执行写命令前应自动执行擦除操作。

如果可擦块与写请求不对齐,驱动应缓存并重写块中受影响的额外数据。

EEPROM 驱动应提供按字节的数据写访问。 | | 理由 | 基本功能 | | 用例 | -- | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.3 [SRS_Eep_00089] EEPROM 驱动应提供异步擦除功能 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动应提供异步擦除功能,从所请求的 EEPROM 地址开始按所传入的长度擦除内部 EEPROM 中的数据块。

如果可擦块与擦除请求不对齐,驱动应缓存并重写块中受影响的额外数据。

EEPROM 驱动应内部选择最佳擦除策略。例如,如果 EEPROM 硬件支持块擦除命令且要擦除的数据块边界适合物理可擦块时,使用块擦除命令。 | | 理由 | 对于某些 EEPROM 类型,已擦除的 EEPROM 可被更快地编程。 | | 用例 | - ECU 生产与快速 EOL 编程
- 快速保存崩溃数据
- 确保数据确实已擦除 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.4 [SRS_Eep_12091] EEPROM 驱动应提供异步比较功能 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动应提供异步比较功能,按所传入的长度比较内存中的一段与 EEPROM 中的一段。

EEPROM 驱动应提供按字节的数据比较访问。 | | 理由 | 基本功能 | | 用例 | 热复位后比较完整块可以加快系统恢复。该函数也可用于在写入 EEPROM 后验证完整数据块。 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.5 [SRS_Eep_00090] EEPROM 驱动应提供同步取消功能 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动应提供同步取消函数,停止当前处理的作业。受影响 EEPROM 单元的状态和数据是未定义的!EEPROM 驱动和控制器本身应为有效作业做好准备。 | | 理由 | 紧急写命令可在无任何延迟下执行 | | 用例 | 检测到车辆碰撞时写入碰撞相关数据 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.6 [SRS_Eep_00091] EEPROM 驱动应提供返回作业处理状态的同步函数 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动应提供返回作业处理状态的同步函数。 | | 理由 | 检查 EEPROM 驱动是否忙 | | 用例 | 仅示例(将在 API 定义中规定):
- 复位后及成功初始化前,RW 状态为 UNINIT。
- 成功初始化后,RW 状态为 READY。
- 作业处理期间,RW 状态为 BUSY。
- 取消作业后,RW 状态为 READY。
- 检测到错误后,RW 状态为相关 ERROR_xxx 状态。 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.7 [SRS_Eep_12156] EEPROM 驱动应提供同步选择功能 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动应提供同步函数,允许在普通和快速 EEPROM 访问之间切换操作模式。 | | 理由 | ECU 启动期间快速读取操作,ECU 关机期间快速写入操作,正常 ECU 模式期间"协作式"操作 | | 用例 | -- | | 依赖 | [SRS_Eep_12072], [SRS_Eep_12157], [SRS_Eep_12124] | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.8 [SRS_Eep_00092] 仅当受影响可擦块的至少一个数据值与要写入的数据值不同时,EEPROM 驱动才应写入数据 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | 仅当 EEPROM 中受影响可擦块的至少一个数据值与要写入的数据值不同时,EEPROM 驱动才应写入数据。

此功能应可静态配置(开/关)。 | | 理由 | 仅在必要时进行擦除和写入循环。从而延长 EEPROM 的寿命。 | | 用例 | 值"0x45"将被写入 EEPROM 单元。该 EEPROM 单元已包含此值。 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.9 [SRS_Eep_00094] EEPROM 驱动应处理 EEPROM 内存分段 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动应处理 EEPROM 内存分段。EEPROM 驱动的读、写、擦和比较函数应在必要时使用读-修改-写操作解决物理 EEPROM 块大小和段边界。 | | 理由 | 不同 EEPROM 类型的 API 行为相同。EEPROM 驱动知道处理和解决分段的最有效方式。 | | 用例 | -- | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.10 [SRS_Eep_00095] EEPROM 驱动一次只应处理一个作业 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动一次只应处理一个作业(读、写、擦或比较)。运行中作业期间请求的作业应被拒绝并作为错误处理。

此错误检测应可静态配置(开/关)。

进一步说明:调用函数负责作业的缓存和排队,而非 EEPROM 驱动。 | | 理由 | 不同的操作(读、写、擦、比较)不能同时处理,且结果依赖于执行顺序。 | | 用例 | -- | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.11 [SRS_Eep_12047] EEPROM 驱动应提供必须为作业处理而调用的函数 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动应提供必须为作业处理而调用的函数。所有作业处理应在此函数内完成。

如果硬件支持,此函数可从中断调用。否则,应由专门的模块处理此函数。 | | 理由 | 允许作业处理的灵活可能性。满足 OS 独立性需求。 | | 用例 | 示例:作业处理函数每 10ms 被调用一次。 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.12 [SRS_Eep_12157] 在普通模式下,EEPROM 驱动作业处理函数的一个周期应将从 EEPROM 读取的块大小限制为已配置的默认块大小 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | 在普通模式下,EEPROM 驱动作业处理函数的一个周期应将从 EEPROM 读取的块大小限制为已配置的默认块大小。

简化说明:作业处理函数的一次调用中仅读取少量字节。 | | 理由 | EEPROM 驱动在正常操作模式下的协作式、非阻塞调度。 | | 用例 | 示例:在普通 EEPROM 模式下,读取数据的最大块大小为 16。在快速 EEPROM 模式下,读取数据的最大块大小为 128。 | | 依赖 | [SRS_Eep_00096], [SRS_Eep_12156] | | 支持材料 | -- | ⌋(RS_BRF_01928) ###### 6.1.1.2.13 [SRS_Eep_12072] 在快速模式下,EEPROM 驱动作业处理函数的一个周期应将从 EEPROM 读取的块大小限制为已配置的最大块大小 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | 在快速模式下,EEPROM 驱动作业处理函数的一个周期应将从 EEPROM 读取的块大小限制为已配置的最大块大小。

简化说明:作业处理函数的一次调用中读取大块数据。 | | 理由 | 允许在 ECU 启动期间快速读取和检查 EEPROM | | 用例 | 示例:在普通 EEPROM 模式下,读取数据的最大块大小为 16。在快速 EEPROM 模式下,读取数据的最大块大小为 128。 | | 依赖 | [SRS_Eep_00096], [SRS_Eep_12156] | | 支持材料 | -- | ⌋(RS_BRF_01928) #### 6.1.2 外部 EEPROM 驱动 ##### 6.1.2.1 通用 ###### 6.1.2.1.1 [SRS_Eep_12051] 外部和内部 EEPROM 驱动应适用相同的需求 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | 对于外部 EEPROM 驱动,应适用与内部 EEPROM 驱动相同的需求。 | | 理由 | 内部和外部 EEPROM 之间无功能差异。保持相同的功能范围。 | | 用例 | STAR12 具有内部 EEPROM。NEC V850 需要外部 EEPROM。两种微控制器上应使用相同的 NVRAM Manager。 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01808) ##### 6.1.2.2 配置 ###### 6.1.2.2.1 [SRS_Eep_12164] 外部 SPI EEPROM 驱动应允许静态配置所需的 SPI 参数 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | 外部 SPI EEPROM 驱动应允许静态配置所需的 SPI 参数。这些参数由 SPI Handler 规范指定。 | | 理由 | SPI 访问的基本配置 | | 用例 | 在同一 SPI 总线上同时使用 SPI EEPROM 驱动与其他 SPI 设备驱动。 | | 依赖 | [SRS_Eep_00096] EEPROM 驱动静态配置 | | 支持材料 | AUTOSAR SWS SPI Handler | ⌋(RS_BRF_01080, RS_BRF_01136) ##### 6.1.2.3 正常运行 ###### 6.1.2.3.1 [SRS_Eep_12124] 外部 SPI EEPROM 设备的 EEPROM 驱动应根据当前 EEPROM 模式访问 SPI ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | 外部 SPI EEPROM 设备的 EEPROM 驱动应根据当前 EEPROM 模式访问 SPI:
- 普通 EEPROM 模式:具有单字节/字模式的 SPI 通道
- 快速 EEPROM 模式:具有突发模式的 SPI 通道 | | 理由 | ECU 启动期间快速读取操作,正常操作期间非阻塞 SPI 使用 | | 用例 | 外部 SPI EEPROM,SPI 波特率 500kbaud。

ECU 启动期间,EEPROM 以突发模式运行以减少启动时间。EEPROM 访问(32 字节+头部)阻塞 SPI 总线约 560µs。

正常运行期间,EEPROM 以普通模式运行,以便 EEPROM 驱动的 SPI 总线访问不会阻塞优先级更高的通信请求。 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01080) ### 6.2 非功能性需求 #### 6.2.1 内部 EEPROM 驱动 ##### 6.2.1.1 [SRS_Eep_12050] EEPROM 驱动的作业处理函数应仅处理 EEPROM 硬件可处理的数据量 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | EEPROM 驱动的作业处理函数应仅处理 EEPROM 硬件在一步内可处理的数据(特别是写操作),或仅处理已定义的用户上限的数据量(特别是读操作)。 | | 理由 | 最小化处理器负载,减少阻塞时间。 | | 用例 | 作业处理函数在一次调用中执行一个字节的写入和最多 8 字节的读取。 | | 依赖 | [SRS_Eep_12157] 作业处理 – 普通模式 | | 支持材料 | -- | ⌋(RS_BRF_01928) #### 6.2.2 外部 EEPROM 驱动 ##### 6.2.2.1 [SRS_Eep_12052] 外部 EEPROM 驱动应与内部 EEPROM 驱动具有语义相同的 API ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | 外部 EEPROM 驱动应与内部 EEPROM 驱动具有语义相同的 API。 | | 理由 | 简化内存抽象。保持内部和外部 EEPROM 的处理类似。 | | 用例 | STAR12 具有内部 EEPROM。NEC V850 需要外部 EEPROM。两种微控制器上应使用相同的 NVRAM Manager。 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01808) ##### 6.2.2.2 [SRS_Eep_12053] 外部 EEPROM 驱动的源代码应与底层微控制器无关 ⌈ | 字段 | 内容 | |------|------| | 类型 | Valid | | 描述 | 外部 EEPROM 驱动的源代码应与底层微控制器无关。 | | 理由 | 在多个微控制器上重用外部 EEPROM 驱动 | | 用例 | SPI EEPROM 设备的同一外部 EEPROM 驱动可以无任何修改地在 NEC V850 和 MPC563 上使用,通过标准化的 SPI Handler 接口。 | | 依赖 | -- | | 支持材料 | -- | ⌋(RS_BRF_01008, RS_BRF_01000) --- ## 7 参考文献 ### 7.1 AUTOSAR 交付物 [1] List of Basic Software Modules AUTOSAR_TR_BSWModuleList.pdf [2] Layered Software Architecture AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf [3] General Requirements on Basic Software Modules AUTOSAR_SRS_BSWGeneral.pdf [4] General Requirements on SPAL AUTOSAR_SRS_SPALGeneral.pdf [5] Software Standardization Template AUTOSAR_TPS_StandardizationTemplate.pdf --- ## 翻译说明 - 本文档完整翻译自 AUTOSAR_SRS_EEPROMDriver v4.4.0(Document ID 192)。 - 保留所有需求 ID(SRS_Eep_xxxxx、RS_BRF_xxxxx)。 - 保留 AUTOSAR 方框符 ⌈⌋。 - 模块缩写(Eep、SPI、ECU 等)保持英文。