基础软件模块通用规范(General Specification of Basic Software Modules)

📄 文档 ID:578 🏷 类型:SWS(软件规范) 📅 版本:AUTOSAR CP 4.4.0 📑 页数:85 📌 状态:Final 🔗 原 PDF:AUTOSAR_SWS_BSWGeneral.pdf

目录

1 介绍与功能概述(Introduction and functional overview)

本文档是关于 AUTOSAR 基础软件模块的通用规范。它是对各 BSW 模块规范的补充,提供了对各种 BSW 模块通用的规范。

1.1 追溯(Traceability)

本文档中的规范项描述了 BSW 模块实现的工作产物,关联到 AUTOSAR General Requirements on Basic Software Modules [3] 中描述的基础软件需求。

对于每个 BSW 模块,规范项与基础软件需求之间的追溯在本文档和相应的 BSW 模块规范文档的范围内。参见第 6 章"需求追溯"。

BSW 模块实现必须保证与本文档及相应 BSW 模块规范文档中的规范项可追溯。

某些规范项不适用于每个 BSW 模块。在这种情况下,其描述会明确说明适用条件。如果未提及条件,则该规范项适用于所有 BSW 模块。

更多信息参见 AUTOSAR 标准化模板 [13] 中"追溯支持"章节。

1.2 文档约定(Document conventions)

代码示例、符号和其他技术术语通常以等宽字体排版,例如 const

AUTOSAR 术语表 [7]、本规范(第 2 章)或相关文档中定义的术语和表达式以斜体排版,例如 Module implementation prefix

基础软件需求在文档 SRS BSW General [3] 中描述。这些需求使用 SRS_BSW_<n> 引用,其中 <n> 是需求 ID。例如:SRS_BSW_00009

每个规范项以 [SWS_BSW_<nr>] 开头,其中 <nr> 是规范项的唯一标识号。该编号后是规范项的标题。规范项描述的范围以半角括号 ⌈ ... ⌋ 标记,其后是在花括号中的来自 SRS BSW General 的相关需求列表。

示例

[SWS_BSW_<nr>] Specification item title
⌈ Specification item description. ⌋ (SRS_BSW_<nr1>, SRS_BSW_<nr2>)

对其他 AUTOSAR 文档的规范项引用使用相应文档的约定,例如 [SWS_CANIF_00001]

2 缩略语与术语(Acronyms and abbreviations)

缩略语说明
BSW driverBSW 驱动:BSW 模块列表 [1] 中"AUTOSAR 软件层"列所列。
Camel case驼峰命名:本文档不定义具体规则。
ISRInterrupt Service Routine(中断服务例程)
MCALMicrocontroller Abstraction Layer(微控制器抽象层)
MIPModule Implementation Prefix(模块实现前缀)
SchMBSW Scheduler(BSW 调度器)
SFRSpecial Function Register(特殊功能寄存器)
VFBVirtual Functional Bus(虚拟功能总线)

3 相关文档(Related documentation)

3.1 输入文档

编号文档名原 PDF
[1]List of Basic Software ModulesAUTOSAR_TR_BSWModuleList.pdf
[2]Layered Software ArchitectureAUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[3]General Requirements on Basic Software ModulesAUTOSAR_SRS_BSWGeneral.pdf
[4]Basic Software Module Description TemplateAUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
[5]Specification of ECU ConfigurationAUTOSAR_TPS_ECUConfiguration.pdf
[6]Specification of Standard TypesAUTOSAR_SWS_StandardTypes.pdf
[7]AUTOSAR Glossary
[8]Specification of RTEAUTOSAR_SWS_RTE.pdf
[9]Specification of Platform TypesAUTOSAR_SWS_PlatformTypes.pdf
[10]Specification of Compiler AbstractionAUTOSAR_SWS_CompilerAbstraction.pdf
[11]Specification of Communication Stack TypesAUTOSAR_SWS_CommunicationStackTypes.pdf
[12]Specification of Memory MappingAUTOSAR_SWS_MemoryMapping.pdf
[13]AUTOSAR Standardization Template

3.2 相关标准与规范

4 约束与假设(Constraints and assumptions)

4.1 限制(Limitations)

本文档定义的是 BSW 模块的通用规范。每个 BSW 模块的具体规范在各自的 SWS 文档中定义。

4.2 对汽车领域的适用性(Applicability to car domains)

无限制。

5 对其他模块的依赖(Dependencies to other modules)

5.1 文件结构(File structure)

5.1.1 模块实现前缀(Module implementation prefix)

每个 BSW 模块都有一个实现前缀(Module Implementation Prefix,MIP),形式为 <Mip>。MIP 是模块短名称(缩写)的驼峰形式,例如:

5.1.2 模块实现文件(Module implementation files)

每个 BSW 模块应当提供以下文件:

5.1.3 导入与导出信息(Imported and exported information)

每个模块的 <Mip>.h 应当导入其依赖的其他模块的头文件。

5.1.4 BSW 模块描述(BSW Module Description)

每个模块有一个对应的 BSW Module Description XML 文件。

5.1.5 模块文档(Module documentation)

每个模块应附有用户手册和集成指南。

5.1.6 源文件结构(Code file structure)

源文件应包含:

5.1.7 头文件结构(Header file structure)

头文件应包含:

5.1.8 版本检查(Version check)

模块应当使用 SWS_BSW_NNNNN 中的版本检查宏验证所依赖模块的版本。

6 需求追溯(Requirements traceability)

本文档的 SWS 规范项与 SRS 需求的对应关系详原文 6 章。本文档中约 100+ SWS_BSW_* 规范项满足 SRS_BSWGeneral 中约 100 条 SRS 需求。

关键追溯(摘录):

SWS 规范项满足 SRS 需求
SWS_BSW_00002配置规则(SRS_BSW_00167SRS_BSW_00344 等)
SWS_BSW_00010版本与标识(SRS_BSW_00003SRS_BSW_00379
SWS_BSW_00050初始化(SRS_BSW_00101SRS_BSW_00406
SWS_BSW_10000+ 等错误处理(SRS_BSW_00337SRS_BSW_00452SRS_BSW_00458SRS_BSW_00466SRS_BSW_00473

7 功能规范(Functional specification)

7.1 一般实现规范(General implementation specification)

7.1.1 MISRA C 与 C 标准合规(Conformance to MISRA C and C standard)

BSW 模块的 C 代码应当遵循 MISRA C 2012 标准。

7.1.2 AUTOSAR BSW 需求合规(Conformance to AUTOSAR BSW Requirements)

BSW 模块应当满足 AUTOSAR_SRS_BSWGeneral 中的所有适用需求。

7.1.3 AUTOSAR 方法论合规(Conformance to AUTOSAR Methodology)

BSW 模块的开发与集成应当遵循 AUTOSAR 方法论。

7.1.4 平台无关性与编译器抽象(Platform independency and compiler abstraction)

BSW 模块应当使用 Compiler.hPlatformTypes.h 实现平台无关性。MCAL 之上的模块代码不得使用处理器或编译器特定的关键字。

7.1.5 可配置性(Configurability)

BSW 模块应当支持以下三种配置类:

7.1.6 命名约定(Naming conventions)

AUTOSAR BSW 模块应当遵循以下命名约定:

7.1.7 配置参数(Configuration parameters)

每个配置参数应当具有:

7.1.8 共享代码(Shared code)

共享代码应当是可重入的。

7.1.9 全局数据(Global data)

全局变量应当在 C 文件中定义(不在头文件中);只读数据应当标记为 const

7.1.10 宏与内联函数的使用(Usage of macros and inline functions)

在运行时关键的代码中允许使用宏代替函数。编译器抽象宏 INLINELOCAL_INLINE 应用于内联函数。

7.1.11 调度函数的调用(Calling Scheduled functions)

主处理函数(<Mip>_MainFunction()只应当由 BSW 调度器调用。

7.1.12 排他区(Exclusive areas)

共享资源的临界区应当通过 SchM 或 OS 机制处理。

7.1.13 回调(Callouts)

回调函数由模块提供,由其他模块或 RTE 调用。

7.1.14 AUTOSAR 接口(AUTOSAR Interfaces)

具有 AUTOSAR 接口的 BSW 模块应当可以用 SW-C 模板描述。

7.1.15 中断服务例程(Interrupt service routines)

ISR 应当由 OS、CDD 或硬件相关模块提供。Cat1 ISR 由驱动/应用直接管理;Cat2 ISR 由 OS 管理。

7.1.16 受限的 OS 功能访问(Restricted OS functionality access)

只有 BSW 调度器和 RTE 可以使用 OS 对象。BSW 模块的运行时不得直接调用 OS 服务(除少数允许的服务外)。

7.1.17 访问硬件寄存器(Access to hardware registers)

硬件寄存器只能由 MCAL 模块访问。其他模块通过 MCAL 提供的接口访问硬件。

7.1.18 数据类型(Data types)

BSW 模块应当使用 AUTOSAR 标准数据类型(uint8uint16 等),而非原生 C 类型。

7.1.19 多分区系统上的分布式执行(Distributed execution on multi-partitioned systems)

BSW 模块可以分布在多个分区上运行。详细机制见 AUTOSAR_EXP_BSWDistributionGuide

7.2 错误处理(Error Handling)

7.2.1 分类(Classification)

AUTOSAR 定义以下错误类别:

7.2.2 开发错误(Development errors)

开发错误通过 Det(Default Error Tracer)报告。每个开发错误具有:

开发错误在生产构建中应被禁用。

7.2.3 运行时错误(Runtime errors)

运行时错误也通过 Det 报告,与开发错误类似,但用于运行时检测到的违反约束情况。

7.2.4 瞬态故障(Transient faults)

瞬态故障是短时出现的硬件故障。模块可记录瞬态故障计数,并在超过阈值后升级为生产错误。

7.2.5 扩展生产错误与生产错误(Extended production errors and production errors)

生产错误和扩展生产错误通过 DEM(Diagnostic Event Manager)报告。模块应当使用 Dem_ReportErrorStatus() 上报生产错误,使用 Dem_SetEventStatus() 上报扩展生产错误。

7.2.6 安全事件(Security events)

安全事件通过 IdsM(Intrusion Detection System Manager)报告,适用于 4.4 引入的安全机制。

7.2.7 特定主题(Specific topics)

包括错误 ID 命名规则、错误回调、去抖(debounce)等。

7.3 元数据处理(Meta Data Handling)

BSW 模块应当通过 MetaData 提供关于其功能的信息,供 RTE、工具等使用。元数据在 BSW Module Description XML 中定义。

8 API 规范(API specification)

8.1 导入类型(Imported types)

每个 BSW 模块应当导入其依赖的 AUTOSAR 标准类型(Std_ReturnTypeStd_VersionInfoType)和模块特定类型。

8.2 类型定义(Type definitions)

模块特定类型应当<Mip>_TypeName 命名。

8.3 函数定义(Function definitions)

8.3.1 API 函数的一般规范

BSW 模块的 API 函数应当遵循:

8.3.2 初始化函数

每个模块应当提供 <Mip>_Init() 函数,用于初始化模块。

8.3.3 去初始化函数

每个模块应当提供 <Mip>_DeInit() 函数(如果适用),用于去初始化。

8.3.4 获取版本信息

每个模块应当提供 <Mip>_GetVersionInfo() 函数,用于返回模块的版本信息。

8.4 回调通知(Callback notifications)

模块可定义回调函数,由其他模块或 RTE 调用。回调函数应当在头文件中声明。

8.5 调度函数(Scheduled functions)

模块可声明主处理函数(如 <Mip>_MainFunction()),由 BSW 调度器周期性调用。

8.6 期望接口(Expected Interfaces)

每个模块应当声明它需要从其他模块获得的接口:

8.7 服务接口(Service Interfaces)

不适用。

9 时序图(Sequence diagrams)

不适用。

10 配置规范(Configuration specification)

10.1 配置规范介绍(Introduction to configuration specification)

10.1.1 配置与配置参数

每个 BSW 模块通过配置工具生成配置参数。

10.1.2 变体(Variants)

变体支持同一模块的多个配置实例,例如不同的 ECU 配置。

10.1.3 容器(Containers)

容器用于分组相关的配置参数。

10.1.4 配置参数表(Configuration parameter tables)

每个容器和参数在 BSW Module Description 中以表格形式定义。

10.1.5 配置类标签(Configuration class labels)

三种配置类:

10.2 通用配置规范(General configuration specification)

10.2.1 配置文件(Configuration files)

每个模块的配置文件应当由配置工具生成,并符合 BSW Module Description 模板。

10.2.2 配置参数的实现名称(Implementation names for configuration parameters)

配置参数的 C 实现名应当遵循 <Mip>_Conf_ElementName 模式。

10.2.3 编译前配置(Pre-compile time configuration)

通过 #define 实现。

10.2.4 链接时配置(Link time configuration)

通过链接时的 C 对象实现。

10.2.5 构建后配置(Post-build time configuration)

通过构建后加载的数据结构实现。

10.2.6 配置变体(Configuration variants)

每个模块可定义多个配置变体,例如 VariantPreCompileVariantLinkTimeVariantPostBuild

10.3 发布信息(Published Information)

每个模块应当发布以下标准信息:

发布参数说明
<Mip>_PUBLISHED-INFORMATION发布信息的版本
<MIP>_MODULE_ID模块 ID(uint16)
<MIP>_VENDOR_ID供应商标识(uint16)
<MIP>_SW_MAJOR_VERSION软件主版本号
<MIP>_SW_MINOR_VERSION软件次版本号
<MIP>_SW_PATCH_VERSION软件补丁版本号

📋 校对记录

校对轮次:L1 自动校对(2026-06-13)