感谢网上的大神,通过你们的文章我终于测试iap升级通过了,具体iap功能我白嫖一段:程序上电先进入 bootloader代码功能,后面通过bootloader跳转到用户的功能代码中;
使用的开发板芯片:STM32F103VET6,串口1升级,PA0升级程序,PA1跳转到APP功能;
生成BIN文件,根据实际路径修改:D:\StudyPack\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o $L@P.bin #L
1、程序bootloader工程搭建:
2、搭建app工程:
3、功能验证:
注意:
1、查看移植是否成功可以debug搭建好的bootloader工程,查看跳转函数是否可以打断点;
2、如果不知道bin文件如何下载,可以先下载bootloader文件,然后debug配置好的app文件,通过跳转按键,查看是否跳转到app程序中;
3、生成的bin文件一定要以16进制发送,否则升级会失败,注意bin本身就是16进制代码,例如:bin是 12,发送时应该为 0x12;
例程下载连接git:https://gitee.com/My_Bulb/wl-open-projects/tree/master/STM32%E4%BE%8B%E7%A8%8B/STM32F103VET6-IAP%E5%8D%87%E7%BA%A7
例程下载连接 链接:https://pan.baidu.com/s/1rAKQZbCdrwY1nuB8tLSz4A 提取码:bp55
调试软件下载:链接:https://pan.baidu.com/s/1MFk3eEeJ-mR61NJopCMjyA 提取码:ljpg
参考连接:https://blog.csdn.net/wzy15965343032/article/details/88545225
————————————————————————————————————————
一、IAP升级多段数据升级问题:
1、每帧长度512字节,最后一帧如果小于512字节,那么就按照字节长度写入 ;
2、数据等于512字节格式:数据(512byte)+地址(2byte)+ CRC16校验(2byte);
3、数据小于512字节格式:数据(XXXbyte)+地址(2byte)+ CRC16校验(2byte);