KL43 UART升级
0赞在实际产品中,在线更新程序的功能会经常使用,因为产品第一次通过SWD下载完程序后,之后可能会有更新程序的需求,而一般SWD接口不会留在外面,所以给单片机系统加入外围接口的升级功能很重要。这里以UART升级,以Kinetis KL43芯片为例,KL43其实内置ROM bootloader,也就是说芯片本来出厂时就可以通过UART下载程序,不过据我了解并没有多少客户实际使用这个,我自己也尝试用过,确实很难用。AN2295是一个很好用的东西,在这里我把它用到了实际项目中。
BootLoader部分我使用的是AN2295,实际应用程序是基于最新的KSDK2.1开发的. BootLoader部分我同时移植了Keil和IAR的工程,大家可以根据实际情况选择。KSDK2.1本身是KEIL和IAR都支持的。
整个使用过程很简单,
1)先将BootLoader下载进去,进入BootLoader模式的方法是按住FRDM_KL43Z上的SW3按键(PTD5)复位。
然后选择串口(注意板载的虚拟串口不要使用,实测工作很不稳定,可以外接一个usb转uart,例子中用的是PTE20和PTE21两个脚作为BOOT的UART脚),点击Connect
连接成功后显示如下
点击Program即可下载应用程序
应用程序修改的地方,只需要修改KSDK2.1工程中scf文件
将
#define m_interrupts_start 0x00000000 #define m_interrupts_size 0x00000200 #define m_flash_config_start 0x00000400 #define m_flash_config_size 0x00000010 #define m_text_start 0x00000410 #define m_text_size 0x0003FBF0
改为
#define m_interrupts_start 0x00000000+0x1000 #define m_interrupts_size 0x00000200 #define m_flash_config_start 0x00000400+0x1000 #define m_flash_config_size 0x00000010 #define m_text_start 0x00000410+0x1000 #define m_text_size 0x0003FBF0
Keil工程勾选上生成hex文件。
我发现KSDK2.1的KEIL工程由于本身没有生产axf文件,不知道什么原因,所以导致无法直接生产srec文件,而AN22295只支持srec文件,后来查询网上资料,找到一个不错的解决办法,我们可以使用winhex工具,讲KEIL生成的hex文件转换为srec文件,
第一步,打开Winhex软件
第二步,打开Keil生成的hex文件
第三步,先将hex文件转换为bin文件
这里选择No即可
第四步,将转换后的bin文件转换为srec文件
第五步,保存为srec文件
文中涉及的所有资料见附件,
参考:
https://community.nxp.com/docs/DOC-103383
https://winhex.en.softonic.com/
http://www.rasmicro.com/S_Records/index.htm