今天弄了一天的usb的iap,按理来说这个问题网上资料非常的多,操作也不是很复杂,我这个问题倒是比较棘手。
我的一块板子死活iap不能成功,拿到红牛的开发板上同样的程序,同样的dfu操作一点问题都没有,升级程序非常顺利。
我的板子直接用ulink烧写,跑该程序也一点问题没有,也可以正常使用。
具体查到细节处:
1 我的板子烧写上dfu程序,把应用程序烧写上。
2 用ulink在线查看0x8003000的存储空间内容,该内容莫名奇妙,没有规律,if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)这个条件不满足,用红牛开发板看,这个条件是可以满足的。
问题:问题似乎出在我的板子上了,但是能够跑正常程序,dfu时我也校验过,校验也是正确的,为啥升级进去的程序就出问题呢?难道校验机制出问题了?真是非常不理解哪里会出现乱子了[face]012[/face] |