【S32K 进阶之旅】 将 EB 配置生成的 MCAL 代码集成到 S32DS 中

本文介绍如何使用 S32DS 进行 AUTOSAR MCAL 工程的编译和调试,重点在于将 EB 配置生成的 MCAL 代码集成到 S32DS 中。

虽然配置过程较为繁琐,实操过一遍就会熟悉整个工程的框架。以后每次在 EB 中更新配置,生成代码的文件夹已经集成在 S32DS 工程中,无需手动拷贝。而且再次新建工程可以此为模版,修改个别路径和链接位置即可,十分方便。希望能够帮助到有此需求的朋友们,也是在这里作下笔记避免自己遗忘。

一、 软件安装列表

全篇以 NXP S32K344 为例建立工程,使用到的软件及对应版本如下:

  • EB Tresos Studio 29.0.0
  • MCAL 配置工具
  • SW32K3_S32M27x_RTD_R21-11_4.0.0_P19_D2403.exe
  • S32K3 MCAL RTD 安装包,使用 EB Tresos Studio 进行配置
  • S32 Design Studio 3.5
  • NXP S32 系列的集成开发环境(IDE),可用于工程创建、配置、编译、调试等
  • 5.9_D2312.zip
  • S32DS 升级包第 9 版本
  • 5.8_D2311.zip
  • 适用于S32K3xx 的 RTD 基础开发包

       安装教程请移步其他博文,本文直接跳过,开始建立工程。




二、 新建项目

  1. 打开 S32DS V3.5 版本,菜单栏选择“File -> New -> S32DS Application Project”
  2. 输入项目名称
  3. 选择芯片型号,使用 S32K344
  4. 选择编译器版本,建议选择 GCC v10.2
  5. 设置 FPU,选择“Hardware:-mfloat-abi=hard”

我们需要在工程中使用 MCAL 而不是 SDK,所以 SDKs 栏保持为空,选择完成后点击“finish”。对应的步骤如下图所示:





 
三、 删除和添加文件

建立工程后,生成了一些启动代码、链接文件、头文件和 main.c 文件等。

  1. 删除位于“Project_Settings”中的“Startup_Code”和“Linker_Files”文件夹。我们使用 MCAL 自己的链接文件和启动文件,它们分别位于“{MCAL_PLUGIN_PATH}\platform_TS_T4xxx\build_files\gcc” 和“{MCAL_PLUGIN_PATH}\Platform_TS_T4xxx\src\m7”路径中。
  2. 删除“include”文件夹,我们使用 MCAL 的头文件,在“{MCAL_PLUGIN_PATH}\BaseNXP_Ts_T4xxx\header”路径中。
  3. 新建 Generate、Mcal_Plugins、 Tresos_Project 三个空文件夹,分别用来存放 EB Tresos 配置生成的代码源文件、S32K3 MCAL 源文件和 EB tresos 工程。

 

四、
配置 MCAL 文件链接和资源过滤器

  1. 在 “Mcal_Plugins”中新建文件夹“Link_Source”,名称可自定义。
  2. 点击“Advanced”将 “Link_Source”文件夹链接到 S32K3_RTD_MCAL 包,版本自选,示例为 0.0 P19 版本,如果是按照默认路径安装的话,它的路径为“C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0_P19\eclipse\plugins”
  3. S32DS 启动时,会刷新所有项目的目录和文件结构。我们启用资源过滤器来忽略不需要刷新的目录和文件,避免浪费大量的时间。在“Resource Filters”中点击“Add Filter…”设置过滤规则,
  4. 依次添加文件或文件夹,包括下图 7 项“include only”和 4 项“Exclude all”,注意蓝字的三项要勾选右下角的“regular expression”
  5. 重复第 3、4 步直到完成,添加过后的“Resource Filters”如橘色框所示


 
五、
添加 MCAL 头文件和源文件路径

  1. 右键工程名,选择“Properties -> Build Variables”并添加两项变量
    • “MCAL_MODULE_NAME_SUFFIX” 字段 “_TS_T40D34M40I0R0”
    • “MCAL_PLUGIN_PATH” 路径 “C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0_P19\eclipse\plugins”

这样配置的好处是,如果S32K3 RTD MCAL 软件包有版本更新,在此处修改路径和模块后缀即可。

 

       2. 在“Properties->Settings->Standard S32DS C Compiler->includes”中依次添加头文件路径,将工程链接到 S32K3_RTD_MCAL 软件包所有模块的头文件,记得 EB tresos 配置生成的头文件路径 "${ProjDirPath}/Generate/include" 也需要添加。
 

最好使用相对路径(必须是 Linux 风格的斜杠/反斜杠)例如:

        "${MCAL_PLUGIN_PATH}/Adc${MCAL_MODULE_NAME_SUFFIX}/include" 也就是C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0_P19\eclipse\plugins\Adc_TS_T40D34M40I0R0\include

       示例的 S32K3_RTD_MCAL 软件包是 AUTOSAR 4.7 版本,比 4.4 版本增加了 Memory 相关的模块,几处模块名也有差异,包含的模块以你下载的软件包版本为准。大家可以从下方列表中直接复制(请注意 Base 和 Platform 模块的特殊性),目前只能一条一条添加,如果各位有任何好的办法,欢迎在博文下方留言交流讨论。

"${ProjDirPath}/Generate/include"

"${MCAL_PLUGIN_PATH}/Adc${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Ae${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/BaseNXP${MCAL_MODULE_NAME_SUFFIX}/header"

