DfuSe demo下载后无法正常进入APP

2019-07-14 14:06发布

        公司要求增加USB在线升级的功能。起初都很顺利,USB连接,程序下载都没有问题。最后的最后却出现了一个令人抓狂的问题:单独用KEIL下载IAP和APP都可以正常工作。拔掉调试线。反复上电,不管是进入IAP(按键进入)和APP,都正常。但是用DfuSe demo这个工具下载就无法正常进入APP。调试看,情况是在跳转APP-MAIN的时候取到了一个错误的地址。程序跑到FLASH异常中断的while(1)里去了。
        实在没办法,我不使用自己的APP。试着调试KEIL提供的例子,情况一样。
        程序的模板我用的是KEIL里自带的ST文件夹下的升级例子。查了很多网上的资料,也都是按照这个例子为模板修改的。
        我改动了以下内容:
        1.进入IAP按键的IO口,改成了我自己的。
        2.USB D+上拉引脚,改成了我自己的。
        3.IAP和APP工程的芯片型号 从 STM32f103ZE 改成了  stm32f103RB.
        4. 因为容量不一样 改了一下ROM区。IAP-0x8000000 SIZE 0x3000    APP-0x8003000 SIZE 0x1D00。
        5.APP里的中断向量首地址,原本例子就是写好的,偏移IAP的SIZE。
        (APP也是例子里提供的,很简单 就是让一个LED闪烁)
        然后就是正常的进入连接USB->转文件格式->下载并更新。不知道我这个改法哪里出了问题,或者是有什么需要注意的地方我没有注意到,一直是上面所说的问题。但是,我用KEIL单独下载都是正常的啊。求各位大神不吝赐教。
        因为小公司就我一个做设计的,公司也不给配网络,这不是我工作的电脑,所以没办法上图。本来应该上图的,实在抱歉。如果有人遇到过类似的问题或者知道问题的原因,请留言,我用U盘COPY切图过来。
        希望大家帮帮忙,老板的眼神已经很怪异了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
qa110
1楼-- · 2019-07-16 15:39
下班很久很久了 帖子弄的有点乱 基本要说明的东西我都写在图片上了
huazhe
2楼-- · 2019-07-16 19:19
 精彩回答 2  元偷偷看……
qa110
3楼-- · 2019-07-16 20:20
huazhe 发表于 2019-2-20 16:28
你的芯片和参考代码用的芯片不一样,差别就在内部FLASH那里,主要是PAGE大小不一样。
128K是MIDDLE DENSITY, 512K是HIGH DENSITY.

恩 好的 我试试看
我也想到了这个问题 但是查了.h文件的定义后 发现只是字符串数组 以为是单纯的用于显示的字符串 我再试试看 说不定有用 谢谢
cyhe
4楼-- · 2019-07-17 00:20
这个很少接触,应该是两个的兼容问题,,,
帅帅的欧尼酱
5楼-- · 2019-07-17 05:19
楼主问题解决了没?
dasa1111
6楼-- · 2019-07-17 06:42
帅帅的欧尼酱 发表于 2019-2-20 16:59
楼主问题解决了没?

我也遇到了类似的问题,DFU 中APP下载了但是总是校验失败。
找了很多资料,但是这个帖子给了我启发。
最终解决了,原因就是芯片不匹配。虽然使用的例程同为stm32f7系列的芯片,且FLASH都为1MB。
但是我所使用的具体型号同例程有不同于的分区sector 0,1,2,3... 地址不同,写Flash之后也就会校验失败。
使用官方例程之前,必须认真比较一下 usbd_conf usbd_desc usbd_dfu_flash 这三个 .c文件 和 .h文件。
根据自己的板子做差异化处理。

一周热门 更多>