新年上班第一天,不怎么忙,上午眼睛一闭就过去了,下午不能眼睛一睁就下班吧!想到公司的单片机程序更新太频繁,而且都是在生产现场作业,而下载程序对我来说太费时间,对操作员来说又太复杂,于是就研究研究iap,看看能不能降低复杂度。
我是在st官网的iap例程基础上调试的,例程里芯片是stm32f2xx,而我的板子是stm32f103,需要些调整,改下芯片,掉换下函数库,编译不过的地方改一改,ok,编译下载跑起来。。。

接下来就比较费时间了,例程里只有bootloader部分,没有app部分的工程,对与一个没有接触过iap的人来说就不知从哪下手了,于是各种baidu,气人的是Jlink和stlink不知道被人拿哪里去了,只能用串口各种调试,最后终于能从Bootloader跳转到app里了。下面给些关键部分的截图,防止下次再做时忘了。


这张是app工程里设置程序的起始地址,第一张和第二张红色部分都要选上,尤其是第二张粗笔框的地方,我忘了选上,结果程序怎么改都跑不起来。

这个命令用来把hex文件转换成bin文件,bin文件用超级终端下载后才能跑起来。

这个是在例程里需要改的,应用程序放在哪个地址上,根据bootloader的大小调整。

app的主函数的第一句话,重定位向量表。
最后附官网iap例程:
stm32f2xx_usart_fw.zip