BSW:辅助模块、校验与代码生成笔记
一、辅助模块与BSW的校验和代码生成
1. AUTOSAR BSW的工作配置成果
已完成配置的BSW模块覆盖通信、管理、协议栈三大核心领域,具体如下:
- 通信模块:
- CAN通信:配置CAN、CANIF(CAN接口)、PDUR(Pdu路由器)、COM(通信管理)模块
- LIN通信:配置LIN、LINIF(LIN接口)模块
- ETH(以太网)通信:配置ETH、ETHIF(以太网接口)、TCPIP(TCP/IP协议栈)、SOAD(Socket Adaptor)等模块
- 管理模块:
- 网络管理:配置NM(网络管理)、CANNM(CAN网络管理)、LINNM(LIN网络管理)、COMM(通信管理)模块
- ECU管理:配置ECUM(ECU管理)模块
- 存储管理:配置NVM(非易失性存储)、MEMIF(存储接口)、FEE(闪存仿真EEPROM)模块
- 协议栈:
- 诊断协议:配置DCM(诊断通信管理)、DEM(诊断事件管理)、CANTP(CAN传输协议)、DOIP(诊断通信-over-IP)模块
- 标定协议:配置XCP(通用标定协议)模块
2. 其他辅助模块
辅助模块是BSW层校验与功能正常运行的基础,需按需添加,具体分类及作用如下:
- 运算库:提供核心计算与校验能力
- CRC校验库:用于数据完整性校验(如ECU间通信数据、存储数据的校验)
- BFX库:位处理与定点计算函数库(如位操作、定点数运算)
- MFL库:浮点值数学函数库(如浮点加减乘除、三角函数)
- MFX库:定点值数学函数库(如定点数精度转换、算术运算)
- 标准库:定义工程基础环境与数据类型
- Platform:定义MCU平台类型、数据长度(如32位/64位)、编译器类型等工程基础参数
- Standard:定义标准数据类型(如TRUE/FALSE、uint8/uint16)、宏定义等
- 功能库:提供专项功能支持
- STBM(StbM,时间同步管理):实现ECU间或模块间的时间同步
- DET(开发错误追踪):追踪并记录BSW层开发阶段的错误(如模块调用异常、参数错误)
注意事项
- 必须添加所有依赖的辅助模块,否则BSW层校验无法通过(如使用CAN通信需确保CRC库已添加);
- 若启用特殊功能(如E2E数据保护、Watchdog看门狗),需额外引入对应的辅助模块(如E2E模块、Wdg模块)。
3. BSW代码生成与校验
使用RTA工具(RTA Code Generator)完成BSW代码生成,核心流程分为5步:
1)打开RTA Code Generator对话框
- 操作步骤:
- 通过ECU Navigator选中目标工程;
- 点击右侧下拉三角,选择“Open RTA Code Generator Dialog”;
- 对话框左侧包含3个核心配置选项(用于后续参数设置)。
2)配置BSW代码生成模块
- 关键配置项:
- 定义BSW代码输出路径(需与工程目录结构匹配,避免路径错误导致生成失败);
- 勾选需要生成的代码模块(必须包含功能所用模块及所有依赖模块,缺一不可)。
- 模块选择原则(按功能分类勾选):
- 通信功能:勾选COM、CAN、LIN、ETH等;
- 诊断功能:勾选DCM、DEM、CANTP等;
- 以太网功能:勾选ETH、TCPIP、SOAD等;
- 存储功能:勾选NVM、MEMIF、FEE等;
- 标定功能:勾选XCP等。
3)目标生成物配置项
“生成物”指代码生成的输出文件类型,需根据需求勾选,具体说明如下:
生成选项 | 内容说明 | 适用场景 |
---|---|---|
Dynamic BSW Code | 配置代码+define代码(含头文件、参数C文件) | 所有代码生成场景(必选) |
BSW模块ARXML描述文件 | 生成BSW模块的ARXML配置文件 | 首次生成/配置修改后(必选) |
Static BSW Code | BSW层静态代码(固定逻辑,不随配置变更) | 首次生成/静态逻辑更新 |
Integration Code | 模块集成代码(用于模块间接口关联) | 多模块协同场景(必选) |
Validation Only | 仅校验配置,不生成代码 | 配置初步检查(可选) |
- 首次生成建议:勾选“Dynamic BSW Code、BSW模块ARXML描述文件、Static BSW Code、Integration Code”前四项,确保完整生成代码与配置文件。
4)配置项校验
生成代码前需通过工具校验配置合法性,核心步骤与错误处理如下:
- 错误检查方法:
- 查看Console输出栏(实时显示校验日志,快速定位明显错误);
- 检查Problems选项卡(列出所有校验错误/警告,含错误位置与原因);
- 若未显示Problems选项卡,通过“Window→Show View→Others”搜索打开。
- 常见错误类型:
- 未声明错误:缺少必要配置项声明(如未定义MCU平台类型);
- 引用错误:模块间引用冲突(如A模块引用的B模块未配置)或引用源消失(如删除了已被引用的ARXML文件);
- 值声明错误:不同模块的配置项数值冲突(如两个模块对同一参数的取值不一致)。
- 修改原则:
- 优先按照工具提示的错误信息逐步修改;
- 若不确定配置,可对比成熟样例工程,暂用默认值;
- 使用大屏幕显示,避免因界面遮挡导致信息遗漏。
5)工作成果详解
代码生成后,工程目录会新增以下核心内容:
- 生成内容位置:
- Software文件夹:生成BSW模块的应用层模块(如BSWM、DCM的应用逻辑代码);
- Data Types文件夹:生成各模块依赖的数据类型定义(如自定义枚举、结构体);
- Infrastructure文件夹:新增BSW层基础架构相关文件(如模块接口声明)。
- 代码结构:
- 每个模块目录包含“API文件夹”(接口函数声明)和“Static Code”(静态逻辑代码);
- Dynamic Code目录:包含配置代码(如参数初始化)和define代码(宏定义)。
4. 内容总结
本章重点
- 回顾BSW层已配置的核心模块(通信、管理、协议栈);
- 明确辅助模块的分类、作用及“必加依赖”原则;
- 完整演示RTA BSW Generator的配置流程(从打开对话框到成果查看)。
实践建议
- 首次BSW代码生成耗时较长(可能数小时至数十小时),需预留足够时间;
- 配置错误是正常过程,应将错误排查视为熟悉模块依赖的学习机会;
- 建议多动手操作,大胆尝试不同配置(可基于样例工程修改,降低风险)。
错误处理流程
- 先查看Console输出,定位实时错误;
- 再检查Problems选项卡,获取完整错误列表;
- 根据错误信息找到对应的模块ARXML文件,定位出错位置并修改。
二、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
---|---|---|---|
AUTOSAR BSW层配置介绍 | 已配置模块:通信(CAN/LIN/以太网)、管理(网络/ECU/存储)、协议栈(诊断/标定) | 模块间的依赖关系(如CAN通信需依赖CRC库)、配置冲突处理 | ⭐⭐⭐⭐ |
辅助模块的作用 | 运算库(CRC/BFX/MFL/MFX)、标准库(Platform/Standard)、功能库(StbM/DET) | 依赖模块漏选导致校验失败、特殊功能需额外加模块(如E2E) | ⭐⭐⭐ |
代码生成流程 | 使用RTA工具生成动态代码、静态代码、ARXML文件、集成代码 | 模块勾选不全(漏依赖)、输出路径配置错误 | ⭐⭐⭐⭐ |
错误排查方法 | 1. 查看Console输出 2. 检查Problems选项卡 3. 对比ARXML与样例工程 | 引用失效(Invalid引用)、值声明冲突 | ⭐⭐⭐⭐⭐ |
生成成果 | BSW静态/动态代码、ARXML描述文件、应用层组件(BSWM/DCM等) | 输出路径与工程结构不匹配、生成文件缺失 | ⭐⭐ |
心态与建议 | 错误为正常过程,需耐心对比样例调试;首次配置可能耗时数天 | 首次生成耗时较长导致的焦虑、不敢尝试修改配置 | ⭐⭐ |