简介:
使用 Dfuse 工具,利用 USB 的 DFU 功能实现固件升级,Bootloader分配32KBytes的Flash,剩余分配给Application。代码功能已验证,使用探索者开发板直接烧录即可测试。
一、使用STM32CubeMX生成USB DFU工程
1.1.打开STM32CubeMX,并点击ACCESS TO MCU SELECTOR
1.2.选择芯片型号
1.3.添加一个按键,用于控制程序进入bootloader模式
1.4.添加一个LED用于指示运行的程序的运行状态
1.5.配置RCC,选择外部晶振作为时钟源
1.6.选择USB接口
1.7.配置USB设备
Class for FS IP 选择 Download Firmware Update Class(DFU)
USBD_DFU_APP_DEFAULT_ADD(升级时存入Application程序的起始地址): 0x8008000
USBD_DFU_MEDIA Interface(对芯片Flash使用的描述): @Internal Flash /0x08000000/02*016Ka,02*016Kg,01*064Kg,07*0128Kg【这个参数是DfuSeDemo这个DFU升级软件需要识别的参数】
0x08000000,表示起始地址
“a”代表的是Read-only,表示所指明的区域应该为Bootloader程序的空间不可擦除或者修改
“g”代表Read/Write/Erase,表示所指明的区域应该为Application程序的空间,大小由前面的数字决定
“*”前面的为Sector的个数,后面的为Sector的大小,这里的意思就是从0x08000000开始,前面2个Sector(每个Sector为16k字节)为Read-only,后面2个Sector(每个Sector为16k字节)为Read/Write/Erase等等。
USBD_DFU_MEDIA Interface的配置需要根据芯片实际情况来:比如此项目使用的是STM32F407ZG的芯片,其flash总共分为12个扇区(Sector),前4个扇区每个扇区为16KBytes,接着的1个扇区为64KBytes,剩余7个扇区都是每个扇区128KBytes。此项目使用32KBytes(即0x8000)用于做Bootloader,剩余做Application。
1.8.配置时钟(USB时钟必须为48MHz)
1.9.配置Project Manager
1.10.生成工程