DFU全称为Device Firmware update,串口ISP一样,他们都集成在了芯片内部的Bootloader区段,可以通过配置boot引脚来启动。

DFU方案完整的组件包括单片机DFU Demo代码、PC端升级程序、PC端Demo代码以及相关资料手册等。通过使用DFU方案,我们可以快速的集成升级功能到开发的产品中,同时还能够快速的开发与之配套的升级程序。

  1. 不管采用OTA方式还是有线通信方式,DFU包括后台式(background)和非后台式两种模式。
  2. 后台式DFU,又称静默式DFU(Silent DFU),在升级的时候,新固件在后台悄悄下载,即新固件下载属于应用程序功能的一部分,在新固件下载过程中,应用可以正常使用,也就是说整个下载过程对用户来说是无感的,下载完成后,系统再跳到BootLoader模式,由BootLoader完成新固件覆盖老固件的操作,至此整个升级过程结束。
  3. 比如智能手机升级Android或者iOS系统都是采用后台式DFU方式,新系统下载过程中,手机可以正常使用哦。
  4. 非后台式DFU,在升级的时候,系统需要先从应用模式跳入到BootLoader模式,由BootLoader进行新固件下载工作,下载完成后BootLoader继续完成新固件覆盖老固件的操作,至此升级结束。
  5. 早先的功能机就是采用非后台式 DFU来升级操作系统的,即用户需要先长按某些按键进入bootloader模式,然后再进行升级,整个升级过程中手机正常功能都无法使用。

一、 首先配置keil执行工具

.\file_handling.bat @L !L $K

看图复制粘贴
在这里插入图片描述

二、输出文件名根据自身定义

输出文件名

三、参数名的介绍

参数名注释
@L输出文件名(上图所示位置)
!L输出文件名.axf
$Kkeil路径

四、 编写bat脚本(此处需要根据工具存放路径进行更改 xBin2Dfu/merge_file)

@echo off
set bin=%1
set axf=%2
set keilpath=%3
echo current file:%bin%.bin
echo current axf:%axf%
echo current keilpath:%keilpath%

:: 生成bin
%keilpath%\ARM\ARMCC\bin\fromelf.exe --bin --output=.\out\bin\%bin%.bin %axf%
:: 生成DFU
.\xBin2Dfu\xBin2Dfu.exe -s .\out\bin\%bin%.bin -o .\out\bin\ -n 4
:: 合并bin(boot+app)
.\xMerge\merge_file.exe -s .\out\bin\boot.bin -t .\out\bin\%bin%.bin -i 0x400 -o .\out\bin\boot_%bin%.bin

五、 打包内容如下

在这里插入图片描述
file_handling.bat 需要放置在 keil uvprojx 工程下。
在这里插入图片描述
另外两个工具,自己找个固定地方存放。然后修改bat里面的路径

文件下载地址

六、文件二合一

格式:
*.exe .\1.hex .\2.hex .\12.hex
下载

开源地址

工具代码

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