Files
autosar_standard_spec_v4.4/Memory/AUTOSAR_SRS_FlashDriver.md
T

22 KiB
Raw Blame History

Flash 驱动需求规范

文档标题: Requirements on Flash Driver AUTOSAR CP Release: 4.4.0 文档编号: 194 文档类型: SRS (Software Requirements Specification)


文档标识

项目 内容
Document Title Requirements on Flash Driver
Document Owner AUTOSAR
Document Responsibility AUTOSAR
Document Identification No 194
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 移除 HIS 引用
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 编辑性修订
2013-10-31 4.1.2 AUTOSAR Release Management 编辑性修订
2013-03-15 4.1.1 AUTOSAR Administration 对需求追溯进行形式化重做;按 TPS_STDT_00078 重做需求;与 BSW & RTE 特性关联
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 拆分为 15 个独立文档;新增 SRS_Fls_13301/13302/13303/13304;修订 SRS_Fls_12132
2005-05-31 1.0 AUTOSAR Administration 作为 SRS SPAL V1.0.0 的一部分初始发布

目录

  1. 文档范围
  2. 如何阅读本文档
  3. 缩略语
  4. 功能概述
  5. 需求追溯
  6. 需求规范
  7. 参考文献

1 文档范围

本文档规定了 Flash Driver 模块的需求。

约束

基础软件模块需求规范的首要范围是非安全相关系统。因此安全需求被分配为中等优先级。


2 如何阅读本文档

每条需求都有一个以"BSW"为前缀的唯一标识符。对于任何评审注释、备注或问题,请引用此唯一 ID,而非章节号或页码!

2.1 使用的约定

AUTOSAR 文档中需求的表示形式遵循 [5] 中规定的表格格式。

关键字 "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY" 和 "OPTIONAL" 按 IETF 风格解读。

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 内部 Flash 驱动

内部 Flash 驱动提供初始化以及对内部 Flash 内存读、写、擦的服务。Flash 驱动提供内置加载器能力,允许将 Flash 访问代码加载到 RAM 并从那里执行写/擦操作(如需要)。

在 ECU 的应用模式下,Flash 驱动仅由 Flash EEPROM 仿真模块用于写入数据。不打算在应用模式下将程序代码写入 Flash 内存。这应在引导模式下完成,这超出 AUTOSAR 范围。

4.2 外部 Flash 驱动

外部 Flash 驱动提供初始化以及对外部 Flash 内存读、写、擦的服务。它与内部 Flash 驱动具有相同的功能范围。


5 需求追溯

需求 描述 满足者
BS_BRF_00129 - SRS_Fls_12141, 12158, 12160
BS_BRF_01008 - SRS_Fls_12147, 12149
BS_BRF_01080 - SRS_Fls_12147, 12148
BS_BRF_01136 - SRS_Fls_12132, 12182
BS_BRF_01144 - SRS_Fls_13303, 13304
BS_BRF_02232 - SRS_Fls_12107, 12141, 12159
BS_BRF_1800 - SRS_Fls_12147, 12149
RS_BRF_01144 AUTOSAR 应支持允许在中断响应时间与运行时间之间权衡的配置参数 SRS_Fls_13302
RS_BRF_02232 AUTOSAR 应支持具有运行时断言检查的开发 SRS_Fls_12158, 12160

6 需求规范

6.1 功能性需求

6.1.1 内部 Flash 驱动

6.1.1.1 配置
6.1.1.1.1 [SRS_Fls_12132] Flash 驱动应可静态配置

字段 内容
类型 Valid
描述 Flash 驱动的以下常量应可静态配置:
1. Flash 内存基地址
2. Flash 内存大小
3. 普通模式下作业处理函数内处理的读(比较)、写、擦操作的最大块大小
4. 快速模式下作业处理函数内处理的读(比较)、写、擦操作的最大块大小
5. 写和擦操作的作业处理:中断触发或周期作业处理函数(轮询)
6. 写和擦、保护的周期作业处理函数的调用周期(如 Flash 硬件不提供该时序)
7. Flash 写保护
理由 基本配置
用例 1+2:也可用于限制可访问的 Flash 内存区域(防止程序代码被覆盖);4:某些微控制器提供 Flash 内存中断;5:当 Flash 内存硬件不提供该时序和/或需要截止时间检查时所需
依赖 --
支持材料 --
⌋(BS_BRF_01136)
6.1.1.1.2 [SRS_Fls_12133] Flash 内存属性应被发布

字段 内容
类型 Valid
描述 Flash 驱动描述应发布以下 Flash 内存属性:
1. 已擦除 Flash 单元的值
2. 一个 Flash 单元的大小(如 8bit、16bit 等)
3. Flash 内存大小(字节)
4. Flash 内存基地址
5. 物理内存分段(最小可写/可读/可擦/可保护单元)
理由 用于配置上层模块
用例 1: NVRAM 管理器希望执行 Flash 空白检查,因此需要已擦除 Flash 单元的值;5: 在 NVRAM 布局配置期间,数据块不应与分段边界错位
依赖 --
支持材料 --
⌋()
6.1.1.2 正常运行
6.1.1.2.1 [SRS_Fls_12134] Flash 驱动应提供异步读功能

字段 内容
类型 Valid
描述 Flash 驱动应提供异步读功能,从所请求的 Flash 地址开始按所传入的长度从内部 Flash 内存读取数据块。
理由 基本功能
用例 Flash EEPROM 仿真;访问非内存映射的 Flash
依赖 --
支持材料 --
⌋()
6.1.1.2.2 [SRS_Fls_12135] Flash 驱动应提供异步写功能

字段 内容
类型 Valid
描述 Flash 驱动应提供异步写功能,从所请求的 Flash 地址开始按所传入的长度向内部 Flash 内存写入数据块。

Flash 地址和长度应与 Flash 内存的物理内存分段对齐。未对齐的写请求应由 Flash 驱动以错误码拒绝。
理由 基本功能
用例 --
依赖 --
支持材料 --
⌋()
6.1.1.2.3 [SRS_Fls_12136] Flash 驱动应提供异步擦除功能

字段 内容
类型 Valid
描述 Flash 驱动应提供异步擦除功能,从所请求的 Flash 地址开始按所传入的长度擦除一个或多个 Flash 段。

Flash 地址和长度应与 Flash 内存的物理内存分段对齐。未对齐的擦除请求应由 Flash 驱动以错误码拒绝。

Flash 驱动应内部选择最佳擦除策略。例如,如果 Flash 硬件支持块擦除命令则使用之。
理由 基本功能
用例 --
依赖 --
支持材料 --
⌋()
6.1.1.2.4 [SRS_Fls_13301] Flash 驱动应提供异步比较功能

字段 内容
类型 Valid
描述 Flash 驱动应提供异步比较函数,按所传入的长度比较内存中的一段与 Flash 内存中的一段。
理由 Flash 驱动应提供与 EEPROM 驱动相同的功能,以便对 NVRAM 管理器透明。
用例 Flash EEPROM 仿真中的内部机制可使用此函数确定是否需要擦除/写入扇区/页。
依赖 --
支持材料 --
⌋()
6.1.1.2.5 [SRS_Fls_12137] Flash 驱动应提供同步取消功能

字段 内容
类型 Valid
描述 Flash 驱动应提供同步取消函数,停止当前处理的作业。受影响 Flash 单元的状态和数据是未定义的!
Flash 驱动和控制器本身应为新作业做好准备。

注:大多数情况下,正在进行的硬件写/擦过程不能停止,但后续数据块的写/擦将被中止。
理由 仅 EEPROM 仿真所需(紧急写命令可在无任何延迟下执行)。
用例 检测到车辆碰撞时无延迟写入碰撞相关数据。
依赖 --
支持材料 --
⌋()
6.1.1.2.6 [SRS_Fls_12138] Flash 驱动应提供同步状态函数

字段 内容
类型 Valid
描述 Flash 驱动应提供同步函数,返回作业处理状态。
理由 检查 Flash 驱动是否忙
用例 - 复位后及成功初始化前,驱动状态为 UNINIT。
- 成功初始化后,驱动状态为 IDLE。
- 作业处理期间,驱动状态为 BUSY。
- 取消作业后,驱动状态为 IDLE。
依赖 --
支持材料 --
⌋()
6.1.1.2.7 [SRS_Fls_13302] Flash 驱动应提供同步选择函数

字段 内容
类型 Valid
描述 Flash 驱动应提供同步函数,允许在普通和快速 Flash 内存访问之间切换操作模式。
理由 Flash 驱动应提供与 EEPROM 驱动相同的功能,以便对 NVRAM 管理器透明。
用例 --
依赖 [SRS_Fls_12132], [SRS_Fls_13304], [SRS_Fls_13303]
支持材料 --
⌋(RS_BRF_01144)
6.1.1.2.8 [SRS_Fls_12159] Flash 驱动的写和擦函数应检查传入的地址参数

字段 内容
类型 Valid
描述 Flash 驱动的写和擦函数应检查传入的地址参数是否在有效配置的地址边界内。超出允许边界的写/擦访问应以错误码拒绝。
理由 避免对不允许的 Flash 区域(如程序代码)的写入尝试。
用例 --
依赖 [SRS_Fls_12132] Flash 驱动静态配置,项 1+2
支持材料 --
⌋(BS_BRF_02232)
6.1.1.2.9 [SRS_Fls_12158] 写入之前,Flash 驱动应验证寻址的内存区域是否已擦除

字段 内容
类型 Valid
描述 向 Flash 内存写入数据之前,Flash 驱动应验证寻址的内存区域是否已擦除。

如果内存未擦除,写函数的处理应中止并发出错误通知。

此特性应可静态配置(开/关)。
理由 避免对未擦除 Flash 内存的写入尝试。
用例 --
依赖 --
支持材料 --
⌋(RS_BRF_02232, BS_BRF_00129)
6.1.1.2.10 [SRS_Fls_12141] Flash 驱动应验证已写入的数据

字段 内容
类型 Valid
描述 Flash 驱动应在每次写访问后通过从 Flash 回读并与源数据比较来验证已写入的数据。
差异应作为错误通知。
检查应在写函数的处理内完成。

此特性应可静态配置(开/关)。
理由 检测数据损坏。
用例 --
依赖 --
支持材料 --
⌋(BS_BRF_02232, BS_BRF_00129)
6.1.1.2.11 [SRS_Fls_12160] 执行擦除作业后,Flash 驱动应验证寻址的块是否已完全擦除

字段 内容
类型 Valid
描述 执行擦除作业后,Flash 驱动应验证寻址的块是否已完全擦除。此特性应可静态配置(开/关)。
理由 --
用例 --
依赖 --
支持材料 --
⌋(RS_BRF_02232, BS_BRF_00129)
6.1.1.2.12 [SRS_Fls_12143] Flash 驱动一次只应处理一个作业

字段 内容
类型 Valid
描述 Flash 驱动一次只应处理一个作业(写或擦)。运行中作业期间的作业请求应被拒绝并作为错误处理。

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

进一步说明:调用函数负责作业的缓存和排队,而非 Flash 驱动。
理由 写和擦等不同操作不能同时处理,且结果依赖于执行顺序。
用例 开发期间启用错误检测。生产代码出于效率原因禁用错误检测。
依赖 --
支持材料 --
⌋()
6.1.1.2.13 [SRS_Fls_12144] Flash 驱动应提供必须为作业处理而调用的函数

字段 内容
类型 Valid
描述 Flash 驱动应提供必须为作业处理而调用的函数。所有作业处理应在此函数内完成。

如果硬件支持,此函数可从中断调用。否则,可以固定周期时间调用此函数。
理由 允许作业处理的灵活可能性。
用例 示例:作业处理函数每 10ms 被调用一次。
依赖 --
支持材料 --
⌋()
6.1.1.2.14 [SRS_Fls_13303] 在普通模式下,Flash 驱动作业处理函数的一个周期应将块大小限制为默认块大小

