【脑洞大开】STM32用ISP来实现IAP在线升级

2019-12-09 19:14发布

STM32串口下载用的是ISP,从ST公司烧写在system memory中的一段bootloader开始启动,然后进行下载。
如果是IAP实现应用程序下载的话,也是需要自己先写一段bootloader,这段bootloader也会将程序写入到Flash。
那我就在想,既然ISP方式中已经有bootloader,那么为什么还要自己写呢?直接使用这段bootloader不就好了吗?
你可能会说,那要调整boot引脚,但是就在刚才,我看到了通过修改PC跳转到system memory的做法,实在让我脑洞大开,这意味这不用调整boot引脚就可以实施串口下载了!!!
见这个帖子http://www.amobbs.com/forum.php? ... ghlight=IAP%2BSTM32
1.png (15.27 KB, 下载次数: 7) 下载附件 2015-9-2 15:45 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
39条回答
10xjzheng
1楼-- · 2019-12-09 21:18
 精彩回答 2  元偷偷看……
10xjzheng
2楼-- · 2019-12-09 22:08
不过要留出复位引脚,串口下载之后要重新启动,从flash地址开始运行程序!
tohell
3楼-- · 2019-12-10 00:06
IAP的目的是要定制升级的通信机制,如果还用ISP的通信机制干嘛不直接用ISP
10xjzheng
4楼-- · 2019-12-10 05:38
tohell 发表于 2015-9-2 15:52
IAP的目的是要定制升级的通信机制,如果还用ISP的通信机制干嘛不直接用ISP

因为要调整boot引脚,为什么要自己定制升级的通信机制呢?
dalarang
5楼-- · 2019-12-10 08:13
我觉得ISP和IAP最大的区别就是灵活性,IAP可以进行远程升级。
而ISP的通讯限定死了只能用串口,而且要边擦边写,上位机给下位机传一段,下位机擦除并写入一段。而IAP可以做到先不擦除FLASH,仅仅接收程序数据,将其存到其它区域,等接收完毕后再一口气将程序区擦除并写入。
这样ISP几乎没法用远程的方式进行写入,例如我通过GPRS升级,IAP可以自己定协议帧来接收程序,等全部接收完了再写更新APP。而ISP呢?先不说ISP中无法支持GPRS的方式通讯,就算能支持了,边擦边写的方式也有很大危险,万一中途掉线什么的,到时候ISP进不去,APP又不完整,远程只能干瞪眼了。
spark51
6楼-- · 2019-12-10 08:31
 精彩回答 2  元偷偷看……

一周热门 更多>