admin管理员组文章数量:1615372
引言
在我们把产品封装到了机器里面之后,当需要升级代码就变得很麻烦了,就要拆外壳,连接烧写器才能进行代码的升级,比如是买出去的产品,那更新就变得更加麻烦了,所以造成代码升级就变得非常麻烦。所以就有了一种新的更新程序的方法(IAP)。使用了该方式的单片机产品,只要在最开始预留了“SD卡”或者“串口接口”就能简单的进行程序的升级更新了。这里我们使用对“串口”更新程序的方式进行步骤讲解。
一、思路简介
首先我们理出一条思路,就如手机一样,我们在开机的时候长按某个键就能进行系统的升级一样,这里我们就按着这个思路,做一个单片机进行IAP升级程序的思路:
(1)Bootloader程序
首先我们需要在单片机里面写一个程序,这个程序(Bootloader)的功能是:
(2)更新的程序
然后下面就是我们要更新程序了,这个首先需要单片机直接跳转到“跳转到程序代码区”的Flash进行程序的运行,功能是:
二、代码具体实现方法
(1)Bootloader程序具体实现方法
具体代码展示:
(2)运行的程序具体实现方法
三、例程的实际操作
文件下载链接: https://download.csdn/download/qq_26043945/82885061
(1)操作第一步烧录(旧程序)
为了模拟真实情况,我们先用下载器烧录(旧程序)。打开工程文件 “ LED每1000毫秒闪一次(旧程序) ” ,在烧录前设置IROM1的Start为:0x8020000 ;设置IROM1的Size为:0x20000 ,然后使用烧写器进行代码烧录即可。
(2)操作第二步烧录(Bootloader程序)
1.Bootloader程序只会在单片机通电的时候运行一次,它的功能为:判断Key是否按下?假如:①Key按下,就打开串口,然后电脑把新程序通过串口发送给单片机,然后再按下Key键,单片机则把接收的数据覆盖掉原来 0x8020000 的(旧程序),最后跳转到Flash的 0x8020000 地址执行覆盖后的新程序。
2.打开工程文件 “ Bootloader程序 ” ,在烧录前设置IROM1的Start为:0x8000000 ;设置IROM1的Size为:0x40000 ,然后使用烧写器进行代码烧录即可。
(3)操作第三步对“替换程序”生成bin文件
打开工程文件 “ LED每100毫秒闪一次(替换程序) ” ,并且设置IROM1的Start为:0x8020000 ;设置IROM1的Size为:0x20000 。
在下面设置:C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o D:\xxxx\xxxx\xxxx\LED.bin D:\xxxx\xxxx\xxxx\LED.axf (注意:xxxx\xxxx\xxxx 是按你工程的位置进行填写),然后编译该工程后,就会生成bin文件,在该工程下面找到bin文件。
(4)第四步单片机进入程序升级界面
单片机在通电前长按Key键(PC15拉低),单片机打开了串口接收等待数据接收,通电几秒后松开Key键,这时把bin文件通过电脑串口把文件发送给单片机。
电脑发送bin文件后,再次按下Key键,则完成了程序的更新。单片机LED程序:由1000ms闪烁变成每100ms闪烁。
参考文档-正点原子视频
版权声明:本文标题:STM32_使用Bootloade升级程序(IAP方式) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728714325a1170411.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论