STM32G0 调试usb dfu 问题记录

一、概述

在做STM32G0 系列单片机的usb dfu功能。按照网上的教程,到官网下载了dfuse 。安装后,配置编写stm32 的BootLoader 功能代码,进入DFU模式(插入usb线)。

二、STM32 Download Firmware Update 驱动安装不成功

问题描述

Windows 能检测到usb的接入,但是识别不到当前设备。
在这里插入图片描述
在这里插入图片描述

点击STM32 DownLoad Firmware Update 查看驱动信息,提示该设备的驱动程序未被安装。
在这里插入图片描述

解决问题

找到DfuSe v3.06 的安装路径,根据自己操作系统的版本,选择对应的驱动文件,直接双击安装。我的系统是win10,路径是C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin\Driver\Win10 双击 dpinst_amd64 安装,问题解决。

三、升级后,校验不通过,无法开机

问题描述

通过dfuse 选择要升级的固件,点击upgrade , 程序显示升级成功。但是重新开机后,程序跑飞,没法开机。重试几次,偶尔能捕抓到程序出现hardfault

问题分析解决:

直接通过Jlink 烧录,程序能正常从boot 跳转到APP,app 能正常运行。说明跳转地址的处理,向量表重定向都是没问题的。

写数据出错?

通过Jlink分别读取usb升级前的hex文件和usb升级后的hex文件,并进行比对,发现hex文件中的app部分确实出现个别内容不一致,并且没有规律。
也通过升级工具的校验功能,验证了上述问题。通过dfuse 升级后,点击Verify ,提示如下(matching not good...):
在这里插入图片描述

说明程序想写的数据,跟写完读取出来的数据不一致。

flash擦写函数有bugs?

尝试优化flash擦写函数,禁止中断,检查地址边界。问题都没解决。

最终解决

在百思不得其解的时候,将升级用的usb线,从usb hub拔出,插入机箱的usb口,最终问题解决。搞了半天,原来是线材的问题。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gdut_llkkyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值