1.问题描述
前段时间,有几个客户反馈使用S32DS for ARM 2.2导入KEA官方例程会遇到一些报错和警告。笔者利用周末的时间试了一下确实有这个问题,所以将解决办法记录下来,并将其中所有的KEA128例程全都修改了一下,文末会分享出来,方便大家。
2.例程获取
2020年,NXP发布了基于S32DS for ARM 2018.R1编译器的KEA官方例程,如下图所示。其链接为:FRDM-KEAZ128,推荐用户下载红框中的压缩包(需要注册登录NXP官网账号)。
上图中的第一个压缩包为KEA128的CAN例程,第二个压缩包为KEA128、KEAZ64、KEAZN32三个芯片的例程,如下图1所示,每个芯片压缩包里有三个文件夹,前两个是两种例程,对应的使用手册用红箭头标出来了。第三个是驱动文件夹,S32DS for ARM 2.2已经集成了该驱动,只要在新建工程的时候在SDK界面选择KEA128就好了,如下图2所示。
一般用户下载S32DS for ARM主要是为了开发S32K144,如果使用老的2018.R1版本,还得装RTM3.0.0的补丁包才能支持使用S32K144的SDK3.0.0驱动和最新处理器专家工具(Processor Expert)。所以现在笔者都推荐客户使用S32DS for ARM 2.2,既可以将S32K1xx和KEA的开发都统一到一个IDE,而且不需要安装额外的补丁包。
3.解决办法
下面以Driver Test SW for KEAZ128文件夹中的FRDM_KEA128_GPIO工程为例,描述一下解决办法。
-
在S32DS2.2中导入该工程,在Problems界面会显示如下警告:
-
第1个问题是因为S32DS 2.2的EWL库的安装位置和工程里设置的不一样导致,第2个问题暂时没找到原因,不过不影响使用,有时关闭在重新打开就会消失。
-
先解决第一个问题,右击工程名称,选择Properties,或者使用快捷键ALT+Enter进入属性设置界面。进入到下图所示设置路径的地方,删除Assembly和GNU C界面所有带星号的文件地址。
-
再跳转到设置库的地方,将库改成ewl_c no I/O,如下图,这个库比原来的库ewl_nano_c no I/O更丰富一些。
-
此时再跳转到之前设置文件路径的地方,会发现开发环境自动添加了EWL库的路径和include的路径,且没有感叹号,说明路径正确,如下图所示:
-
同时,为了调试时查看的信息更全,需要跳转到如下位置,选择好MCU的型号。
-
接下来,点击锤子图标编译工程即可,会出现如下的编译信息。
-
然后点击甲壳虫图标旁的下拉按钮,选择Debug Configurations,进入调试配置界面。
-
在main界面选择好对应的elf文件。注意原本例程的elf路径有误,需要修改下,如下图。
-
插上FRDM-KEAZ128Q80开发板,在debugger界面选择好调试器,MCU型号,gdb可执行文件,如下图,并点击Apply生效配置。
-
点击debug进入调试界面,如下图,操作方法和其他编译器大同小异,就不赘述了。
4.基于S32DS2.2的KEA8例程
如前面所述,官方发布的KEA例程里并没有关于KEA8的,所以笔者将之前网上下载的KEA8例程移植到了S32DS。由于该例程包含了KEA8几乎所有外设的驱动,所以编译出来的工程比较大,有5KB左右,如下图所示。实际使用时,建议删除未使用外设的驱动文件,防止KEA8的Flash不够用。
5.补充说明
-
由于官方的LIN例程没有描述对应的LIN Stack版本,推荐客户使用官网最新的LIN Stack进行开发,详细方法请参考之前的文章。
-
有些例程在进入Debug Configurations界面之后没有现成的调试目标,用户只需要双击下图 这个图标就会创建,然后按照解决办法的第9点以及第10点配置即可。
-
S32K1xx最新的SDK已经是4.0.x版本了,但是需要使用S32DS 3.4版本才能获取,并且对应的图形化工具变成了Configura Tools。如果已经熟悉了Processor Expert,仍是推荐使用S32DS for ARM 2.2。
6.例程分享
有关KEA128以及KEA8的例程,笔者已经修改整理好,百度网盘链接如下:
链接:https://pan.baidu.com/s/1t1mQa6mZsT9s1aKzTqijvg
提取码:20t2