徽州骆驼 · 7月23日

AUTOSAR BSW 设计通用步骤

image.png

作者:李漠尘

荐言:漠尘兄的新书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 模块:

image.png

image.png

image.png

02 BSW 模块配置

BSW 模块配置在ISOLAR-AB 左侧的 “ECU Navig”页下进行,如图5-2所示,通常包括arxml创建、各模块配置两个步骤。

(1)模块创建

按照图3和图4所示的步骤创建J1939Tp模块。

image.png

image.png

下面对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节的方法进行。

image.png

04 微控制器抽象层配置

部分 BSW 模块在开发过程中涉及 MCAL 的配置。例如,J1939Tp 增加了多个 CAN帧,故需要配置 MCAL的 CAN 模块,即新增 CAN 过滤掩码和收发硬件对象。

05 软件集成

下面继续以J1939Tp为例,总结 BSW 模块软件集成和代码编写的一般步骤。

(1)静态代码移植

依照图5-6,在ISOLAR-AB环境下生成J1939Tp模块的静态代码并将其复制到 “...\src\BSW\src\BSW\Gen\J1939Tp”路径下。

image.png

(2)集成文件移植

依照图5-7,在ISOLAR-AB环境下生成J1939Tp模块的集成代码并将J1939Tp_ Cfg_SchM.h文件复制到 “...\src\INFRA\schm\inc”路径下。

image.png

(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所示的界面,再按照图示步骤操作。

image.png

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)加入技术交流群,请备注研究方向。
推荐阅读
关注数
5692
内容数
428
汽车电子与软件行业的相关技术报道及解读。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息