STM32F4 USB HOST 实现 U盘 IAP

2020-01-04 18:59发布

本帖最后由 niu14789 于 2014-2-14 10:45 编辑

这个程序在是四个月前的一个项目上使用过的,今天整理电脑时发现了它,本着开源公享的精神把它贴出来

STM32F4 使用USBHOST实现的U盘IAP

    程序上电之后会判断是否有U盘插入,如果没有则直接跳转,如果有U盘插入,接着会判断是否存在ROM.bin文件,如果存在则进行IAP

IAP程序区占用地址为 0x08000000~0x08040000


对应的用户程序起始地址就得进行更改

需要将要更新的程序转换为BIN文件并改名的ROM.bin保存到U盘中才能进行IAP

KEIL 中 生成 BIN文件的命令为

Output/OTG.axf为工程成生axf文件的地址,生成的OTGROM.bin文件保存在工程根目录下

在用户程序中,在中断初始之前要加入以下代码才能保证中断会正确的被响应。

设置中断向量表偏移地址。

程序中跟LCD相关的都可以删掉。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
andrewchen
1楼-- · 2020-01-06 23:53
bootloader的升级逻辑如何实现?原来用DFU升级的时候,是判断
if (((*(__IO uint32_t*)APP_DEFAULT_ADD) & 0x2FFE0000 ) == 0x20000000)  切换的。

用U盘升级还是这样吗?
我看了一下生成的二进制文件,开头的文件根本不是0x2000,而是  2A0E,这样就不符合切换逻辑了啊。这样写进去后,直接导致进入硬件错误中断。
csmjmcc
2楼-- · 2020-01-07 03:20
正需要,先收藏。鸣谢!
cpholr1
3楼-- · 2020-01-07 04:58
 精彩回答 2  元偷偷看……
hejiang177
4楼-- · 2020-01-07 07:09
感谢楼主无私精神!!!
sbusr
5楼-- · 2020-01-07 12:37
求助    U盘容量超过4G就不识别了,怎么处理呢?
我从ST上下的429的DISCOVERY资料,里面的FW_upgrade搬出来到我的板子上。
工程里面带的USB库是  * @version V2.1.0    * @date    19-March-2012  版本的。
usbh_msc_scsi.c  里定义的变量 USBH_MSC_Param.MSCapacity 是个 uint32_t 型的,也就是最大只能到4G字节。
连接上8G的U盘就不能正常运行了。
propor123
6楼-- · 2020-01-07 13:15
标记一下。

一周热门 更多>