1 介绍与功能概述(Introduction and functional overview)
本文档定义了 AUTOSAR 基础软件(BSW)模块的通用需求。这些需求适用于所有标准化的 AUTOSAR BSW 模块,以确保:
- 模块间的一致性和可互换性;
- 统一的命名约定和编码风格;
- 一致的配置和初始化机制;
- 一致的错误处理和报告机制;
- 统一的版本和标识机制。
需求 ID 格式为 SRS_BSW_NNNNN,如 SRS_BSW_00003。
2 缩略语与术语(Acronyms and abbreviations)
| 缩略语 | 说明 |
|---|---|
| ISR | Interrupt Service Routine(中断服务程序) |
| OS | Operating System(操作系统) |
| BSW | Basic Software(基础软件) |
| MCAL | Microcontroller Abstraction Layer(微控制器抽象层) |
| SW-C | Software Component(软件组件) |
| RTE | Runtime Environment(运行时环境) |
| API | Application Programming Interface(应用程序编程接口) |
| DEM | Diagnostic Event Manager(诊断事件管理器) |
| DET | Default Error Tracer(默认错误追踪器) |
| ECU | Electronic Control Unit(电子控制单元) |
3 相关文档(Related documentation)
| 编号 | 文档名 | 原 PDF |
|---|---|---|
| [1] | Layered Software Architecture | AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf |
| [2] | Specification of Basic Software Module Description Template | AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf |
| [3] | General Specification of Basic Software Modules | AUTOSAR_SWS_BSWGeneral.pdf |
| [4] | Specification of Standard Types | AUTOSAR_SWS_StandardTypes.pdf |
| [5] | List of Basic Software Modules | AUTOSAR_TR_BSWModuleList.pdf |
4 需求结构与映射(Requirements structure and mapping)
本文档的需求分为两类:
- 功能需求(Functional Requirements):模块的行为;
- 非功能需求(Non-Functional Requirements):时序、资源、可用性等。
需求 ID 按主题分组:
SRS_BSW_00001–SRS_BSW_00100:通用模块规范;SRS_BSW_00101–SRS_BSW_00200:架构相关;SRS_BSW_00300–SRS_BSW_00399:命名约定;SRS_BSW_00400–SRS_BSW_00499:配置相关;SRS_BSW_00500以上:错误分类与处理;RS_BRF_NNNNN:业务需求框架层的需求。
5 需求清单(Requirements list)
5.1 功能需求(Functional Requirements)
5.1.1 配置(Configuration)
[SRS_BSW_00158] 所有 BSW 模块应当支持基于工具的配置。
[SRS_BSW_00159] 所有 AUTOSAR 基础软件模块应当支持基于工具的配置。
[SRS_BSW_00160] AUTOSAR BSW 模块的配置文件应当人类可读。
[SRS_BSW_00167] 所有 AUTOSAR 基础软件模块应当提供配置规则和约束,以启用合理性检查。
[SRS_BSW_00171] BSW 组件中不需要的可选功能应当可在编译时配置。
[SRS_BSW_00344] BSW 模块应当支持链接时配置。
[SRS_BSW_00345] BSW 模块应当支持编译前配置。
[SRS_BSW_00380] 存储在内存中的配置参数应当放置在单独的 c 文件中。
[SRS_BSW_00383] 基础软件模块规范应当至少在描述中说明它们使用了哪些其他模块的配置文件。
[SRS_BSW_00388] 容器应当用于为同一对象定义的配置参数分组。
[SRS_BSW_00389] 容器应当具有名称。
[SRS_BSW_00390] 参数内容在模块内应当唯一。
[SRS_BSW_00392] 参数应当具有类型。
[SRS_BSW_00393] 参数应当具有范围。
[SRS_BSW_00394] 基础软件模块规范应当说明配置参数的作用域。
[SRS_BSW_00395] 基础软件模块规范应当列出所有配置参数依赖关系。
[SRS_BSW_00396] 基础软件模块规范应当说明每个参数/容器支持的配置类。
[SRS_BSW_00397] 编译前配置参数在编译开始前应当是固定的。
[SRS_BSW_00398] 链接时配置在编译之后、链接之前的阶段基于目标代码应当实现。
[SRS_BSW_00399] 参数集应当位于单独的段中,并在代码之后加载。
[SRS_BSW_00400] 在代码加载并启动后,参数应当可从多组参数中选择。
[SRS_BSW_00401] 应当提供配置参数多个实例的文档。
[SRS_BSW_00404] BSW 模块应当支持构建后配置。
[SRS_BSW_00405] BSW 模块应当支持多配置集。
[SRS_BSW_00414] 初始化函数应当将配置结构指针作为唯一参数。
[SRS_BSW_00416] 模块的初始化顺序应当可配置。
[SRS_BSW_00419] 如果编译前配置参数实现为 const,则应当放置在单独的 c 文件中。
[SRS_BSW_00413] BSW 模块实例的访问应当基于索引。
[SRS_BSW_00408] 所有 AUTOSAR BSW 模块配置参数应当根据特定命名规则命名。
[SRS_BSW_00411] 所有 AUTOSAR BSW 模块应当应用 API 存在性的使能/禁止命名规则。
[SRS_BSW_00415] 仅为一个模块提供的接口应当分离到专门的头文件中。
5.1.2 初始化(Initialization)
[SRS_BSW_00101] 基础软件模块应当能够在单独的初始化函数中初始化变量和硬件。
[SRS_BSW_00406] 标识 BSW 模块是否已初始化的静态状态变量,在调用 BSW 模块的任何 API 之前应当初始化为值 0。
[SRS_BSW_00407] 每个 BSW 模块应当提供读取专用模块实现版本信息的函数(<Module>_GetVersionInfo())。
[SRS_BSW_00410] 编译器开关应当具有定义的值。
5.1.3 正常运行(Normal Operation)
[SRS_BSW_00003] 所有软件模块应当提供版本和标识信息。
[SRS_BSW_00004] 所有 BSW 模块应当对所有导入的头文件执行版本预处理检查。
[SRS_BSW_00005] 微控制器抽象层(MCAL)的模块不得有硬编码的水平接口。
[SRS_BSW_00006] MCAL 之上的软件模块的源代码不得是处理器和编译器相关的。
[SRS_BSW_00007] 所有用 C 语言编写的基础软件模块应当遵循 MISRA C 2012 标准。
[SRS_BSW_00009] 所有基础软件模块应当根据通用标准进行文档化。
[SRS_BSW_00010] 所有 BSW 模块的内存消耗应当在定义配置下为所有支持的平台记录文档。
[SRS_BSW_00161] AUTOSAR 基础软件应当提供一个微控制器抽象层(MCAL),向更高软件层提供标准化接口。
[SRS_BSW_00162] AUTOSAR 基础软件应当提供硬件抽象层(ECU Abstraction Layer)。
[SRS_BSW_00168] SW-C 应当通过基础软件中通用 API 中定义的函数进行测试。
[SRS_BSW_00172] 内置于 BSW 模块的调度策略应当与系统中使用的策略兼容。
[SRS_BSW_00300] 所有 AUTOSAR 基础软件模块应当通过明确的名称标识。
[SRS_BSW_00301] 所有 AUTOSAR 基础软件模块只应当导入必要的信息。
[SRS_BSW_00302] 所有 AUTOSAR 基础软件模块只应当导出其他模块需要的信息。
[SRS_BSW_00304] 所有 AUTOSAR 基础软件模块应当使用以下数据类型替代原生 C 数据类型(AUTOSAR 标准类型)。
[SRS_BSW_00305] 数据类型应当遵循特定命名约定(如 TypeName_t)。
[SRS_BSW_00306] AUTOSAR 基础软件模块应当是编译器/平台无关的。
[SRS_BSW_00307] 全局变量应当遵循命名约定(如 ModuleName_VariableName)。
[SRS_BSW_00308] AUTOSAR 基础软件模块不得在头文件中定义全局数据,应在 C 文件中定义。
[SRS_BSW_00309] 所有只读全局数据应当显式使用 const 关键字标记。
[SRS_BSW_00310] API 命名应当遵循约定(如 ModuleName_FunctionName)。
[SRS_BSW_00312] 共享代码应当是可重入的(re-entrant)。
[SRS_BSW_00314] 所有内部驱动模块应当将中断帧定义与中断服务例程分离。
[SRS_BSW_00321] AUTOSAR BSW 模块的版本号应当按特定规则枚举(major.minor.patch)。
[SRS_BSW_00323] 所有 AUTOSAR 基础软件模块应当检查传入 API 参数的有效性。
[SRS_BSW_00325] 中断服务例程和在中断上下文中运行的函数的运行时应当保持较短。
[SRS_BSW_00327] 错误值应当遵循命名约定。
[SRS_BSW_00330] 在源码使用且运行时关键的情况下,允许使用宏代替函数。
[SRS_BSW_00331] 所有基础软件模块应当严格分离错误和状态信息。
[SRS_BSW_00333] 对于每个回调函数,应当说明它是否从中断上下文调用。
[SRS_BSW_00334] 所有 AUTOSAR 基础软件模块应当提供一个包含元数据的 XML 文件。
[SRS_BSW_00335] 状态值应当遵循命名约定。
[SRS_BSW_00341] 模块文档应当包含所有必要的信息。
[SRS_BSW_00342] 应当可以使用源代码模块和目标代码模块(甚至是混合形式)构建 AUTOSAR ECU。
[SRS_BSW_00343] 基础软件模块规范和配置的时间单位应当优先选择物理时间单位。
[SRS_BSW_00346] 所有 AUTOSAR 基础软件模块应当至少提供一组基础模块文件。
[SRS_BSW_00347] BSW 驱动不同实例之间应当有命名分离。
[SRS_BSW_00348] 所有 AUTOSAR 标准类型和常量应当放置在标准类型头文件中(StandardTypes.h / PlatformTypes.h)。
[SRS_BSW_00350] 所有 AUTOSAR 基础软件模块应当允许启用/禁用开发错误的检测和报告。
[SRS_BSW_00353] 目标和编译器特定范围的整数类型定义应当放置和组织在单个类型头文件中(PlatformTypes.h)。
[SRS_BSW_00357] API 调用的成功/失败应当使用标准返回类型(Std_ReturnType)。
[SRS_BSW_00358] AUTOSAR 基础软件模块实现的 init() 函数的返回类型应当为 void。
[SRS_BSW_00359] 所有 AUTOSAR 基础软件模块的回调函数应当尽可能避免 void 以外的返回类型。
[SRS_BSW_00360] AUTOSAR 基础软件模块的回调函数允许有参数。
[SRS_BSW_00361] 所有非标准化的编译器特定关键字的映射应当放置在编译器特定类型和关键字头文件中(Compiler.h)。
[SRS_BSW_00369] 所有 AUTOSAR 基础软件模块不得通过 API 返回特定的开发错误代码。
[SRS_BSW_00371] 对于所有 AUTOSAR 基础软件模块,函数指针作为 API 参数传递是禁止的。
[SRS_BSW_00373] 每个 AUTOSAR 基础软件模块的主处理函数应当根据定义的约定命名(如 ModuleName_MainFunction())。
[SRS_BSW_00374] 所有基础软件模块应当提供可读的模块供应商标识(vendor ID)。
[SRS_BSW_00377] 基础软件模块可以返回模块特定类型。
[SRS_BSW_00378] AUTOSAR 应当提供一个布尔类型(boolean)。
[SRS_BSW_00379] 所有软件模块应当在头文件和模块 XML 描述文件中提供模块标识符。
[SRS_BSW_00409] 所有生产代码错误 ID 符号由 Dem 模块定义,并由其他 BSW 模块从 Dem 配置中获取。
[SRS_BSW_00417] 不属于 SW-C 的软件应当仅在 DEM 完全运行后上报错误事件。
[SRS_BSW_00423] 具有 AUTOSAR 接口的 BSW 模块应当可以用 SW-C 模板描述。
[SRS_BSW_00424] BSW 模块主处理函数不得进入等待状态。
[SRS_BSW_00425] BSW 模块描述模板应当提供建模可调度对象的定义触发条件的手段。
[SRS_BSW_00426] BSW 模块应当确保在 BSW 模块间共享的数据的一致性。
[SRS_BSW_00427] ISR 函数应当在 BSW 模块描述模板中定义和记录。
[SRS_BSW_00428] BSW 模块应当说明其主处理函数是否必须按特定顺序或序列执行。
[SRS_BSW_00429] 对 OS 的访问应当受限制(仅 BSW 调度器和 RTE 可访问 OS 对象)。
[SRS_BSW_00432] 模块应当为读/接收和写/发送数据路径提供独立的主处理函数。
[SRS_BSW_00433] 主处理函数只应当由 BSW 调度器提供的任务体调用。
5.1.4 关闭操作(Shutdown Operation)
[SRS_BSW_00170] AUTOSAR SW-C 应当提供关于它们对故障、信号质量、驱动需求的依赖信息。
[SRS_BSW_00336] 基础软件模块应当能够关闭。
[SRS_BSW_00375] 基础软件模块应当上报唤醒原因。
5.1.5 故障操作(Fault Operation)
[SRS_BSW_00024] 头文件应当防止多次包含。
[SRS_BSW_00337] 开发错误应当分类。
[SRS_BSW_00339] 生产相关错误状态应当被报告。
[SRS_BSW_00369] (已在 5.1.3 中列出)
[SRS_BSW_00417] (已在 5.1.3 中列出)
[SRS_BSW_00422] 错误状态信息的预去抖在 DEM 中完成。
[SRS_BSW_00452] 运行时错误应当分类。
[SRS_BSW_00458] 生产错误应当分类。
[SRS_BSW_00466] 扩展生产错误应当分类。
[SRS_BSW_00473] 瞬态故障应当分类。
[SRS_BSW_00385] 基础软件模块应当列出可能的错误通知。
[SRS_BSW_00386] BSW 应当指定错误检测的配置。
[SRS_BSW_00456] 应当定义一个头文件以协调 BSW 模块。
[SRS_BSW_00457] 应用软件组件的回调函数应当由基础软件调用。
[SRS_BSW_00462] 所有标准化的 AUTOSAR 接口应当具有唯一的需求 ID/编号。
[SRS_BSW_00464] 文件名应当区分大小写,无论在哪个文件系统中使用。
[SRS_BSW_00469] 生产错误和扩展生产错误的故障检测和恢复。
[SRS_BSW_00470] 生产错误检测的执行频率。
[SRS_BSW_00471] 检测到生产错误时不得引起死锁——具备从先前检测到的生产错误恢复的能力。
[SRS_BSW_00472] 避免检测到同一根本原因的两个生产错误。
5.2 非功能需求(Non-Functional Requirements)
5.2.1 时序需求(Timing Requirements)
[SRS_BSW_00328] 所有 AUTOSAR 基础软件模块应当避免代码重复。
[SRS_BSW_00478] 主函数的时序限制。
5.2.2 资源使用(Resource Usage)
[SRS_BSW_00010] (已在 5.1.3 中列出)
5.2.3 可用性(Usability)
[SRS_BSW_00459] 应当可以在不同分区中并发执行 BSW 模块提供的服务。
[SRS_BSW_00460] BSW 分布式执行的机制。
5.2.4 其他工作包产出(Output for other WPs)
[SRS_BSW_00483] BSW 模块应当在内部处理缓冲区对齐。
[SRS_BSW_00480] 空指针错误应当遵循命名规则。
[SRS_BSW_00481] 无效配置集选择错误应当遵循命名规则。
[SRS_BSW_00482] GetVersionInfo 函数应当遵循命名规则。
[SRS_BSW_00479] 处理外部设备请求的接口。
6 需求追溯(Requirements traceability)
每条 SRS_BSW_* 需求至少被一个 SWS 规范文档满足。详细的满足关系在 SWS 文档(如 AUTOSAR_SWS_BSWGeneral.pdf、AUTOSAR_SWS_*.pdf)中列出。
主要追溯原则:
- 每个 BSW 模块的 SWS 文档明确列出该模块满足的所有 SRS 需求;
- 某些通用 SRS 需求(如命名约定)由所有 BSW 模块共同满足;
- 特定 SRS 需求(如 OS 时间保护)由单个模块(如 OS)满足。
7 变更历史(Change history)
4.4.0 版本变更:
- 增加了安全事件分类的需求
SRS_BSW_00488; - 增加了模块初始化错误的需求
SRS_BSW_00487; - 清理头文件结构;
- 移除过时引用;
- 编辑性修订。
4.3.1 版本变更:
- 头文件生命周期的更新;
- 更新相关标准和规范;
- 编辑性修订。
4.3.0 版本变更:
- 为 C90 添加接口;
- MISRA 2012 支持更新;
- 移除过时引用;
- 编辑性修订。
4.2.2 版本变更:
- 引入新需求
SRS_BSW_00403、SRS_BSW_00351; - 修改需求
SRS_BSW_00406、SRS_BSW_00450; - 调试支持标记为过时。
早期版本(4.2.1、4.2.0、4.1.x 等)包含了对 PBL/PBS ECU 配置支持、OSEK 引用更新、配置类改进、需求结构调整等大量变更。完整变更历史见原文第 5–6 页。