搜索
查看: 6027|回复: 5

[求助] STM32F407 USB upgrade问题

[复制链接]

该用户从未签到

2

主题

5

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-1-10 11:58:52 | 显示全部楼层 |阅读模式
 大家好,请教下关于stm32f407 软件升级问题
设备:1、官方的discovry的开发板MB997B
             2、官方提供的STM32F4-Discovery_FW_V1.1.0\Project\FW_upgrade 开发包
             3、编译环境使用KEIL MDK
问题:1、利用该程序将自己编译生成的systick的二进制文件下载到0x08008000地址,程序执行COMMAND_JUMP() 后无法启动
            2、使用官方提供的.bin文件就可以,就可以正常运行
            3、我编译的systick的二进制文件时,同时生成的hex文件,利用STM32 ST-LINK Utility 下载到0x0800 0000地址是可以运行的。(侧面论证了用于编译的原程序无任何问题)
            4、编译生成的二进制文件使用的是KEIL自带的二进制生成器来生成的
            5、二进制文件是通过单步仿真下载到0x0800 8000 地址,可以确认二进制.bin文件时下载到片内flash内
            6、大概问题应该是出在自己编译的.bin文件和官方提供的.bin文件存在差异导致(仅个人推断)
 
各位大牛如有遇到过该问题的,请指点指点,谢谢!
 
回复

使用道具 举报

该用户从未签到

5

主题

308

帖子

0

蝴蝶豆

金牌会员

最后登录
1970-1-1
发表于 2014-1-11 00:28:38 | 显示全部楼层

RE:STM32F407 USB upgrade问题

编出来的一样大么?会不会是优化的问题
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

297

帖子

0

蝴蝶豆

初级会员

最后登录
2018-4-6
发表于 2014-1-11 10:06:55 | 显示全部楼层

RE:STM32F407 USB upgrade问题

0x08008000
0x08000000
??
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

228

帖子

0

蝴蝶豆

初级会员

最后登录
2020-12-13
发表于 2014-1-11 23:10:30 | 显示全部楼层

RE:STM32F407 USB upgrade问题

问题:1、利用该程序将自己编译生成的systick的二进制文件下载到0x08008000地址,程序执行COMMAND_JUMP() 后无法启动
2、使用官方提供的.bin文件就可以,就可以正常运行
3、我编译的systick的二进制文件时,同时生成的hex文件,利用STM32 ST-LINK Utility 下载到0x0800 0000地址是可以运行的。(侧面论证了用于编译的原程序无任何问题)
---------------------------------------------------------------------------------------------
1、我猜这是笔误。因为0x0800 0000是cortex M3的复位起始地址,用来存放IAP的 ,APP是存放在Boot跳转的位置, 如0x08008000。
2、我猜你的代码无法运行的原因是没有修改中断向量表的映射,在APP的main函数中需要新增一条语句,
void NVIC_SetVectorTable(0x8000000, 0x8000); 用来表示复位/中断发生后,IAP的中断可以映射到APP的 中断 向量表,即可以映射到地址0x08008000。
具体查看datasheet 和stm32的库函数NVIC_SetVectorTable 
 
 
 
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

228

帖子

0

蝴蝶豆

初级会员

最后登录
2020-12-13
发表于 2014-1-11 23:55:44 | 显示全部楼层

RE:STM32F407 USB upgrade问题

形象一点可以这么说, 中断发生后(复位也是一种中断) 硬件会自动跳转到0x08000000, 然后找到这个位置的中断向量表,在IAP的初始化中,将中断向量表设置为0x08000000,以后每次中断后, 系统都能找到对应的中断向量。
如果在APP中不重新设置中断向量表为0x08008000,以后发生中断后,中断又映射到地址0x08000000,导致APP的中断无法响应
如果设置了中断向量表,中断发射后映射到地址0x08000000,然后发生有设置的中断映射表在0x08008000,中断重新产生一次映射。
如果需要细究最好看看arm怎么启动的,中断怎么映射的
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

76

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-1-13 10:51:02 | 显示全部楼层

RE:STM32F407 USB upgrade问题

为啥不用hex呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-4 19:22 , Processed in 0.161974 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表