初级会员

- 积分
- 69
- 金钱
- 69
- 注册时间
- 2018-8-3
- 在线时间
- 13 小时
|
本人菜鸟一枚,最近在做串口IAP下载程序的项目,研究了整整两天终于看到点效果了。
与大家分享一下其中遇到的问题及解决办法。
起初在网上下载了STM32 F4 IAP升级的例程,移植调试了一整天,编译没问题了,但是
通过Bootloader下载bin文件的时候没有任何反应,放弃了!
在某宝论坛无意间找到了一个stm32f103 IAP升级的例程,立刻修改移植,一切修改好后,
将BootLoader下载到开发板,正常运行;接下来通过串口助手下载bin,也就是app时却出
了问题,显示下载成功,按下按键执行的时候开发板却不执行,连BootLoader程序也卡死了。
立刻意识到是程序偏移地址的问题,但是反复检查都没问题。。。。无奈啊,继续逛各大
论坛寻找解决办法,功夫不负有心人,终于在一个即将沉了的帖子最底部看到一句留言。
留言内容说:
BootLoader可以移植使用,但建议用户程序自己新建一个工程,因为旧工程可能与
keil版本不一致,即使
①user中设置了程序起始地址
②main函数中也写了SCB->VTOR = FLASH_BASE | 0xXXXX;
但是工程map文件的入口地址仍然是原来的,这也就导致了即使程序都没问题,但是下载
bin文件的时候开发板却没有执行程序,原因就在于map程序入口地址与BootLoader起始地址
冲突都为0X8000000。
找到原因所在,立刻新建了一个测试工程,改好偏移地址后编译通过,到工程目录下查看map
文件的入口地址,果然与修改后的一致,再次使用串口助手将bin文件下载到开发板,这次开发板
便可以成功运行了。
解决了这个问题,后面的IAP开发就比较顺利了。本人小白,在老鸟面前班门弄斧了,见谅,希望
与大家多多交流STM32的心得。
|
-
.map文件入口地址
-
option for target设置
|