P2 batch translation: 49 PDFs (Memory + Safety + Crypto + ModeManagement + IO)
This commit is contained in:
@@ -0,0 +1,554 @@
|
||||
# EEPROM 抽象规范
|
||||
|
||||
> **文档标题**: Specification of EEPROM Abstraction
|
||||
> **AUTOSAR CP Release**: 4.4.0
|
||||
> **文档编号**: 287
|
||||
> **文档类型**: SWS (Software Specification)
|
||||
|
||||
---
|
||||
|
||||
## 文档标识
|
||||
|
||||
| 项目 | 内容 |
|
||||
|------|------|
|
||||
| Document Title | Specification of EEPROM Abstraction |
|
||||
| Document Owner | AUTOSAR |
|
||||
| Document Responsibility | AUTOSAR |
|
||||
| Document Identification No | 287 |
|
||||
| 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 | 引入运行时错误;在 Ea_InvalidateBlock 和 Ea_EraseImmediateBlock 中设置 MEMIF_BUSY |
|
||||
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 更新请求接受/拒绝及相关错误报告规则;更新追溯信息;主函数范围/限制更改 |
|
||||
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 错误分类重做;调试支持标记为过时;参数范围更正;请求的块无法找到时澄清作业结果 |
|
||||
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 需求与 BSW 特性、通用和模块特定需求关联 |
|
||||
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 编辑性修订 |
|
||||
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 移除模块主函数的时序需求;为 Ea_Write 增加 const 限定符;新增 EaMainFunctionPeriod 配置参数;Fls_GetStatus 在模块未初始化时返回 MEMIF_UNINIT |
|
||||
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 按新的 SWS_BSWGeneral 重做;已发布参数 EaMaximumBlockingTime 弃用;配置参数 EaIndex 弃用 |
|
||||
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 引入参数检查和相应 DET 错误;细化内部管理操作处理;模块短名变更 |
|
||||
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 新增 NULL 指针检查;模块间检查细化;澄清返回值描述 |
|
||||
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 澄清配置变体;通知例程多重性更正;重新表述作业结果处理;文件包含结构变更 |
|
||||
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 法律免责声明修订 |
|
||||
| 2007-12-21 | 3.0.1 | AUTOSAR Administration | EA_MAXIMUM_BLOCKING_TIME 作为已发布参数 |
|
||||
| 2007-01-24 | 2.1.15 | AUTOSAR Administration | 文件包含结构更新;初始化函数 API 适配;EA 块编号范围适配 |
|
||||
| 2006-05-16 | 2.0 | AUTOSAR Administration | 初始版本发布 |
|
||||
|
||||
---
|
||||
|
||||
## 目录
|
||||
|
||||
1. [介绍与功能概述](#1-介绍与功能概述)
|
||||
2. [缩略语](#2-缩略语)
|
||||
3. [相关文档](#3-相关文档)
|
||||
4. [约束与假设](#4-约束与假设)
|
||||
5. [模块依赖](#5-模块依赖)
|
||||
6. [需求追溯](#6-需求追溯)
|
||||
7. [功能规范](#7-功能规范)
|
||||
8. [API 规范](#8-api-规范)
|
||||
9. [时序图](#9-时序图)
|
||||
10. [配置规范](#10-配置规范)
|
||||
11. [不适用需求](#11-不适用需求)
|
||||
|
||||
---
|
||||
|
||||
## 1 介绍与功能概述
|
||||
|
||||
本规范描述 AUTOSAR 基础软件模块 EEPROM Abstraction (EA) 的功能、API 和配置。
|
||||
|
||||
EEPROM Abstraction (EA) 模块抽象 EEPROM 驱动的寻址方案,并为上层提供统一的(虚拟)寻址方案以及虚拟无限的擦/写周期数。
|
||||
|
||||
EA 模块属于 ECU 抽象层,使上层(NVRAM 管理器)与底层 EEPROM 驱动和器件解耦。
|
||||
|
||||
---
|
||||
|
||||
## 2 缩略语
|
||||
|
||||
| 缩略语 | 描述 |
|
||||
|--------|------|
|
||||
| EA | EEPROM Abstraction |
|
||||
| EEPROM | 电可擦可编程只读存储器 |
|
||||
| FEE | Flash EEPROM Emulation |
|
||||
| NV | Non Volatile(非易失) |
|
||||
| NvM | NVRAM Manager |
|
||||
| MemIf | Memory Abstraction Interface |
|
||||
| (Logical) Block(逻辑块) | 模块用户可单独寻址的连续内存区域 |
|
||||
| Page(页) | 一次可写入的最小内存量 |
|
||||
| Sector(扇区) | 一次可擦除的最小内存量 |
|
||||
| Virtual Page(虚拟页) | EA 模块用于内部地址计算的可配置最小寻址单元 |
|
||||
| DEM | Diagnostic Event Manager |
|
||||
| DET | Default Error Tracer |
|
||||
|
||||
---
|
||||
|
||||
## 3 相关文档
|
||||
|
||||
### 3.1 输入文档
|
||||
|
||||
- List of Basic Software Modules — AUTOSAR_TR_BSWModuleList.pdf
|
||||
- Layered Software Architecture — AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
|
||||
- General Requirements on Basic Software Modules — AUTOSAR_SRS_BSWGeneral.pdf
|
||||
- Requirements on Memory Hardware Abstraction Layer — AUTOSAR_SRS_MemoryHWAbstractionLayer.pdf
|
||||
- Specification of EEPROM Driver — AUTOSAR_SWS_EEPROMDriver.pdf
|
||||
- Specification of Memory Abstraction Interface — AUTOSAR_SWS_MemoryAbstractionInterface.pdf
|
||||
- Specification of NVRAM Manager — AUTOSAR_SWS_NVRAMManager.pdf
|
||||
- Specification of Default Error Tracer — AUTOSAR_SWS_DefaultErrorTracer.pdf
|
||||
- General Specification of Basic Software Modules — AUTOSAR_SWS_BSWGeneral.pdf
|
||||
|
||||
### 3.2 相关规范
|
||||
|
||||
AUTOSAR 提供基础软件模块通用规范(SWS BSW General),也适用于 EEPROM Abstraction。
|
||||
|
||||
---
|
||||
|
||||
## 4 约束与假设
|
||||
|
||||
### 4.1 限制
|
||||
|
||||
无限制。
|
||||
|
||||
### 4.2 适用车型领域
|
||||
|
||||
无限制。
|
||||
|
||||
---
|
||||
|
||||
## 5 模块依赖
|
||||
|
||||
EA 模块依赖于底层 EEPROM 驱动并实现内存抽象架构。
|
||||
|
||||
---
|
||||
|
||||
## 6 需求追溯
|
||||
|
||||
(主要追溯关系,完整表见原文 PDF)
|
||||
|
||||
| 需求 | 满足者 |
|
||||
|------|--------|
|
||||
| SRS_BSW_00101 | SWS_Ea_00084, 00017 |
|
||||
| SRS_BSW_00392 | SWS_Ea_00083, 00117, 00190 |
|
||||
| SRS_BSW_00406 | SWS_Ea_00128 |
|
||||
| SRS_BSW_00414 | SWS_Ea_00190, 00191 |
|
||||
| SRS_MemHwAb_14001 (起止地址对齐) | SWS_Ea_00005, 00068, 00075, 00137 |
|
||||
| SRS_MemHwAb_14002 (写周期配置) | SWS_Ea_00080 |
|
||||
| SRS_MemHwAb_14005 (32位虚拟地址) | SWS_Ea_00066, 00075 |
|
||||
| SRS_MemHwAb_14006 (64K 边界对齐) | SWS_Ea_00024 |
|
||||
| SRS_MemHwAb_14007 (读对齐限制) | SWS_Ea_00021 |
|
||||
| SRS_MemHwAb_14009 (地址转换) | SWS_Ea_00007, 00021, 00024, 00036, 00063 |
|
||||
| SRS_MemHwAb_14010 (完整块写) | SWS_Ea_00087, 00151, 00159, 00181 |
|
||||
| SRS_MemHwAb_14012 (写访问分散) | SWS_Ea_00079 |
|
||||
| SRS_MemHwAb_14013 (立即数据不延迟) | SWS_Ea_00025 |
|
||||
| SRS_MemHwAb_14014 (数据不一致检测) | SWS_Ea_00046, 00047, 00188, 00189 |
|
||||
| SRS_MemHwAb_14015 (报告不一致) | SWS_Ea_00104 |
|
||||
| SRS_MemHwAb_14016 (不返回不一致数据) | SWS_Ea_00104 |
|
||||
| SRS_MemHwAb_14017 (扩展 EEPROM 驱动) | SWS_Ea_00150 |
|
||||
| SRS_MemHwAb_14026 (不使用 0x0000/0xFFFF) | SWS_Ea_00006 |
|
||||
| SRS_MemHwAb_14028 (无效化块) | SWS_Ea_00037, 00074, 00091, 00194 |
|
||||
| SRS_MemHwAb_14029 (部分读取) | SWS_Ea_00022, 00086, 00158, 00179 |
|
||||
| SRS_MemHwAb_14031 (取消异步操作) | SWS_Ea_00077, 00078, 00088, 00160 |
|
||||
| SRS_MemHwAb_14032 (擦除立即数据) | SWS_Ea_00063, 00064, 00065, 00093, 00104 |
|
||||
|
||||
完整追溯表见原文 PDF。
|
||||
|
||||
---
|
||||
|
||||
## 7 功能规范
|
||||
|
||||
### 7.1 总体行为
|
||||
|
||||
[SWS_Ea_00137] ⌈EEPROM Abstraction (EA) 一次只接受一个作业,即模块不应为待处理作业提供队列(这是 NVRAM 管理器的职责)。⌋
|
||||
|
||||
**注**:由于 NvM 是本模块的唯一调用者,为保持本模块合理小巧,模块函数不应检查模块当前是否忙。NvM 负责将待处理作业串行化,只在前一作业完成或取消后开始新作业。
|
||||
|
||||
#### 7.1.1 寻址方案与分段
|
||||
|
||||
EEPROM Abstraction (EA) 为上层提供 32 位虚拟线性地址空间和统一的分段方案。32 位虚拟地址由:
|
||||
- **16 位块编号** — 允许(理论上)65536 个逻辑块
|
||||
- **16 位块偏移** — 允许每块(理论上)64 KB 的块大小
|
||||
|
||||
组成。
|
||||
|
||||
16 位块编号表示可配置的(虚拟)分页机制。此地址对齐的值可从底层 EEPROM 驱动和器件派生。虚拟分页可通过参数 `EA_VIRTUAL_PAGE_SIZE` 配置。
|
||||
|
||||
[SWS_Ea_00075] ⌈Ea 模块配置应使虚拟页大小(`EA_VIRTUAL_PAGE_SIZE` 中定义)为物理页大小的整数倍,即不允许配置小于实际物理页大小的虚拟页。⌋
|
||||
|
||||
**示例**:虚拟页大小配置为 8 字节,因此地址对齐为 8 字节。逻辑块编号 1 放在物理地址 x,逻辑块编号 2 放在 x+8,逻辑块编号 3 放在 x+16。
|
||||
|
||||
[SWS_Ea_00005] ⌈每个已配置逻辑块应占用配置虚拟页大小的整数倍。⌋
|
||||
|
||||
**示例**:如虚拟页大小为 8 字节,逻辑块可为 8、16、24、32 字节等,但不能为 10、20、50 字节等。
|
||||
|
||||
[SWS_Ea_00068] ⌈逻辑块不应相互重叠且不应相互包含。⌋
|
||||
|
||||
[SWS_Ea_00006] ⌈块编号 0x0000 和 0xFFFF 不应配置为逻辑块。⌋ (SRS_MemHwAb_14026)
|
||||
|
||||
#### 7.1.2 地址计算
|
||||
|
||||
[SWS_Ea_00007] ⌈根据 EA 模块的实现和使用的具体地址格式,EA 模块的函数应将 16 位块编号和 16 位块偏移组合,以派生底层 EEPROM 驱动所需的物理 EEPROM 地址。⌋
|
||||
|
||||
[SWS_Ea_00066] ⌈仅 16 位块编号中不表示特定数据集或冗余副本的那些位应用于地址计算。⌋
|
||||
|
||||
**示例**:数据集信息配置为编码在 16 位块编号的 4 个 LSB 中(允许每 NVRAM 块最多 16 个数据集,共 4094 个 NVRAM 块)。实现者将逻辑块所有数据集直接相邻存储,使用块长度和指针访问每个数据集。
|
||||
|
||||
#### 7.1.3 擦/写周期限制
|
||||
|
||||
[SWS_Ea_00079] ⌈Ea 模块配置应在配置参数 `EaNumberOfWriteCycles` 中定义每个逻辑块预期的擦/写周期数。⌋
|
||||
|
||||
[SWS_Ea_00080] ⌈如果底层 EEPROM 器件或器件驱动每物理内存单元未提供至少已配置的擦/写周期数(在参数 `EepAllowedWriteCycles` 中给出),EA 模块应提供机制以分散擦/写访问,使物理器件不被过度使用。这也适用于 EA 模块内部使用的所有管理数据。⌋
|
||||
|
||||
**示例**:逻辑块 1 预期 500,000 写周期,而底层 EEPROM 器件和驱动仅规定 100,000 擦除周期。EA 模块必须提供(至少)5 个独立内存区域,在它们之间交替访问。
|
||||
|
||||
#### 7.1.4 "立即"数据处理
|
||||
|
||||
包含立即数据的块必须瞬时写入,即此类块应可在无需首先擦除相应内存区域(如使用预擦除内存)的情况下写入。NVRAM 管理器应在写入立即数据前取消正在进行的较低优先级读/擦/写或比较作业。
|
||||
|
||||
**注**:正在硬件上运行的操作(如写入一页或擦除一个扇区)通常一旦开始就不能中止。因此即使对立即数据,最长硬件操作的最大时间也必须接受为延迟。
|
||||
|
||||
#### 7.1.5 管理块一致性信息
|
||||
|
||||
[SWS_Ea_00046] ⌈Ea 模块应为每个块管理该块从 EA 模块的角度是否"正确"的信息。此一致性信息应仅涉及块的内部处理,而非块的内容。⌋
|
||||
|
||||
[SWS_Ea_00047] ⌈当块写操作开始时,EA 模块应将相应块标记为不一致。块写操作成功结束时,EA 模块应将块标记为(再次)一致。⌋
|
||||
|
||||
### 7.2 错误分类
|
||||
|
||||
#### 7.2.1 开发错误
|
||||
|
||||
[SWS_Ea_00196] ⌈
|
||||
|
||||
| 错误类型 | 相关性 | 相关错误代码 | 值[hex] |
|
||||
|----------|--------|--------------|---------|
|
||||
| 模块未初始化即调用 API 服务 | Development | EA_E_UNINIT | 0x01 |
|
||||
| 以无效块编号调用 API 服务 | Development | EA_E_INVALID_BLOCK_NO | 0x02 |
|
||||
| 以无效块偏移调用 API 服务 | Development | EA_E_INVALID_BLOCK_OFS | 0x03 |
|
||||
| 以无效指针参数调用 API 服务 | Development | EA_E_PARAM_POINTER | 0x04 |
|
||||
| 以无效块长度信息调用 API 服务 | Development | EA_E_INVALID_BLOCK_LEN | 0x05 |
|
||||
| Ea_Init 失败 | Development | EA_E_INIT_FAILED | 0x09 |
|
||||
⌋
|
||||
|
||||
#### 7.2.2 运行时错误
|
||||
|
||||
| 错误类型 | 相关错误代码 | 值[hex] |
|
||||
|----------|--------------|---------|
|
||||
| 模块忙时调用 API 服务 | EA_E_BUSY | 0x06 |
|
||||
| Ea_Cancel 调用时无待处理作业 | EA_E_INVALID_CANCEL | 0x08 |
|
||||
|
||||
#### 7.2.3 瞬态故障
|
||||
|
||||
无瞬态故障。
|
||||
|
||||
#### 7.2.4 生产错误
|
||||
|
||||
无生产错误。
|
||||
|
||||
#### 7.2.5 扩展生产错误
|
||||
|
||||
无扩展生产错误。
|
||||
|
||||
---
|
||||
|
||||
## 8 API 规范
|
||||
|
||||
### 8.1 导入的类型
|
||||
|
||||
[SWS_Ea_00083] ⌈
|
||||
|
||||
| 模块 | 头文件 | 导入类型 |
|
||||
|------|--------|----------|
|
||||
| Eep | Eep.h | Eep_AddressType, Eep_LengthType |
|
||||
| MemIf | MemIf.h | MemIf_JobResultType, MemIf_ModeType, MemIf_StatusType |
|
||||
| Std_Types | StandardTypes.h | Std_ReturnType, Std_VersionInfoType |
|
||||
⌋
|
||||
|
||||
### 8.2 类型定义
|
||||
|
||||
#### Ea_ConfigType
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Name | Ea_ConfigType |
|
||||
| Type | Structure |
|
||||
| Range | 实现特定 |
|
||||
| Description | Ea 模块的配置数据结构。 |
|
||||
| Available via | Ea.h |
|
||||
|
||||
### 8.3 函数定义
|
||||
|
||||
#### 8.3.1 Ea_Init
|
||||
|
||||
```c
|
||||
void Ea_Init(const Ea_ConfigType* ConfigPtr)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x00 |
|
||||
| Sync/Async | Synchronous |
|
||||
| Description | 初始化 EEPROM 抽象模块。 |
|
||||
|
||||
[SWS_Ea_00191] ⌈配置指针 `ConfigPtr` 应始终为 NULL_PTR 值。⌋
|
||||
[SWS_Ea_00017] ⌈应在模块初始化开始时将模块状态从 MEMIF_UNINIT 设为 MEMIF_BUSY_INTERNAL。⌋
|
||||
[SWS_Ea_00128] ⌈如初始化在 Ea_Init 内完成,成功完成后应将模块状态从 MEMIF_BUSY_INTERNAL 设为 MEMIF_IDLE。⌋
|
||||
|
||||
#### 8.3.2 Ea_SetMode
|
||||
|
||||
```c
|
||||
void Ea_SetMode(MemIf_ModeType Mode)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x01 |
|
||||
| Description | 切换底层 EEPROM 驱动的模式。 |
|
||||
|
||||
将调用映射到底层 EEPROM 驱动的 `Eep_SetMode` 函数。
|
||||
|
||||
#### 8.3.3 Ea_Read
|
||||
|
||||
```c
|
||||
Std_ReturnType Ea_Read(
|
||||
uint16 BlockNumber,
|
||||
uint16 BlockOffset,
|
||||
uint8* DataBufferPtr,
|
||||
uint16 Length
|
||||
)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x02 |
|
||||
| Sync/Async | Asynchronous |
|
||||
| Description | 从 `BlockNumber` 块的 `BlockOffset` 偏移开始读取 `Length` 字节到 `DataBufferPtr`。 |
|
||||
|
||||
参数检查:
|
||||
- 模块已初始化
|
||||
- BlockNumber 有效
|
||||
- BlockOffset 在块范围内
|
||||
- Length 大于 0 且不超过块大小
|
||||
|
||||
[SWS_Ea_00022] / [SWS_Ea_00086] ⌈接受读取请求,设状态 MEMIF_BUSY,作业结果 MEMIF_JOB_PENDING。⌋
|
||||
[SWS_Ea_00158] / [SWS_Ea_00179] ⌈在主函数内异步处理读取。⌋
|
||||
|
||||
#### 8.3.4 Ea_Write
|
||||
|
||||
```c
|
||||
Std_ReturnType Ea_Write(
|
||||
uint16 BlockNumber,
|
||||
const uint8* DataBufferPtr
|
||||
)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x03 |
|
||||
| Sync/Async | Asynchronous |
|
||||
| Description | 将 `DataBufferPtr` 内容写入 `BlockNumber` 块。 |
|
||||
|
||||
[SWS_Ea_00087] / [SWS_Ea_00151] ⌈写整个块。⌋
|
||||
[SWS_Ea_00159] / [SWS_Ea_00181] ⌈异步处理写入。⌋
|
||||
|
||||
#### 8.3.5 Ea_Cancel
|
||||
|
||||
```c
|
||||
void Ea_Cancel(void)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x04 |
|
||||
| Sync/Async | Synchronous |
|
||||
| Description | 取消正在进行的异步操作。 |
|
||||
|
||||
[SWS_Ea_00077] / [SWS_Ea_00078] ⌈同步取消正在进行的作业,调用底层 `Eep_Cancel`。⌋
|
||||
[SWS_Ea_00088] ⌈模块状态设为 MEMIF_IDLE,作业结果设为 MEMIF_JOB_CANCELED。⌋
|
||||
|
||||
#### 8.3.6 Ea_GetStatus
|
||||
|
||||
```c
|
||||
MemIf_StatusType Ea_GetStatus(void)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x05 |
|
||||
| Sync/Async | Synchronous |
|
||||
| Reentrancy | Reentrant |
|
||||
| Description | 返回状态的服务。 |
|
||||
|
||||
#### 8.3.7 Ea_GetJobResult
|
||||
|
||||
```c
|
||||
MemIf_JobResultType Ea_GetJobResult(void)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x06 |
|
||||
| Sync/Async | Synchronous |
|
||||
| Reentrancy | Reentrant |
|
||||
| Description | 返回上次作业结果的服务。 |
|
||||
|
||||
可能值:MEMIF_JOB_OK、MEMIF_JOB_FAILED、MEMIF_JOB_PENDING、MEMIF_JOB_CANCELED、MEMIF_BLOCK_INCONSISTENT、MEMIF_BLOCK_INVALID。
|
||||
|
||||
#### 8.3.8 Ea_InvalidateBlock
|
||||
|
||||
```c
|
||||
Std_ReturnType Ea_InvalidateBlock(uint16 BlockNumber)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x07 |
|
||||
| Sync/Async | Asynchronous |
|
||||
| Description | 使 `BlockNumber` 块无效。 |
|
||||
|
||||
[SWS_Ea_00037] / [SWS_Ea_00074] / [SWS_Ea_00091] / [SWS_Ea_00194] ⌈通过设置块管理数据使块无效化,非必需擦除物理内存内容。⌋
|
||||
|
||||
#### 8.3.9 Ea_GetVersionInfo
|
||||
|
||||
```c
|
||||
void Ea_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x08 |
|
||||
| Reentrancy | Reentrant |
|
||||
| Description | 获取本模块版本信息。 |
|
||||
|
||||
#### 8.3.10 Ea_EraseImmediateBlock
|
||||
|
||||
```c
|
||||
Std_ReturnType Ea_EraseImmediateBlock(uint16 BlockNumber)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x09 |
|
||||
| Sync/Async | Asynchronous |
|
||||
| Description | 擦除 `BlockNumber` 块(立即数据)。 |
|
||||
|
||||
[SWS_Ea_00063] / [SWS_Ea_00064] / [SWS_Ea_00065] / [SWS_Ea_00093] / [SWS_Ea_00104] ⌈仅对包含立即数据的块。⌋
|
||||
|
||||
### 8.4 回调通知
|
||||
|
||||
由模块用户提供:
|
||||
- `Ea_JobEndNotification`:作业成功完成时调用
|
||||
- `Ea_JobErrorNotification`:作业以错误结束时调用
|
||||
|
||||
### 8.5 调度函数
|
||||
|
||||
#### Ea_MainFunction
|
||||
|
||||
```c
|
||||
void Ea_MainFunction(void)
|
||||
```
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| Service ID[hex] | 0x0a |
|
||||
| Description | 执行 EA 模块作业处理的服务。 |
|
||||
| Available via | SchM_Ea.h |
|
||||
|
||||
调用底层 EEPROM 驱动处理读、写、擦除、比较请求。
|
||||
|
||||
### 8.6 期望接口
|
||||
|
||||
#### 强制接口
|
||||
|
||||
| API 函数 | 头文件 | 描述 |
|
||||
|----------|--------|------|
|
||||
| Eep_Cancel | Eep.h | 取消正在进行的异步操作 |
|
||||
| Eep_Compare | Eep.h | 比较 EEPROM 与内存数据 |
|
||||
| Eep_Erase | Eep.h | 擦除 EEPROM 数据 |
|
||||
| Eep_GetJobResult | Eep.h | 返回作业结果 |
|
||||
| Eep_GetStatus | Eep.h | 返回状态 |
|
||||
| Eep_Read | Eep.h | 从 EEPROM 读取 |
|
||||
| Eep_SetMode | Eep.h | 切换 EEPROM 驱动模式 |
|
||||
| Eep_Write | Eep.h | 写入 EEPROM |
|
||||
|
||||
#### 可选接口
|
||||
|
||||
| API 函数 | 头文件 | 描述 |
|
||||
|----------|--------|------|
|
||||
| Det_ReportError | Det.h | 报告开发错误 |
|
||||
| Det_ReportRuntimeError | Det.h | 报告运行时错误 |
|
||||
|
||||
#### 可配置接口
|
||||
|
||||
回调函数(由 NvM 提供):
|
||||
- `Ea_JobEndNotification` (typically NvM_JobEndNotification)
|
||||
- `Ea_JobErrorNotification` (typically NvM_JobErrorNotification)
|
||||
|
||||
---
|
||||
|
||||
## 9 时序图
|
||||
|
||||
类似 MemIf:NvM → Ea → Eep 链路上的请求传播,带异步主函数处理。
|
||||
|
||||
---
|
||||
|
||||
## 10 配置规范
|
||||
|
||||
### 10.1 容器与配置参数
|
||||
|
||||
#### 10.1.1 Ea
|
||||
|
||||
| 项 | 内容 |
|
||||
|-----|------|
|
||||
| SWS Item | ECUC_Ea_00100 |
|
||||
| Module Name | Ea |
|
||||
| Module Description | EA(EEPROM Abstraction)模块配置 |
|
||||
| Post-Build Variant Support | true |
|
||||
|
||||
#### 10.1.2 EaGeneral
|
||||
|
||||
| 参数 | 描述 |
|
||||
|------|------|
|
||||
| EaDevErrorDetect | 开发错误检测开关 |
|
||||
| EaVersionInfoApi | 版本信息 API 启用 |
|
||||
| EaSetModeApi | SetMode API 启用 |
|
||||
| EaMainFunctionPeriod | 主函数周期(秒) |
|
||||
| EaVirtualPageSize | 虚拟页大小 |
|
||||
|
||||
#### 10.1.3 EaBlockConfiguration
|
||||
|
||||
每个逻辑块配置:
|
||||
|
||||
| 参数 | 描述 |
|
||||
|------|------|
|
||||
| EaBlockNumber | 块编号(不可为 0x0000 或 0xFFFF) |
|
||||
| EaBlockSize | 块大小 |
|
||||
| EaDeviceIndex | 设备索引 |
|
||||
| EaImmediateData | 是否为立即数据 |
|
||||
| EaNumberOfWriteCycles | 期望写周期数 |
|
||||
| EaJobEndNotification | 作业结束通知回调 |
|
||||
| EaJobErrorNotification | 作业错误通知回调 |
|
||||
|
||||
#### 10.1.4 EaPublishedInformation
|
||||
|
||||
已发布参数:
|
||||
- 物理写块大小
|
||||
|
||||
---
|
||||
|
||||
## 11 不适用需求
|
||||
|
||||
[SWS_Ea_00999] ⌈这些需求不适用于本规范。⌋ 涉及多个 SRS_BSW_* 和 SRS_SPAL_* 需求,详见原文 PDF。
|
||||
|
||||
---
|
||||
|
||||
## 翻译说明
|
||||
|
||||
- 本文档完整翻译自 AUTOSAR_SWS_EEPROMAbstraction v4.4.0(Document ID 287,58 页)。
|
||||
- 保留所有需求 ID(SWS_Ea_xxxxx、SRS_MemHwAb_xxxxx、ECUC_Ea_xxxxx)。
|
||||
- 保留 AUTOSAR 方框符 ⌈⌋。
|
||||
- 模块缩写(Ea、Eep、NvM、MemIf、FEE 等)和 API 函数名保持英文。
|
||||
- 详细配置参数和示例请参考原文 PDF 第 10 章。
|
||||
Reference in New Issue
Block a user