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,连接电池,尝试你新的程序。

相关文章推荐

STM32 USB的DFU功能

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

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

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

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

USB DFU materials collecting

STM32F4中USB与PC双向通信

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

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

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

STM32 IAP 在线升级详解

一、在进入主题之前我们先了解一些必要的基础知识----stm32系列芯片的种类和型号: startup_stm32f10x_cl.s 互联型的器件,STM32F105xx,STM32F107xx ...

OTA升级

关闭 一颗偏执的心 坚持积累、缩小差距、一直走在成为大神的路上、 目录视图 摘要视图 订阅 评论送书 | 云原生、Docker、Web算法     为什么...

error: expected declaration specifiers or '...' before错误

原因:头文件包含混乱!! 是因为头文件的包含顺序引起的。error: expected declaration specifiers or '...' before 这个错误是在Linux下面C语言...

linux下USB转串口识别1

minicom是linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到它的高效与便利,下面将讲解minicom的安装和配置。 一、安装m...
  • jinatom
  • jinatom
  • 2012年06月16日 20:25
  • 2741

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

软件下载: stsw-stm32080.zip (12400 K) 下载次数:7843  (特别说明,此软件含有官方的VS平台的源码文件) 开发平台:STM32-V5开发板 前几天在论坛发布了使用串...
  • zhjmyx
  • zhjmyx
  • 2016年11月06日 20:08
  • 2432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM32F405 DFU更新固件
举报原因:
原因补充:

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