S32DS 使用tips--S32DS for ARM v1.3工程V2.0迁移升级方法和注意事项
0赞S32DS 使用tips--S32DS for ARM v1.3工程到S32DS for ARM V2.0迁移升级方法和注意事项
最近NXP release了最新的S32DS for ARM V2.0,与S32DS for ARM v1.3相比,有如下更新,支持最新的S32K142和S32K148并将SDK升级到SDK EAR 0.8.4版本,并集成了最新的汽车电机数学控制库AMMCLIB v.1.1.8:
同时也修复了一些老版本S32DS for ARM的bug:
本文介绍如何将S32DS for ARM v1.3(SDK RTM 1.0.0)S32K144应用工程迁移升级到S32DS for ARM V2.0(SDK EAR 0.8.4)工程,使用最新的SDK以及相关的注意事项。
一个S32DS for ARM 2.0的demo工程Processor Expert S32DSSDK路劲设置如下:
${ProcessorExpert_loc}/../../S32DS/S32SDK_S32K14x_EAR_0.8.4
工程的Includes如下,可用正常找到最新的SDK:
在S32DS for ARM 2.0中导入(Import)一个S32DS for ARM 1.3的SDK工程时,其提示SDK路径不正确,指向了S32SDK_S32K144_RTM_1.0.0:
所以,需要将其修改为最新的S32SDK_S32K14x_EAR_0.8.4:
但是,这时工程的Includes下SDK的路径还是S32SDK_S32K144_RTM_1.0.0,在S32DS for ARM V2.0安装目录下压根没有,所以带有感叹号,找不到:
接下来,我们需要修改Includes设置:
菜单栏-->Search-->Search..,或者直接快捷键Ctrl + H:
在File Search-->Containing text中输入搜索内容为S32SDK_S32K144_RTM_1.0.0(注意:搜索范围为整个Workspace,File Name patterns为 *),点击Replace..替换:
将S32SDK_S32K144_RTM_1.0.0替换为S32DS for ARM 2.0自带的最新SDK----S32SDK_S32K14x_EAR_0.8.4:
另外如果老的工程中使用到了gpio_hal组件和ADC组件,则需要做如下修改:
由于S32DS for ARM 2.0以前的SDK版本中使用gpio_hal组件来配置和操作GPIO,在2.0中已经将该组件功能合并到PinSettings组件,需要需要将原有工程中的gpio_hal组件remove:
并将工程中所有GPIO_HAL替换为PINS_DRV(在相应的C文件中使用快捷键 Ctrl+ F):
对于ADC组件: S32SDK_S32K144_RTM_1.0.0中ADC通道枚举定义为ADC_INPUTCHAN_ADxx:
S32SDK_S32K14x_EAR_0.8.4中ADC通道枚举定义为ADC_INPUTCHAN_EXTxx:
所以需要将原有工程中的ADC_INPUTCHAN_ADxx:替换为ADC_INPUTCHAN_EXTxx:
然后,重新生成Processor Expert的代码,即可看到Includes下SDK的路径已经正常,可以被编译器识别了:
最后,clean工程重新build编译即可:
最后需要注意的是,目前所有的S32DS for ARM版本都使用的是GNU的编译器和链接器工具链,其编译器优化等级建议设置为-O0,即无优化,这样才能保证编译结果能够正常运行。若选择其他优化等级或出现编译结果错误、代码跑飞的情况:
以下是我对同一个S32K144应用工程设置不同编译器优化等级选项的编译结果对比:
其中对size的优化--Os,器编译结果只有无优化--O0的一半不到。实测,只有编译器优化等级设置为-O0,即无优化的结果下载后可以正常运行: