# 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 等)保持英文。