st-link v2怎么连接_STM32 连 JLink 都连不上了,怎么办?此时 dfu 可救场。

背景介绍:
STM32 有许多种烧写固件的方法,本文说说 dfu 方法。
有些时候由于某种离普的软件错误,可能导致 JLink、STLink 连不上,这时就可以用 dfu 来救场。
Windows 下使用 DfuSe 网上方法很多,本篇 Sugar 主要说一下在 Ubuntu 上怎么用 dfu。
下面来看一看 dfu 是怎样只用一根 USB 线救场的。

Ubuntu 18.04 安装 dfu-util

sudo apt-get install dfu-util

安装过后查看一下版本

# 注意 V 是大写dfu-util -V

393ed99b92156a8b53622e3e25b29191.png

查一下 dfu-util 的说明文档

链接地址:http://manpages.ubuntu.com/manpages/bionic/man1/dfu-util.1.html

根据 2020 年 03 月 20 日的信息,可以列出下表:

Ubuntu 版本dfu-util 版本
14.04 LTS0.5
16.04 LTS0.8
18.04 LTS0.9
19.040.9
19.100.9

使用方法

常用命令解析。

1、查看 dfu 的可用设备 dfu-util -ldfu-util --list

28daee26880071acfa535b8b00e38e97.png

2、通过 idVendoridProduct 指定 dfu 设备并刷入固件。
(1) 通过 lsusb 得到 idVendor 和 idProduct,如下图:

4411e9407c2897b056aa575cf1413693.png

(2) dfu-util -d 0483:df11 -a 0 -D bootloader.dfu

fd71ead80f34ea15ab9e4d36b86d18d9.png

  1. -d, —device 当电脑上只接了一个 dfu 设备的时候这个项是可选的(就是说可以不写)。

  2. -a, —alt 对于单片机,这项带上参数 0 就行了。

  3. -D, —download 要烧录的 dfu 固件。

使用 dfu-util 烧写 bin 文件

*.bin固件不像*.dfu固件一样包含地址信息,因此需要指定烧写地址。

通过-s指定烧写地址,注意 s 是小写,例:

# :leave 是说烧写后单片机退出 dfu 模式开始运行的意思。dfu-util -a 0 -s 0x08000000:leave -D bootloader.bin

使用 dfu-util 读出单片机里的固件

这个功能 Sugar 基本不用,这里只把示例简单写一下。

通过-U参数实现固件上载。下面示例从 0x08000000 上载 1KB 的 Flash 内容:

# -U, —upload FILEdfu-util -a 0 -s 0x08000000:1024 -U newfile.bin

PS

使用 dfu 硬件上要将 BOOT0 接高电平,这点在这里简单提一下,如有不清可以百度(关键词:STM32 启动模式)资料很多这里不再赘述了。再次提一个要点:dfu 在 Ubuntu 上可以烧写 *.bin 固件。这意味着忘记带 JLink/STLink、手边也找不到 USB 转串口的时候也能烧写固件,非常爽。

Sugar 一度认为 dfu 是万能救场模式,直到遇到 STM32H743VIT6 V 版芯片才发现 dfu 也有局限,但这并不影响 dfu 的救场功能。关于 V 版芯片的 dfu 问题 Sugar 是在玩儿 OpenMV 时遇到的(dfu 刷固件卡在 49% 不动),过坑方法后面会推文。

OpenMV 固件源码 500 多 MB,考虑到部分读者在 github 上 clone 困难,Sugar 将源码打包在天翼网盘,公众号后台回复 code 得到网盘地址。读者还想要什么 github 上的代码可以后台留言,Sugar 网盘有 15GB 全部可以用来共享代码。

关注作者

欢迎扫码关注我的公众号MultiMCU EDU

341acf1f31b24b3f890388cc57fdf311.png

提示:在公众号“关于我”页面可加作者微信好友。

喜欢本文求点赞,有打赏我会更有动力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值