"${MCAL_PLUGIN_PATH}/BaseNXP${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Can_43_FLEXCAN${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/CanIf${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/CanTrcv_43_AE${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Crc${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/CryIf${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Crypto_43_HSE${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Csm${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Dem${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Det${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Dio${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Dpga${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/EcuM${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Eth_43_GMAC${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/EthIf${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/EthSwt${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/EthTrcv${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Fee${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Gdu${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Gpt${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/I2c${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/I2s${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Icu${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Lin_43_LPUART_FLEXIO${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/LinIf${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/LinTrcv_43_AE${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Mcl${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Mcu${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Mem_43_EEP${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Mem_43_EXFLS${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Mem_43_INFLS${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/MemAcc${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/MemIf${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Ocotp${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Ocu${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Os${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Platform${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Platform${MCAL_MODULE_NAME_SUFFIX}/startup/include"

"${MCAL_PLUGIN_PATH}/Port${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Pwm${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Rm${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Rte${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Sent${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Spi${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Uart${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Wdg${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/WdgIf${MCAL_MODULE_NAME_SUFFIX}/include"

"${MCAL_PLUGIN_PATH}/Zipwire${MCAL_MODULE_NAME_SUFFIX}/include"

 


六、
配置项目参数

  1. 添加项目宏定义

S32K3XX

S32K344

GCC

USE_SW_VECTOR_MODE

D_CACHE_ENABLE

I_CACHE_ENABLE

ENABLE_FPU


2. 设置优化等级并添加 Other optimization flags 字段:

            -fno-short-enums -funsigned-char -fomit-frame-pointer -fstack-usage

       3. 设置 gcc 链接文件,路径是

            "${MCAL_PLUGIN_PATH}/Platform${MCAL_MODULE_NAME_SUFFIX}/build_files/gcc/linker_flash_s32k344.ld",切记勾选“Do not use standard start files”

       4. 其他杂项可根据你的需求进行设置。

 


七、新建
 EB 工程

  1. 打开 EB tresos 新建工程,取消勾选默认路径,选择之前在 S32DS 建立的工程目录中的 Tresos_Project 文件夹,注意这里封装了两层。
  2. 输入 ECU ID,目标是 S32K3xx,将默认生成代码的路径改成“..\..\Generate”,链接到之前在 S32DS 工程中建立的 Generate 文件夹。
  3. 勾选“在列表中添加最小数量的子元素”,创建工程阶段我们先不添加任何模块,直接点“Finish”。
  4. 如果前面忘记配置生成路径,也可以在建立好工程之后,右键工程名选择“Properties”并修改“Generation Path”。 



 八、生成配置代码并编译调试

本文重点不在 EB 配置 MCAL,下面我们只导入 DIO 例程中现有的 MCAL配置,实现 S32DS 对 MCAL 工程的编译调试。

1. 用 Dio 模块 MCAL 例程中的c 文件直接替换掉 S32DS 中工程的 main.c 文件。默认目录如下:

 “C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0_P19\eclipse\plugins\Dio_TS_T40D34M40I0R0\examples\EBT\S32K3XX\Dio_Example_S32K344\src”                           “E:\S32DSws\workspaceS32DS.3.5\Mcal_Dio_S32K344_470_400\src”

2. XDM 文件储存了已配置好的各模块参数。用 Dio 模块 MCAL 例程中的 XDM 文件直接替换掉刚才第 7 小节新建 EB 工程中的 XDM 文件。默认目录如下:

  “C:\NXP\SW32K3_S32M27x_RTD_R21-  11_4.0.0_P19\eclipse\plugins\Dio_TS_T40D34M40I0R0\examples\EBT\S32K3XX\Dio_Example_S32K344\TresosProject\Dio_Example_S32K344\config”

 “E:\S32DSws\workspaceS32DS.3.5\Mcal_Dio_S32K344_470_400\Tresos_Project\Mcal_Dio_S32K344_470_200\config”

 



3. 向 EB 工程中添加 MCAL 模块,注意要与 S32DS 工程链接的 S32K3_RTD_MCAL 软件包版本一致。由于相关的 xdm 文件已经导入,添加的 MCAL 模块就是已经配置好的模块。

 



4. 右键工程名,选择“Generate Project”,生成的配置代码会放在“Generate”文件夹中。

 



5. 接下来下面回到 S32DS 工程,如果操作步骤是完全按照教程来的,“Generate”和“Mcal_Plugins”文件夹仍会处于禁用状态,选中文件夹并右键,然后“Build path -> Add to -> Debug_FLASH”启用文件夹。我们还需要禁用未使用的模块,否则会导致很多编译错误,选择模块文件夹(可以多选)并右键,然后“Build path -> Remove from -> Debug_FLASH”。

 



6. 最后在c 中注释掉两行代码“#include "check_example.h"”和“Exit_Example(TRUE);”,现在程序可以正常编译烧录,一个可使用 S32DS 调试的 EB MCAL 工程就创建完成了。

 
本章的所有内容就到这里,获取更多资讯,或进一步交流 NXP S32K3 & MCAL 的技术问题,欢迎联系世平集团 ATU 部门 <atu.sh@wpi-group.com>。

了解更多汽车相关应用知识!欢迎关注大大通博主:汽车大牛

九、参考资料

[1] S32K344 MCAL Integrate with S32DS, Stephen Du 

[2] S32K Real Time Drivers/MCAL Overview, NXP DFAE Training PPT

登录大大通,了解更多详情,解锁1500+完整应用方案,更有大联大700+FAE在线答疑解惑!

  • 16
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值