![CP AUTOSAR 入门系列之理解 BSWGeneral CP AUTOSAR 入门系列之理解 BSWGeneral](https://www.autosemo.com/wp-content/uploads/2022/06/beepress10-1655638226.gif)
CP AUTOSAR 入门系列之理解 BSWGeneral
![CP AUTOSAR 入门系列之理解 BSWGeneral CP AUTOSAR 入门系列之理解 BSWGeneral](https://www.autosemo.com/wp-content/uploads/2022/06/beepress5-1655638226.gif)
中汽创智科技有限公司 – 基础软件部门
文章转载请注明作者、出处以及版权声明。未经授权,禁止用于商业目的。本文章仅代表作者观点,不对其中包含或引用信息的准确性、可靠性或完整性提供任何明示或默示的承诺及保证。对于任何直接或间接采用、转载本文章信息产生的损失,作者不承担任何责任。
联系
如果您对本文档内容有任何建议,请发邮件至以下邮件列表。
邮件列表:
zhoushu@t3caic.com
autosemo-info@caam.org.cn
缩略语 | 描述 |
EcuC | ECU Configuration |
PDU | Protocol Data Unit |
DET | Default Error Tracer |
DEM | Diagnostic Event Manager |
IdsM | Intrusion Detection System Manager |
Ie | Implementation specific file name extension |
Ma | Module abbreviation |
Mip | Module implementation prefix |
vi | Vendor Id |
ai | Vendor Api Infix |
我们刚开始看AUTOSAR基础软件代码时,时常会想代码中的符号命名、代码文件命名及代码实现都是基于什么样的规则,而这些规则又在哪儿有定义。
BSWGeneral规范是AUTOSAR基础软件的通用性规范,对所有BSW模块都适用,可以理解成该部分是各AUTOSAR软件供应商所使用的编码规范的一部分,所以建议在该规范理解的基础上,再去阅读BSW模块代码。
该规范主要包括了文件结构、一般实现规范、错误处理、元数据、配置等,下面逐一进行介绍。
所有BSW模块的文件结构设计需遵循该内容规范要求,主要包括:
- 模块实现前缀
- 模块实现文件
- 导入和导出信息
- 模块文档
- 代码文件结构
- 头文件结构
- 版本检查
限于篇幅,这里仅对常接触的代码文件命名进行说明。
所有BSW模块的实现文件名前缀应符合以下命名规则:
<Ma>[_<vi>_<ai>]
<Ma>为BSW模块的模块缩写,比如COM模块的缩写是Com。
<Vi>为供应商ID号,该号在AUTOSAR官网可查。<ai>为供应商应用中缀。如果BSW模块没有供应商扩展的应用服务,那么中括号的内容可以省去。
模块实现前缀举例 [1]
所有BSW模块的实现文件名应符合以下命名规则:
<Mip>[_<Ie>]*.*
<Mip>为模块实现前缀。
[_<Ie>]为模块实现文件的扩展(.c或.h同样),表达为模块的子部分,比如COM模块的信号发送的实现代码文件可以是Com_Transmit.c
所有BSW模块的配置代码文件名应符合以下命名规则:
Pre-compile time:<Mip>[_<Ie>]_Cfg.h
Link time:<Mip>[_<Ie>]_Lcfg.c/h or <Mip>[_<Ie>]_Cfg.c/h
Post-build time:<Mip>[_<Ie>]_PBcfg.c/h
中断服务文件名应符合以下命名规则:
<Mip>[_<Ie>]_Irq.c ※ 如Gpt_Irq.c
AUTOSAR模块的代码实现需遵循该内容规范要求,主要包括:
-
符合MISRA C 标准和C标准(Conformance to MISRA C and C standard)
-
独立于平台要求和编译器抽象要求(Platform independency and compiler abstraction)
-
可配置性(Configurability)
-
不同的命名约定(Various naming conventions)
-
配置参数(Configuration parameters)
-
共享代码(Shared code)
-
全局数据(Global data)
-
宏和内联函数的用法(Usage of macros and inline functions)
-
主处理函数(Main processing functions)
-
专用区域(Exclusive areas)
-
回调函数(Callouts)
-
中断服务函数(Interrupt service routines)
-
数据类型(Data types)
限于篇幅,这里仅对常接触的数据类型进行说明。
AUTOSAR通用的数据类型主要分AUTOSAR Standard Types(Std_Types.h)和Platform Specific Types[8](Platform_Types.h)。
Std_Types.h包含Platform_Types.h、Compiler.h,并且定义Std_ReturnType、E_OK/ E_NOT_OK、STD_ON /STD_OFF。
Platform_Types.h主要对数据类型进行了定义。像原生C数据类型(char, int, short, long)在不同编译器平台在可移植性和可重用性方面可能存在问题,所以AUTOSAR在该头文件通过typedef方式对原生数据类型进行了替换。比如unsigned short替换为uint16。
uint16类型定义 [8]
BSW模块检出的所有错误分类有6种不同类型,即开发错误(development errors)、运行时错误(runtime errors)、瞬态故障(transient faults)、生产错误(production errors)、扩展生产错误(extended production errors)、信息安全事件(security event)。
开发错误、运行时错误及瞬态故障通知到DET[6]模块。使用的函数接口名分别是Det_ReportError(用于通知开发错误)、Det_ReportRuntimeError(用于通知运行时错误)、Det_ReportTransientFault(用于通知瞬态故障)。
生产错误以及扩展生产错误通知到DEM模块,使用的是DEM模块提供的函数接口。
信息安全事件通知到IdsM模块(2020年发布的R20-11版本开始才有IdsM模块),具体的信息安全事件定义专门的arxml文件[7]中。
※ 相关知识 – ISO26262的fault(故障), error(错误), failure(失效)
ISO26262 Part10[6]的4.3小节有对故障、错误和失效之间的关系进行说明。
故障导致失效的示例 [6]
元数据(Meta Data)在AUTOSAR术语表规范[4]中的定义是“Metadata is data about data”,字面理解是“关于数据的数据”,可以理解成数据的相关信息。Metadata在AUTOSAR中主要用在通信协议栈,EcuC规范[3]里有对 PDU MetaData 的具体描述,作为PDU的额外数据主要体现为PDU相关的ID信息或地址信息。
Pdu Meta-Data [3]
建议结合分层架构规范[5]理解该部分内容,AUTOSAR在配置方面支持三种分类,即Pre-compile time、Link time、Post-build time。
-
Pre-compile time:配置以预编译宏的形式体现在预编译阶段
-
Link time:配置体现在链接阶段。出于IP保护等原因,基础软件的实现部分需要做成库文件,配置代码在链接阶段结合库文件形成最终的可执行文件。
-
Post-build time:配置数据重定向在一个指定的地址区间,支持在软件发布后重载配置数据。比如在生产线生产ECU时,可以根据需要更新配置数据。
其中,Post-build time有两个比较重要的概念,即Post-build loadable和Post-build selectable。关于配置的进一步理解,限于篇幅限制,后续打算做一个专题讨论。
[1] AUTOSAR_SWS_BSWGeneral.pdf
[2] misra-c-2012.pdf
[3] AUTOSAR_TPS_ECUConfiguration.pdf
[4] AUTOSAR_TR_Glossary.pdf
[5] AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[6] ISO 26262-10-2018 Guidelines on ISO 26262.pdf
[7] AUTOSAR_MOD_GeneralDefinition_SecurityEvents.arxml
[8] AUTOSAR_SWS_PlatformTypes.pdf
评论0