Autosar NXP S32K3xx系列 基于EB Tresos 配置复杂驱动MCAL 工程导入关联 技术分享
本文介绍如何使用 S32DS 进行 AUTOSAR MCAL 工程的编译和调试本文不详细介绍MCAL配置重点在于集成虽然配置过程较为繁琐实操过一遍就会熟悉整个工程的框架。以后每次在 EB 中更新配置生成代码的文件夹已经集成在 S32DS 工程中无需手动拷贝。而且再次新建工程可以此为模版修改个别路径和链接位置即可十分方便。希望能够帮助到有此需求的朋友们也是在这里作下笔记避免自己遗忘。一、 软件安装列表全篇以 NXP S32K344 为例建立工程使用到的软件及对应版本如下EB Tresos Studio 28.2.0(需要License的话可以直接去NXP官方下载)MCAL 配置工具SW32K3_RTD_4.4_2.0.2 MCAL包S32K3 MCAL RTD 安装包使用 EB Tresos Studio 进行配置S32 Design Studio 3.5NXP S32 系列的集成开发环境IDE可用于工程创建、配置、编译、调试等5.9_D2312.zipS32DS 升级包第 9 版本5.8_D2311.zip适用于S32K3xx 的 RTD 基础开发包安装教程请移步其他博文本文直接跳过开始建立工程。二、 新建项目芯片本文使用S32K344举例(若使用K312,K146这些类型的芯片对应选择即可)设置 FPU选择Hardware选项栏三、 删除生成的文件和创建新文件夹工程创建会自动生成一些启动代码链接文件头文件和main.c文件等因为使用MCAL配置驱动层在MCAL包内部就含有启动代码(Platform/Startup)和链接文件(Platform/build_files/gcc)以及所需要的模块头文件和源文件因此需要把工程内的这些文件删掉。然后在工程目录下创建三个文件夹分别是GenerateMcal_PluginsTresos_Project Generate存放EB编译生成的includesrcoutput文件 Mcal_Plugins存放MCAL包导入的模块头文件源文件以及启动文件和链接文件等Tresos_Project存放EB工程同理创建Mcal_Plugins和Tresos_Project文件夹会看到新创建的文件夹和Debugger文件夹都呈现灰色是因为还没添加到编译路径。四、 将新创建的文件夹和Debugger文件夹添加到工程编译路径同理操作GenerateMcal_Plugins和Tresos_Project文件夹五、 在Mcal_Plugins文件夹下添加MCAL包所用到的模块并且删除一些不需要的文件只保留includesrcheaderstartupbuild_file本文使用S32K344 LED作为示例工程其中需要添加MCAL配置的模块有BasePlatformMcuDioPortRte模块。注意Rte模块里面包含了很多SchM文件因此记得需要添加Rte模块不然最后编译工程会出现很多报错)介绍一下 Autosar SchM 模块是 AUTOSAR 体系中的一个状态管理模块它的主要职责是管理系统的状态切换。SchM 模块通过定义一系列的状态和状态转换规则来实现系统状态的有序切换。在 AUTOSAR 体系中SchM 模块通常与其他模块协同工作以实现整个系统的功能。现在开始操作首先打开提前下载好的Mcal包SW32K3_RTD_4.4_2.0.2打开文件夹下的Plugins文件就会看到很多模块文件夹文件夹里面包含许多文件其中也包含上文所提及我们工程关联所需要的includesrcheaderstartupbuild_file先随机打开一个Base文件夹给大家看看以免后续大家的操作会出错。下图就可以看到里面有我们工程关联所需要的includesrcheaderstartupbuild_file的其中一些文件。然后回到上层目录把LED工程所需要的BasePlatformMcuDioPortRte模块复制到S32DS工程目录下的Mcal_Plugins文件夹。复制完成后打开每个模块文件夹保留下我们工程关联所需要的includesrcheaderstartupbuild_file文件其他文件都删掉Base保留includesrcheader Dio保留includesrc Mcu保留includesrc Platform保留includesrcstartupbuild_files只保留gcc删掉ghs和iar Port保留includesrc Rte保留includesrcBaseDioMCU:PlatformPortRte做完这些操作后回到S32ds工程下refresh一下工程即可看到Mcal_Plugins目录下我们添加进来并且做了删除更改的文件夹了六、 在S32ds工程下添加MCAL头文件和源文件路径右键工程名选择“Properties - Build Variables”并添加两项变量“MCAL_MODULE_NAME_SUFFIX” 字段 “_TS_T40D34M40I0R0”“MCAL_PLUGIN_PATH” 路径 “C:\EB\tresos\SW32K3_RTD_4.4_2.0.2\eclipse\plugins”选择自己MCAL包下载路径下的plugins文件夹路径这样配置的好处是如果S32K3 RTD MCAL 软件包有版本更新在此处修改路径和模块后缀即可。请注意 Base 和 Platform 模块的特殊性目前只能一条一条添加如果各位有任何好的办法欢迎在博文下方留言交流讨论。上图是添加完路径的图大家可以参考对照一下。七、 配置项目参数添加宏定义设置优化等级设置gcc 链接文件添加宏定义S32K3XXS32K344GCCUSE_SW_VECTOR_MODED_CACHE_ENABLEI_CACHE_ENABLEENABLE_FPU上图是添加完宏定义的图大家可以参考对照一下。设置优化等级设置优化等级并添加 Other optimization flags 字段-fno-short-enums -funsigned-char -fomit-frame-pointer -fstack-usage上图是设置完优化登记的图大家可以参考对照一下。设置gcc 链接文件切记勾选“Do not use standard start files” 删掉原来的链接文件添加新的链接文件。上图是设置完gcc 链接文件的图大家可以参考对照一下。八、 新建EB工程打开 EB tresos 新建工程取消勾选默认路径选择之前在 S32DS 建立的工程目录中的 Tresos_Project 文件夹注意这里封装了两层。输入 ECU ID目标是 S32K3xx将默认生成代码的路径改成S32ds工程文件下的Generate文件夹链接到之前在 S32DS 工程中建立的 Generate 文件夹。勾选“在列表中添加最小数量的子元素”创建工程阶段我们先不添加任何模块直接点“Finish”。如果前面忘记配置生成路径也可以在建立好工程之后右键工程名选择“Properties”并修改“Generation Path”。九、 添加模块配置MCAL(本文不详细介绍MCAL配置重点在于集成)配置好后点编译工程refresh一下S32ds工程即可看见生成的文件九、 Main.c替换用 Dio 模块 MCAL 例程中的c 文件直接替换掉 S32DS 中工程的 main.c 文件。在main.c 中注释掉两行代码“#include check_example.h”和“Exit_Example(TRUE);”还需要跟着改动和添加platform的初始化函数Io口函数接口可以在Generate/include/Dio_Cfg.h下去找EB配置的入口编译通过就代表移植成功了博主是一个刚毕业的BMS底软工程师在学习的路上遇到很多坑通过写文章来记录所学到的知识希望能为大家尽可能的避开一些坑后续还会继续分享一些BMS相关的知识以及储能CMS和二级架构三级架构这方面的技术知识创作不易希望大家可以多多支持相互交流技术讨论心得如有不足之处敬请批评指正