目录:
1.前言
2.资料获取
2.2 开发环境
2.3 上位机
2.4 硬件
3.工程修改
3.1 boot工程修改
3.2 app工程修改
4.测试情况
5.例程分享
最近很多客户在开发S32K系列MCU时咨询是否可以提供基于UDS协议的bootloader。本文以S32K144为例,介绍如何使用NXP官方提供的UDS bootloader例程。
如果客户有S32K3的uds bootloader需求,可以查看NXP社区提供的资料,链接如下:
unified Bootloader Framework.zip
并下载,然后执行压缩包里的S32K1xx_unified_bootloader_demo_V1.0.exe
,将例程安装到客户常用的文件夹。也可以复制下面的链接到浏览器直接下载:
https://www.nxp.com/downloads/en/snippets-boot-code-headers-monitors/unified_bootloader_framework.zip
3.最终安装好的文件夹内容如下:
开发环境使用的是S32DS2.2,安装使用说明参考如下链接:
也可以复制下面的链接到浏览器直接下载:
https://github.com/frankie-zeng/ECUBus/releases/download/v0.2.24/ECUBus.exe
硬件需要准备如下这些:
笔者这次测试使用的是PEAK厂家的PCAN-USB(IPEH-002021)
,推荐下载对应的CAN卡软件PCAN-View
,用于测试MCU升级时,跟踪总线上面的数据,可以复制下面的链接到浏览器直接下载:
https://peak-system.com.cn/wp-content/uploads/2022/06/pcanview.zip
本次使用的是S32K144的CAN UDS bootloader工程,按如下路径找到相关的bootloader工程和app工程
首先打开S32K144_CAN_bootloader
工程,先将原先的备份文件删除,防止和后面切换SDK保留的备份文件混合。
然后打开Sources
文件夹,将S32K144_CAN
和unified_stack
两个文件删除。
以管理员身份运行脚本build_test.bat
,会发现Sources
文件夹内新增了两个文件夹,
打开S32DS 2.2 ,导入boot工程,步骤如下图。
随后会弹出警告,版本SDK不对,点击Skip loading
。因为原始工程使用的是SDK2.0,而S32DS 2.2默认安装的是SDK3.0,所以需要进行SDK的更换。
将原本工程的pe组件全部删除。
右击工程名字,点击属性,然后在弹出的界面选择SDK选项。
在弹出detach SDK V2.0.0的时候,选择Yes,然后将SDK3.0.0 Attach。
点击SDK选项界面的OK,会弹出一个对话框,main.c选择不要替换,点击OK。
然后删除SDK替换之后,工程出现的PE组件。
然后导入原始工程的pe配置,步骤如下图。
删除boot工程原本的SDK代码。
接下来需要将老的linker file的一些配置移到新版的linker file,可以先按下图方式,了、将两个文件进行对比。
总的来说,下图这些地方需要修改。
点击pe界面的生成代码按钮,SDK
和Generated Code
文件夹内的文件都重新生成了。
因为SDK是灰色的,代表不会参与工程编译,需要添加到工程编译目录中,操作如下图。
因为这个工程用到了EWC库,所以还需要打开工程属性界面,增加这个库,操作如下图。
最后点击Debug按钮进行编译,无报错。
app工程的修改和boot方式差不多,但是有两个注意点。
需要修改下driver/clock
里面的clock.h
和clock.c
文件名称,因为SDK文件夹里也有一个clock.h
。
第二个最终升级需要使用app工程生成的bin文件,所以需要在工程属性里面设置一下,如下图:
最后进行升级测试,详细步骤如下:
给S32K144EVB-Q100开发板供电12V,将boot工程下载到开发板中,会看到开发板RGB灯闪烁蓝色。
在桌面新建一个文件夹,将第三节开始介绍的S32K144_CAN_user_config
文件中的flash_api.bin
复制过去,里面的json文件因为是旧版本的,所以本次用不上。
将app工程生成的bin文件也复制到桌面新建的文件夹内。
打开ECUBUS软件,点击Powerful UDS Tester框内的go按钮。
点击Open UDS Project,选择之前准备好的ECUBUS工程(文末会分享出来)。
点击 DoCAN框内的go按钮。
点击第一个Group:DownloadFile1
的编辑按钮。
在弹出的界面点击Choose File
按钮,选择之前放到桌面的flash_api.bin
文件,然后点击Change Group按钮完成更改。
同样的方法修改第二个Group:DownloadFile1
,选择的文件是app工程的bin文件。
连接上PCAN-USB
,点击设置按钮,然后点击Connect按钮。如果提示没有识别到硬件,需要去peak官网下载驱动安装一下。
其它配置如下图,点击ADD
按钮添加即可。
接着打开PCAN-View,配置好波特率。
跳转到Trace窗口,并点击开始录制的按钮。
最后点击ECUBUS的start按钮。
当下载成功后,会有提示成功的logo出来,并且在PCAN-View的Trace窗口也能看到交互的报文信息。此时,开发板的RGB灯也变成闪烁红色。
如果客户想要做压力测试,可以将Cycle的参数设置到需要测试升级的次数,进行自动测试。
关于本文提到的ECUBUS软件、ECUBUS工程、修改后的boot和app工程,笔者整理之后放在gitee上面了,链接如下。
https://gitee.com/Yingming_Cai/S32K144EVB_UDS_Bootloader_Example.git
如果觉得本文有用,不妨给个一键三连!!!
Unified bootloader Demo - NXP Community: https://community.nxp.com/t5/S32K-Knowledge-Base/Unified-bootloader-Demo/ta-p/1423099
[2]S32K1 General-Purpose MCUs | NXP Semiconductors: https://www.nxp.com/products/processors-and-microcontrollers/s32-automotive-platform/s32k-auto-general-purpose-mcus/s32k1-microcontrollers-for-automotive-general-purpose:S32K1
[3]Releases · frankie-zeng/ECUBus · GitHub: https://github.com/frankie-zeng/ECUBus/releases