字段 内容
类型 Valid
描述 在普通模式下,Flash 驱动作业处理函数的一个周期应将从 Flash 内存读取的块大小限制为已配置的默认块大小。
理由 Flash 驱动应提供与 EEPROM 驱动相同的功能,以便对 NVRAM 管理器透明。
用例 普通模式下读取数据最大块大小 16;快速模式下读取数据最大块大小 128。
依赖 [SRS_Fls_12132], [SRS_Fls_13302]
支持材料 --
⌋(BS_BRF_01144)
6.1.1.2.15 [SRS_Fls_13304] 在快速模式下,Flash 驱动作业处理函数的一个周期应将块大小限制为最大块大小

字段 内容
类型 Valid
描述 在快速模式下,Flash 驱动作业处理函数的一个周期应将从 Flash 内存读取的块大小限制为已配置的最大块大小。
理由 Flash 驱动应提供与 EEPROM 驱动相同的功能,以便对 NVRAM 管理器透明。
用例 普通模式下读取数据最大块大小 16;快速模式下读取数据最大块大小 128。
依赖 [SRS_Fls_12132], [SRS_Fls_13302]
支持材料 --
⌋(BS_BRF_01144)
6.1.1.2.16 [SRS_Fls_12193] Flash 驱动应在每次擦或写作业启动时将访问 Flash 硬件的代码加载到 RAM

字段 内容
类型 Valid
描述 Flash 驱动应在每次擦或写作业启动时将访问 Flash 硬件的代码(内部擦/写例程)加载到 RAM。

此特性应可静态配置开/关(预编译配置)。
理由 在对 Flash 库的擦/写操作期间,无法读取该库(因此无法执行位于该库内的代码)。
用例 包含 Flash 访问例程的 Flash 库也是当前被擦/写操作寻址的库。
依赖 --
支持材料 仅当擦/写例程位于要被擦除或重新编程的同一库中时才需要。
⌋()
6.1.1.2.17 [SRS_Fls_12194] Flash 驱动应从 RAM 执行访问 Flash 硬件的代码

字段 内容
类型 Valid
描述 Flash 驱动应从 RAM 执行访问 Flash 硬件的代码(内部擦/写例程)。此需求仅当 Flash 访问代码已加载到 RAM 时适用。

Flash 驱动必须确保此代码执行不被中断。因此该例程的运行时间应保持尽可能短。
理由 在对 Flash 库的擦/写操作期间,无法读取该库。
用例 包含 Flash 驱动代码的 Flash 库也是当前被擦/写操作寻址的库。
依赖 [SRS_Fls_12193] 作业启动时将 Flash 访问代码加载到 RAM
支持材料 --
⌋()
6.1.1.2.18 [SRS_Fls_13300] 当前作业完成或取消后,Flash 驱动应从 RAM 中移除访问 Flash 硬件的代码

字段 内容
类型 Valid
描述 当前擦或写作业完成或取消后,Flash 驱动应从 RAM 中移除访问 Flash 硬件的代码(内部擦/写例程)。

从 RAM 中移除 Flash 访问代码仅在 Flash 驱动于擦/写作业启动期间将该代码加载到 RAM 时才必要。如果 FAC 在初始化期间已加载到 RAM,Flash 驱动不应将代码从 RAM 中移除。

此特性应可静态配置开/关(预编译配置)。
理由 应从 RAM 中移除 Flash 访问代码,以避免 Flash 驱动操作之外可能有害的操作(Flash 擦/写)。
用例 用于擦除 Flash 内存的 Flash 访问代码在擦除作业开始时加载,擦除作业完成后卸载,以防止进一步(意外)的 Flash 内存擦除。
依赖 [SRS_Fls_12193] 作业启动时将 Flash 访问代码加载到 RAM
支持材料 --
⌋()

6.1.2 外部 Flash 驱动

6.1.2.1 通用
6.1.2.1.1 [SRS_Fls_12147] 外部和内部 Flash 驱动应适用相同的需求

字段 内容
类型 Valid
描述 对于外部 Flash 驱动,应适用与内部 Flash 驱动相同的需求。
理由 内部和外部 Flash 内存之间无功能差异。保持相同的功能范围。
用例 STAR12 具有内部 Flash。其他微控制器仅使用外部 Flash。两种类型微控制器上应使用相同的 NVRAM Manager。
依赖 --
支持材料 --
⌋(BS_BRF_01080, BS_BRF_01008, BS_BRF_1800)
6.1.2.2 配置
6.1.2.2.1 [SRS_Fls_12182] 外部 Flash 驱动应允许静态配置硬件 Flash ID 和挂起时间

