打印

求助:【STM32 DFU问题 】Leave DFU mode %49进度时出现错误

[复制链接]
6854|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
                     

          最近在STM32上移植了DFU。移植过程比较顺利。按一下按键后,可以进入DFU模式,PC也能识别硬件,加载文件后,校验和下载都很正常,就是再点击按钮【Leave DFU mode 】时,当进度条走到49%的时候,出现了错误。见图片。请各位大侠们帮忙看看,有没有好的解决方法,谢谢!
        第一张,校验图片,成功:
      
       第二张,下载也成功:
      
      第三张,出现错误了,

   第四张,详细信息


第五张,点击确定后,会出现下面的信息,
  
版本应该是11A,我在DFU 配置里面设置的就是这个值呢,见图

  
沙发
IJK| | 2013-4-16 14:56 | 只看该作者
从表现很难判断,LZ可以设断点来调试一下

使用特权

评论回复
板凳
fengye5340|  楼主 | 2013-4-16 15:36 | 只看该作者
IJK 发表于 2013-4-16 14:56
从表现很难判断,LZ可以设断点来调试一下

这个是ST提供的官方上位机软件,请问怎么在上面设置断点呢? 又不是调试的固件程序,固件程序已经下载进硬件里面了,而且上位机能够发现DFU设备

使用特权

评论回复
地板
IJK| | 2013-4-16 16:23 | 只看该作者
如果 校验和下载都确定正常,或许这样的错误可以不用理会。

使用特权

评论回复
5
fengye5340|  楼主 | 2013-4-16 16:45 | 只看该作者
IJK 发表于 2013-4-16 16:23
如果 校验和下载都确定正常,或许这样的错误可以不用理会。

不理会不行呢,如果强行关闭上位机软件,下载的更新固件无法运行,也就失去了DFU的效果

使用特权

评论回复
6
IJK| | 2013-4-16 17:49 | 只看该作者
个人理解,既然只改了固件、且出问题了,那么固件改得有一定问题,所以可以调试一下固件,应该能查出问题

使用特权

评论回复
7
fengye5340|  楼主 | 2013-4-16 18:13 | 只看该作者
IJK 发表于 2013-4-16 17:49
个人理解,既然只改了固件、且出问题了,那么固件改得有一定问题,所以可以调试一下固件,应该能查出问题 ...

谢谢,固件是官网的固件,只是MCU型号的问题。上网搜了一下,遇到这个问题的还不少,看来是个通病

使用特权

评论回复
8
IJK| | 2013-4-17 09:42 | 只看该作者
fengye5340 发表于 2013-4-16 18:13
谢谢,固件是官网的固件,只是MCU型号的问题。上网搜了一下,遇到这个问题的还不少,看来是个通病 ...

如果是这样,那或许ST的人自己还没调好,只能向ST反应才行

使用特权

评论回复
9
fengye5340|  楼主 | 2013-4-18 13:02 | 只看该作者
IJK 发表于 2013-4-17 09:42
如果是这样,那或许ST的人自己还没调好,只能向ST反应才行


经过测试,可以正确下载和校验程序了,除了不能点离开退出,重新上电后可以启动应用程序。同时,发现错误码是:0x123450A   根据错误码找到了一个宏定义,STDFU_STRINGDESCRIPTOR ,检查了上位机软件代码,没有发现处理该错误的子程序

使用特权

评论回复
10
IJK| | 2013-4-18 13:46 | 只看该作者
其实我原来的想法也就是,出现的问题只是小问题,重新上电后可以正常启动应用程序。
那现在这样就算好了。当然如果能改改上位机软件的出错处理,就更完美了。

使用特权

评论回复
11
fengye5340|  楼主 | 2013-4-18 15:25 | 只看该作者
IJK 发表于 2013-4-18 13:46
其实我原来的想法也就是,出现的问题只是小问题,重新上电后可以正常启动应用程序。
那现在这样就算好了。 ...

DFUSE_DEMO 的源码我编译过,好多被重定义了,这个暂时没法去改了。感谢你的解答!

使用特权

评论回复
12
cjhk| | 2013-4-18 18:55 | 只看该作者
难道是软件设置问题   或者是编译器本身的问题  不是很了解

使用特权

评论回复
13
cjhk| | 2013-4-18 18:55 | 只看该作者
再仔细查一查  电路  看看  电路本身会不会有虚焊问题   仔细排查一下

使用特权

评论回复
14
fengye5340|  楼主 | 2013-4-19 09:46 | 只看该作者
cjhk 发表于 2013-4-18 18:55
再仔细查一查  电路  看看  电路本身会不会有虚焊问题   仔细排查一下

谢谢你的建议,很确定的是,这个跟硬件没有关系。因为上位机已经检测到硬件的存在,其中的问题在于通信过程出错了

使用特权

评论回复
15
幻刺| | 2013-7-19 15:34 | 只看该作者
在弄STM32的DFU升级应用程序,首先刷入官方的DFU的代码,略改了下按键的判断方式和跳转地址,改到偏移0X4000。使用JLINK烧写OK。
应用程序设置IROM1设置为:0x8004000,向量VECT_TAB_OFFSET改为0x4000后,初始化里也增加了
void NVIC_Configuration(void)
{
  /* Set the Vector Table base location at 0x3000 */
  NVIC_SetVectorTable(0x08000000, 0x04000);
}

。也使用JLINK烧写。
情况就是能进入DFU模式,DFUSE DEMO能识别,按住指定KEY。启动进入应用程序。一切正常。
问题是,如果应用程序不用JLINK烧写,而先用DFU FILE MANAGER转换成DFU格式,然后使用DFUSE DEMO烧写,能写入,但是校验失败,点击推出DFU模式,会卡在49%.网上看到几个人有这么个问题。都没看到解决办法。特来求助~

现在很迷茫,都通过JLINK写,分别写入APP和BOOTLOAD都可以正常。看来BOOTLOAD跳转那里是没问题。现在不知道问题是在USB通信那里有问题呢?还是别的地方~~

使用特权

评论回复
16
fengye5340|  楼主 | 2013-7-19 15:51 | 只看该作者
幻刺 发表于 2013-7-19 15:34
在弄STM32的DFU升级应用程序,首先刷入官方的DFU的代码,略改了下按键的判断方式和跳转地址,改到偏移0X400 ...

这个问题已经过去好久了,现在看来,是官方提供的那个DFU软件的BUG,到49%的时候,可能需要复位一下信号,而软件没有执行,导致软件退出了,但程序可以正确运行。建议楼主别在上面耗费太多精力,没有意义

使用特权

评论回复
17
幻刺| | 2013-7-19 16:02 | 只看该作者
fengye5340 发表于 2013-7-19 15:51
这个问题已经过去好久了,现在看来,是官方提供的那个DFU软件的BUG,到49%的时候,可能需要复位一下信号 ...

我不是楼主啊。我也没有纠结于那个49%.是勾选校验哪里,失败。写进去和读出来的不同。BOOTLOAD之后跳到应用程序那里就不动了。感觉写入的数据是错误的。我在某些开发板上就可以成功。。。有些板子就不行。。不知道是不是USB什么的地方有问题

使用特权

评论回复
18
muelfox| | 2015-1-26 01:36 | 只看该作者
USB信号没复位, 在main程序开始位置初始化PA12为推挽输出,相当于复位USB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

454

帖子

11

粉丝