wuyage

KL43 UART升级

0
阅读(1623)

在实际产品中,在线更新程序的功能会经常使用,因为产品第一次通过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

blob.png

连接成功后显示如下

blob.png

点击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软件

打开winhex.png


第二步,打开Keil生成的hex文件

打开hex文件.png


第三步,先将hex文件转换为bin文件

edit-conver.png

先转换为hex.png

这里选择No即可

选择no.png


第四步,将转换后的bin文件转换为srec文件

再转换为s19.png

第五步,保存为srec文件

保存.png


文中涉及的所有资料见附件,

AN2295 FRDM_KL43.7z



参考:

https://community.nxp.com/docs/DOC-103383

https://winhex.en.softonic.com/

http://www.rasmicro.com/S_Records/index.htm