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

[复制链接]
7718|17
 楼主| fengye5340 发表于 2013-4-16 14:15 | 显示全部楼层 |阅读模式
                     

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

20130416113032984.jpg
第五张,点击确定后,会出现下面的信息,
   20130416140024250.jpg
版本应该是11A,我在DFU 配置里面设置的就是这个值呢,见图
20130416141338203.jpg
  
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 | 显示全部楼层
如果 校验和下载都确定正常,或许这样的错误可以不用理会。
 楼主| fengye5340 发表于 2013-4-16 16:45 | 显示全部楼层
IJK 发表于 2013-4-16 16:23
如果 校验和下载都确定正常,或许这样的错误可以不用理会。

不理会不行呢,如果强行关闭上位机软件,下载的更新固件无法运行,也就失去了DFU的效果
IJK 发表于 2013-4-16 17:49 | 显示全部楼层
个人理解,既然只改了固件、且出问题了,那么固件改得有一定问题,所以可以调试一下固件,应该能查出问题
 楼主| fengye5340 发表于 2013-4-16 18:13 | 显示全部楼层
IJK 发表于 2013-4-16 17:49
个人理解,既然只改了固件、且出问题了,那么固件改得有一定问题,所以可以调试一下固件,应该能查出问题 ...

谢谢,固件是官网的固件,只是MCU型号的问题。上网搜了一下,遇到这个问题的还不少,看来是个通病
IJK 发表于 2013-4-17 09:42 | 显示全部楼层
fengye5340 发表于 2013-4-16 18:13
谢谢,固件是官网的固件,只是MCU型号的问题。上网搜了一下,遇到这个问题的还不少,看来是个通病 ...

如果是这样,那或许ST的人自己还没调好,只能向ST反应才行
 楼主| fengye5340 发表于 2013-4-18 13:02 | 显示全部楼层
IJK 发表于 2013-4-17 09:42
如果是这样,那或许ST的人自己还没调好,只能向ST反应才行


经过测试,可以正确下载和校验程序了,除了不能点离开退出,重新上电后可以启动应用程序。同时,发现错误码是:0x123450A   根据错误码找到了一个宏定义,STDFU_STRINGDESCRIPTOR ,检查了上位机软件代码,没有发现处理该错误的子程序
IJK 发表于 2013-4-18 13:46 | 显示全部楼层
其实我原来的想法也就是,出现的问题只是小问题,重新上电后可以正常启动应用程序。
那现在这样就算好了。当然如果能改改上位机软件的出错处理,就更完美了。
 楼主| fengye5340 发表于 2013-4-18 15:25 | 显示全部楼层
IJK 发表于 2013-4-18 13:46
其实我原来的想法也就是,出现的问题只是小问题,重新上电后可以正常启动应用程序。
那现在这样就算好了。 ...

DFUSE_DEMO 的源码我编译过,好多被重定义了,这个暂时没法去改了。感谢你的解答!
cjhk 发表于 2013-4-18 18:55 | 显示全部楼层
难道是软件设置问题   或者是编译器本身的问题  不是很了解
cjhk 发表于 2013-4-18 18:55 | 显示全部楼层
再仔细查一查  电路  看看  电路本身会不会有虚焊问题   仔细排查一下
 楼主| fengye5340 发表于 2013-4-19 09:46 | 显示全部楼层
cjhk 发表于 2013-4-18 18:55
再仔细查一查  电路  看看  电路本身会不会有虚焊问题   仔细排查一下

谢谢你的建议,很确定的是,这个跟硬件没有关系。因为上位机已经检测到硬件的存在,其中的问题在于通信过程出错了
幻刺 发表于 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通信那里有问题呢?还是别的地方~~
 楼主| fengye5340 发表于 2013-7-19 15:51 | 显示全部楼层
幻刺 发表于 2013-7-19 15:34
在弄STM32的DFU升级应用程序,首先刷入官方的DFU的代码,略改了下按键的判断方式和跳转地址,改到偏移0X400 ...

这个问题已经过去好久了,现在看来,是官方提供的那个DFU软件的BUG,到49%的时候,可能需要复位一下信号,而软件没有执行,导致软件退出了,但程序可以正确运行。建议楼主别在上面耗费太多精力,没有意义
幻刺 发表于 2013-7-19 16:02 | 显示全部楼层
fengye5340 发表于 2013-7-19 15:51
这个问题已经过去好久了,现在看来,是官方提供的那个DFU软件的BUG,到49%的时候,可能需要复位一下信号 ...

我不是楼主啊。我也没有纠结于那个49%.是勾选校验哪里,失败。写进去和读出来的不同。BOOTLOAD之后跳到应用程序那里就不动了。感觉写入的数据是错误的。我在某些开发板上就可以成功。。。有些板子就不行。。不知道是不是USB什么的地方有问题
muelfox 发表于 2015-1-26 01:36 | 显示全部楼层
USB信号没复位, 在main程序开始位置初始化PA12为推挽输出,相当于复位USB
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

455

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部