新手上路
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2014-5-28
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-6-5 15:30:15
|
显示全部楼层
回复【6楼】DongInker:
---------------------------------
我的板子上镶嵌了一颗M25P16存储器,我使用板子上的GPRS模块和电脑上位机软件通信,当更新了硬件程序的时候,我对板子下发一个升级指令,板子开始自动接收我通过流量给它的程序,一边接收一边把程序存储到M25P16上去,接收完毕,验证正确,就在M25的一个单元做一个标志,然后软件自动复位处理器。处理器在0x08000000处执行bootloader,自动检测位于M25上的那个标志单元,如果置位,说明有升级程序, 然后先擦除原来主程序空间,开始于0x8005000处,然后再把M25上的程序段拷贝到内部FLASH的0x08005000处。擦除M25上的程序。并开始跳转到主程序执行。
我下载了STM32官方的一个IAP程序,把它修改后放到了0x08000000处,能够正常按照我的思路执行。但是,我现在的问题是我在官方的IAP程序中没有把这个bootloader搬运到ram中执行,STM32为什么可以一边执行着它自0x08000000处开始的boot程序,一边对位于0x08005000处开始的空间进行擦除和编程呢? |
|