作者:李漠尘
荐言:漠尘兄的新书《AUTOSAR与汽车控制器软件开发》出版了!本书通过一个具体的工程实例(重卡自动驾驶整车控制器项目),深入浅出地讲解AUTOSAR工具链方式设计车载ECU软件的思路方法。适合于具有一定车载嵌入式软件开发经验和C语言基础的读者,可作为高等院校本科生、研究生学习嵌入式软件开发的参考书,也可供汽车电子行业软件工程师学习和参考。
本文节选自此书的5.1章节:BSW 设计通用步骤
以下是正文:
BSW 模块设计是使用 AUTOSAR工具链开发车载 ECU 软件的核心和难点,本文以J1939Tp模块为例,介绍 AUTOSAR CP中 BSW 模块的通用设计步骤。
01 BSW 相关模块梳理
在设计一个 BSW 模块前,首先应研读相应规范,找出本模块与其他模块的联系,从而确认需配置的所有 BSW 模块。
例如,根据如图1所示的 AUTOSAR通信栈图,可以分析出J1939Tp设计需配置如表1所列的模块。
表1 J1939Tp应配置的 BSW 模块:
02 BSW 模块配置
BSW 模块配置在ISOLAR-AB 左侧的 “ECU Navig”页下进行,如图5-2所示,通常包括arxml创建、各模块配置两个步骤。
(1)模块创建
按照图3和图4所示的步骤创建J1939Tp模块。
下面对J1939Tp模块创建过程做几点说明。
① ARPackage路径建议为 “/ETAS_ Project/...”,否则在生成 “RTA-BSW”后程序工程的许多配置项需要手动修改。
② 新建的arxml文件存储至 “StaticCfg”文件夹下,图 5-4 中步骤 4 和 5 的次序不能更改。
(2)模块配置
依次配置 CAN、Ecuc、J1939DcmCDD、PduR、CanIf和J1939Tp模块。
03 基础模块配置
在 BSW 模块配置完成后,还需要在程序中调用其初始化和执行函数,前者在 EcuM 或BswM 模块中进行,后者在 Ecuc数据集中实现。下面依然以J1939Tp模块为例进行说明。
(1)初始化函数配置
J1939Tp模块的初始化函数是J1939Tp_Init,其调用在 BswM 中分两步配置。
①新建一个名为 “BswM _ AI_J1939TpInit”的行为,再为其添加一个 “BswMUser-CallOut”,在其中调用J1939Tp_Init ()函数。
②将“BswM_ AI_J1939TpInit”添加到 “BswM AL BswMSwitchRun”行为列表中。
(2)执行函数配置
按照图5-5的方法以10ms为周期循环调用J1939Tp_ MainFunction,按照3.8.2节的方法进行。
04 微控制器抽象层配置
部分 BSW 模块在开发过程中涉及 MCAL 的配置。例如,J1939Tp 增加了多个 CAN帧,故需要配置 MCAL的 CAN 模块,即新增 CAN 过滤掩码和收发硬件对象。
05 软件集成
下面继续以J1939Tp为例,总结 BSW 模块软件集成和代码编写的一般步骤。
(1)静态代码移植
依照图5-6,在ISOLAR-AB环境下生成J1939Tp模块的静态代码并将其复制到 “...\src\BSW\src\BSW\Gen\J1939Tp”路径下。
(2)集成文件移植
依照图5-7,在ISOLAR-AB环境下生成J1939Tp模块的集成代码并将J1939Tp_ Cfg_SchM.h文件复制到 “...\src\INFRA\schm\inc”路径下。
(3)内存映射文件移植
将J1939Tp_ MemMap.h和J1939Tp_ Cfg_ MemMap.h内存映射头文件复制到 “...\src\INFRA\memmap”文件夹下。这类文件在启用下列 “RTE 生成”命令 (比4.2.4节的 RTE命令多了 “--samples=memmap”,用于生成内存映射头文件)时输出程序文件模板,可能需要手动优 化:--strict-unconnected-rport-check=off-err=xml-nts--samples=memmap--os-define-osenv=RTAOS40--exclusive-area-optimization=disable--os-output-param=all
(4)生成操作系统代码
部分 BSW 模块设计完成后需重新生成 OS代码,方法参见3.5.4节。
(5)用户代码编写
部分 BSW 模块需要手动编写用户代码,例如,J1939Tp模块需创建J1939DcmCDD.c和J1939DcmCDD.h两个程序文件并在其中完成下列函数的实现:
J1939DcmCDD_StartOfReception;
J1939DcmCDD_ CopyRxData;
J1939DcmCDD_ CopyTxData;
J1939DcmCDD_ TpRxIndication;
J1939DcmCDD_ TpTxConfirmation。
(6)Hightec配置
须在 Hightec集成开发环境中手动添加新增头文件的路径。具体方法是:在工程名上右击选择 “Properties”,弹出图5-8所示的界面,再按照图示步骤操作。
J1939Tp模块须在 Hightec中添加下列头文件路径:
...\src\CDD\J1939Dcm\inc
...\src\BSW\src\BSW\Gen\J1939Tp\api
...\src\BSW\src\BSW\Gen\J1939Tp\src
...\src\BSW\src\BSW\Gen\J1939Tp
本文摘编自《AUTOSAR与汽车控制器软件开发》,化学工业出版社出版,经出版方授权发布,转载请标明文章来源。
END
作者:李漠尘
来源: 汽车电子与软件
推荐阅读:
更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。