本帖最后由 huanhuanhdu 于 2013-8-7 17:04 编辑
LZ现在做一个项目,使用USB-IAP的方式实现STM32 F103固件升级,而APP程序也是实现一个USB设备。IAP程序起始地址为0x08000000,APP程序起始地址为0x08004000。
一般做法是IAP 和APP 是两个USB设备,具有两个不同的USB PID,在IAP 和APP 之间切换时需要USB设备重枚举。但是这样在软件看来,就需要打开两个USB设备,并且需要等待USB重枚举的漫长时间。
也可以将APP 程序作为复位后进入的程序,即将APP 程序和IAP 程序的起始地址换一换,因为固件升级操作并不频繁,而在固件升级时进行两次打开USB设备并且等待USB重枚举等复杂操作也是可以接受的。但是,如果这样跳到IAP 之后升级APP 失败了,那就再也开不了机了!
所以,我想还是IAP 程序作为复位后默认进入的程序,然后再跳到APP 程序执行,但有不想等待USB重枚举而能够正常执行APP 程序。能不能有办法实现呢?
|