STM32F405 DFU更新固件

原创 2015年07月08日 14:03:16

参考https://wiki.bitcraze.io/projects:crazyflie2:development:dfu
DFU更新模式主要被考虑作为一种恢复模式,它可以下载新的固件到STM32F405中;另外空中下载OTA(Over The Air)也可以更新固件,相对DFU更方便一些,用这种方法我们也可以更新nRF51822。

Linux (Ubuntu)

使用apt-get安装dfu-util

apt-get install dfu-util
然后我们就可以使用DFU更新模式引导STM32F405

 1. 连接一个micro-USB线到你的电脑,但是先不要连接到Crazyflie 2.0; 2. 断开Crazyflie 2.0供电电池(如果电池已经连接上); 3. 按下button(on/off),保持按下状态,然后插入USB线到Crazyflie 2.0; 4. 按下状态保持五秒,当你看到第二个等闪烁(频率1HZ)的时候,就可以松开按键了; 5. 这个时候STM32F405就处于DFU模式了。

为了确保DFU模式是正常的,我们可以通过lsusb看到如下信息:

lsusb
...
Bus XXX Device XXX: ID 0483:df11 STMicroelectronics STM Device in DFU Mode
...

BIN File

现在STM32F405可以更新,目前我们仅仅生成了二进制文件.bin,而没有.dfu文件,所以使用dfu-util的时候需要提供更多的信息才能,例如下载的地址信息,因为bin文件没有包含地址信息,需要我们自己指定。如果Crazyflie 2.0 firmware使用带CLOAD=1(默认带有)的参数编译的二进制文件,那么可以下载到bootloader之后的地址0x08004000(16K),booloader的起始地址是0x08000000。
sudo dfu-util -d 0483:df11 -a 0 -s 0x08004000 -D cflie.bin

如果编译的时候参数CLOAD=0,那么编译的二进制文件下载的地址为0x08000000。
注意:这将会覆盖radio-bootloader的程序,然后你可以用DFU同样的方法下载bootloader的程序。
sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000 -D cflie.bin

DFU File

下载DFU文件
sudo dfu-util -d 0483:df11 -a 0 -D file.dfu
需要一些时间等待下载完成,可能打印的信息如下:
cf@bitcraze:~/projects/crazyflie-firmware$ sudo dfu-util -a 0 -s 0x08004000 -D cflie.bin
dfu-util 0.5

(C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko Inc.
(C) 2010-2011 Tormod Volden (DfuSe support)
This program is Free Software and has ABSOLUTELY NO WARRANTY

dfu-util does currently only support DFU version 1.0

Opening DFU USB device... ID 0483:df11
Run-time device DFU version 011a
Found DFU: [0483:df11] devnum=0, cfg=1, intf=0, alt=0, name="@Internal Flash  /0x08000000/04*016Kg,01*064Kg,07*128Kg"
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
No valid DFU suffix signature
Warning: File has no DFU suffix
DfuSe interface name: "Internal Flash  "


现在你可以拔掉micro-USB,连接电池,尝试你新的程序。

STM32F4系列DFU程序设计(HAL库)

一、前言 MCU的DFU功能,在产品中必不可少。本例通过USB接口进行ROM区域APP程序固件升级。所用的硬件为STM32F401 Discovery开发板。参考STM32CUBE中文网的文章 ht...
  • musicalspace
  • musicalspace
  • 2016年10月27日 09:02
  • 1139

官方DFU固件更新软件实现对STM32的USB方式代码升级简易说明

软件下载: stsw-stm32080.zip (12400 K) 下载次数:7843  (特别说明,此软件含有官方的VS平台的源码文件) 开发平台:STM32-V5开发板 前几天在论坛发布了使用串...
  • zhjmyx
  • zhjmyx
  • 2016年11月06日 20:08
  • 3154

STM32 USB的DFU功能

最近用到USB,后来发现了STM32F103可以程序实现DFU,在网上搜到代码对比官方文件发现是大容量FLASH的DFU,我用的是STM32F103C8T6,属于中容量。自己对着官方例程修改了网友的代...
  • louyangyang91
  • louyangyang91
  • 2016年07月26日 16:50
  • 3710

u-boot DFU implement ---- dfu-util (1)

USB DFU materials collecting
  • voice_shen
  • voice_shen
  • 2013年10月09日 23:43
  • 2549

STM32 USB DFU固件升级必读

升级代码工程须知 建立好工程后,需要做以下几步处理: 1、首先点击编译器的”Target Option”,然后选择Target选项,设置”Read/Only Memory Areas”域的...
  • u011318735
  • u011318735
  • 2013年12月19日 21:06
  • 6496

STM32 BootLoader升级固件

BootLoader关于Bootloader,从书上的文字描述,很难理解这个名词是什么,有什么用。这次用到了,算是有了更进一步的认识。一、知识点 1、BootLoader就是单片机启动时候运行的一段小...
  • u011303443
  • u011303443
  • 2016年11月28日 16:43
  • 6217

DW1000FOLLOWER开发版简介

淘宝链接:https://item.taobao.com/item.htm?id=543783701386&scm=1007.11461.75999.0&pvid=04e96f17-666f-4e9f...
  • xingqingly
  • xingqingly
  • 2017年03月23日 17:36
  • 2832

STM32F4中USB与PC双向通信

STM32F4系列处理器内部集成了USB-OTG控制器,在不要外部USB IC下就可以实现USB通信,最近两天看了下如何利用STM32的USB实现通信,记录下关键步骤: 1. 从http://ww...
  • weiaipan1314
  • weiaipan1314
  • 2016年09月07日 11:03
  • 5654

WiFi物联中的OTA固件升级设计原理

WiFi物联中的OTA升级设计原理
  • yueqian_scut
  • yueqian_scut
  • 2016年10月13日 09:42
  • 7796

STM32 IAP 在线升级详解

一、在进入主题之前我们先了解一些必要的基础知识----stm32系列芯片的种类和型号: startup_stm32f10x_cl.s 互联型的器件,STM32F105xx,STM32F107xx ...
  • yx_l128125
  • yx_l128125
  • 2013年10月24日 15:49
  • 71802
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM32F405 DFU更新固件
举报原因:
原因补充:

(最多只允许输入30个字)