字段 内容
类型 Valid
描述 除基本配置参数外,外部 Flash 驱动应允许静态配置以下参数:
1. 预期的硬件 Flash ID
2. 最大读访问阻塞时间("挂起时间")
理由 基本配置
用例 1: [SRS_Fls_12107] 检查 Flash 类型;2: [SRS_Fls_12184] 限制读访问阻塞时间
依赖 --
支持材料 --
⌋(BS_BRF_01136)
6.1.2.3 故障操作
6.1.2.3.1 [SRS_Fls_12107] 外部 Flash 驱动应检查配置的 Flash 类型是否与硬件 Flash ID 匹配

字段 内容
类型 Valid
描述 外部 Flash 驱动应在其初始化函数内检查配置的 Flash 类型是否与硬件 Flash ID 匹配。检测到的不匹配应报告给 Error Manager。

仅当 Flash 硬件提供 Flash ID 时才提供此检查。
理由 避免使用错误的编程配置
用例 --
依赖 [SRS_Fls_12182] 外部 Flash 驱动静态配置
支持材料 Requirements Specification CAS LLD Configuration Tool: RS_LLD_CONFIG/7.11
⌋(BS_BRF_02232)

6.2 非功能性需求

6.2.1 内部 Flash 驱动

6.2.1.1 [SRS_Fls_12145] Flash 驱动的作业处理函数应仅处理 Flash 硬件可处理的数据量

字段 内容
类型 Valid
描述 Flash 驱动的作业处理函数应仅处理 Flash 硬件在一步内可处理的数据(特别是写操作),或仅处理已定义的用户上限的数据量(特别是读操作)。
理由 最小化处理器负载,减少阻塞时间。
用例 例如,作业处理函数在一次调用中执行一个字节的写入和最多 8 字节的读取。
依赖 --
支持材料 --
⌋()

6.2.2 外部 Flash 驱动

6.2.2.1 [SRS_Fls_12184] Flash 驱动应将读访问阻塞时间限制为配置的时间

字段 内容
类型 Valid
描述 Flash 驱动应将读访问阻塞时间限制为配置的时间(最大读访问阻塞时间)。
理由 避免阻塞整个系统的调度和中断。
用例 Bosch EDC16:阻塞时间最大为 40µs。
依赖 [SRS_Fls_12194], [SRS_Fls_12182]
支持材料 --
⌋()
6.2.2.2 [SRS_Fls_12148] 外部 Flash 驱动应与内部 Flash 驱动具有语义相同的 API

字段 内容
类型 Valid
描述 外部 Flash 驱动应与内部 Flash 驱动具有语义相同的 API。
理由 简化内存抽象。保持内部和外部 Flash 内存的处理类似。
用例 一个 ECU 使用具有内部 Flash 的 STAR12。另一个 ECU 使用仅有外部 Flash 的控制器。两种微控制器上应使用相同的上层(NVRAM Manager、Flash/EEPROM 仿真)。
依赖 内部 Flash 驱动需求。
支持材料 --
⌋(BS_BRF_01080)
6.2.2.3 [SRS_Fls_12149] 外部 Flash 驱动的源代码应与底层微控制器无关

字段 内容
类型 Valid
描述 外部 Flash 驱动的源代码应与底层微控制器无关。
理由 在多个微控制器上重用外部 Flash 驱动
用例 Flash 设备的同一外部 Flash 驱动可以无任何修改地在 NEC V850 和 MPC563 上使用。
依赖 --
支持材料 --
⌋(BS_BRF_01008, BS_BRF_1800)

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_FlashDriver v4.4.0(Document ID 194)。
  • 保留所有需求 ID(SRS_Fls_xxxxx、BS_BRF_xxxxx、RS_BRF_xxxxx)。
  • 保留 AUTOSAR 方框符 ⌈⌋。
  • 模块缩写(Fls、ECU、NVRAM、EEPROM 等)保持英文。