学海网 文档下载 文档下载导航
设为首页 | 加入收藏
搜索 请输入内容:  
 导航当前位置: 文档下载 > 所有分类 > STM32F407通过SD卡进行程序升级(把bin文件烧写到FLASH的方式)

STM32F407通过SD卡进行程序升级(把bin文件烧写到FLASH的方式)

以下STM32F407通过SD卡进行升级的bootloader程序已经修改好并通过验证。该bootloader是直接把bin文件烧写到flash里面去,不是原子哥的跳转哦,理论上可以烧写960k的bin程序。程序流程是把一个需要烧写的bin文件放到SD卡里面,然后在bootloader程序里读出来并把bin文件烧写到指定的FLASH区域,并且让该程序运行。

STM32F407通过SD卡进行程序升级(把bin文件烧

写到FLASH的方式)

以下STM32F407通过SD卡进行升级的bootloader程序已经修改好并通过验证。该bootloader是直接把bin文件烧写到flash里面去,不是原子哥的跳转哦,

理论上可以烧写960k的bin程序。程序流程是把一个需要烧写的bin文件放到SD 卡里面,然后在bootloader程序里读出来并把bin文件烧写到指定的FLASH区域,并且让该程序运行。

说说辛酸史~~~~刚开始的时候走了很多弯路,第一个思路是像原子哥那样,通过把bin文件的内容复制到SRAM然后进行跳转运行,但后来仔细看了资料和他的程序,发现他的程序有限制,要在100k左右,太大了无法放得下,而且这个不

是烧写到FLASH去运行,于是放弃这个思路。第二思路是把bin文件的内容复制

到外部SRAM里面去,然后在外部SRAM里面运行时候,再把外部SRAM里面的

bin内容给烧写到FLASH,相当于一开始从FLASH运行的程序跳转到外部SRAM去运行,然后通过外部SRAM运行的这个程序去把FLASH的内容给修改了,就是烧

写新的程序。按照思路,在外部SRAM运行的程序是能够“独立”运行了,已经和FLASH没有关系,那时也能够对FLASH进行烧写,烧写地址是从0x8000000开始的,但烧写到16K以后就死掉了,就是整个程序都崩溃了。以为是在外部SRAM

运行的程序不能把它自身的内容给复制出去,外部SRAM的程序存放地址是

0x6800000,然后我又把0x6800000这个地址开始的数据复制出来烧写到FLASH 去,有点像是一个人在跑步的时候把腿提起来给别人看一样,想想都觉得问题会出现在这里,使劲折腾验证了半天,发现不是这个问题,跑步的时候提起腿来给别人看居然没有“摔倒”~~~后来又去看了资料,发现所有运行的程序中断时都需要跑到FLASH的复位中断向量那里,但我都烧写到16K了,才跑出来折腾,这有点说不

过去~~~反正到现在我也不知道是什么鬼在影响。。。后来没办法了,只能换第

三个思路,就是老老实实的写一个bootloader引导程序,然后把需要烧写的bin文件烧写到指定的FLASH里去。这个思路是通的,结果也是可以的。而且通过这种

方式升级,速度比用FlyMcu.exe串口烧写的快很多很多。具体思路是通过修改原

子哥第五十五章串口IAP实验里面的那个bootloader程序,把串口的那些功能全

部去掉(串口升级的限制是120K左右,完全不够用啊,分包升级的方式感觉没什么思路也懒得动~~),把原子哥最后那个综合实验里面的 exeplay程序给移植进来,把打开SD卡进行选择文件升级直接给固定死成到SD卡里面的某个文件夹下

面去找bin文件,比如在update文件夹下面找,目前只做了把一个bin文件放到

这个文件夹下,然后直接升级,直接去掉人工选择的方式(人工选择的方式其实也

1

第1页

TOP相关主题

我要评论

更多文档:

站点地图 | 文档上传 | 侵权投诉 | 手机版
新浪认证  诚信网站  绿色网站  可信网站   非经营性网站备案
本站所有资源均来自互联网,本站只负责收集和整理,均不承担任何法律责任,如有侵权等其它行为请联系我们.
文档下载 Copyright 2013 doc.xuehai.net All Rights Reserved.  email
返回顶部