一、使用S32DS建立工程
前面已经有提及,可根据下图所示步骤建立工程。
选择7是因为保留了通过S32DS配置MCAL配置的方法。接下来添加必要的文件。
右键工程名,选择“Properties -> Build Variables”并添加两项变量
“MCAL_MODULE_NAME_SUFFIX” 字段 “_TS_T40D34M40I0R0”
“MCAL_PLUGIN_PATH” 路径 “C:\NXP\SW32K3_RTD_4.4_R21-11_3.0.0\eclipse\plugins”
这样配置的好处是,如果S32K3 RTD MCAL 软件包有版本更新,在此处修改路径和模块后缀即可。
添加项目宏定义
S32K3XX S32K310 GCC USE_SW_VECTOR_MODE D_CACHE_ENABLE I_CACHE_ENABLE ENABLE_FPU |
在“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”。
"${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"
这里根据需要用到的驱动包进行添加相应的内容。
设置优化等级并添加 Other optimization flags 字段:
-fno-short-enums -funsigned-char -fomit-frame-pointer -fstack-usage
设置完编译等级后,需要增加器件的链接文件。
其他杂项可根据你的需求进行设置。
二、EB建立工程
1、打开 EB tresos 新建工程,取消勾选默认路径,选择之前在 S32DS 建立的工程目录中的 Tresos_Project 文件夹,注意这里封装了两层。
2、输入 ECU ID,目标是 S32K3xx,将默认生成代码的路径改成“..\..\Generate”,链接到之前在 S32DS 工程中建立的 Generate 文件夹。
3、勾选“在列表中添加最小数量的子元素”,创建工程阶段我们先不添加任何模块,直接点“Finish”。(添加模块会报错)
4、如果前面忘记配置生成路径,也可以在建立好工程之后,右键工程名选择“Properties”并修改“Generation Path”。
1、Resource模块配置
在Resource模块中修改平台,博主使用的是S32K310芯片。
添加所需要的模块到右侧配置窗口,本文针对IO进行测试,因此仿照历程添加模块。
2、Port模块配置
此处给出LED1端口配置,LED2、LED3端口配置相同。
编程引脚配置
3、Platform模块配置
使用默认值即可,本模块主要配置中断 。
4、MCU模块配置
本模块主要配置时钟,需要参看用户手册,配置各个模块外设时钟。
配置时钟源,使用默认即可,需要注意的是FXOSC需要根据板载晶振配置。
这里配置时钟需要根据用户手册时钟树进行,特别需要注意时钟的最大最小值。
使用HSE时钟的时候FIRC under MCU control应取消勾选。
HSE_CLK为120MHz时,必须写DCP。
#if HSE_CLK_CONFIG_ENABLE
uint8_t isConfigPLL = 0;
if( 1 == isConfigPLL )
{
/* check your external crystal freq, if not 16M, need to change */
HsePort_ConfigHseClkIf( (hsePort_HseClkIf_t*)&gHseClkIfCfg );
}
#endif
5、BaseNXP模块配置
6、Dio模块配置
7、生成配置源码
三、S32DS编译工程文件
从Link_Source文件中移除不适用的模块。
link_source需要保留以下配置驱动包。
从RTD安装目录里面找到Dio的例程中EB文件夹下的main.c文件拷贝到我们建的工程中。在c 中注释掉两行代码“#include "check_example.h"”和“Exit_Example(TRUE);”,修改我们的功能代码,现在程序可以正常编译烧录,一个可使用 S32DS 调试的 EB MCAL 工程就创建完成了。修改main文件中的端口,可以实现对端口的控制。