编写不易,仅供参考学习,请勿转载!!!
#前言
市面上所有的ST F103的最小系统板,都没有办法通过 micro usb来下载程序,不知道大家好不好奇,为什么?为什么国产的对标F1系列的最小系统都能通过USB进行下载程序。为什么就ST的F1下载程序不行?
只能通过usb进行供电,或者作为通信接口。
#系统存储器存放的究竟是什么
在使用USB 或者 USART 进行烧录的时候,都要配置BOOT引脚,进入到系统存储器,这里系统存储器(System Memory)是一个特殊的区域,用于存放Bootloader,或者其他特定的启动程序,这个区域通过特定的引脚状态,或者其他启动方式来访问。
系统存储器里面不只有Bootoloader模式,以下是一些常见的系统存储器模式或功能:
-
Bootloader模式:
- 系统存储器可以包含一个Bootloader程序,用于在设备启动时加载并运行。
- Bootloader通常用于固件更新或者加载应用程序到设备的主存储器(如Flash)中。
- 进入Bootloader模式通常需要特定的引脚状态(如BOOT0和BOOT1引脚的状态)或者通过设备复位时的自动检测来触发。
-
DFU模式(Device Firmware Upgrade):
- 一些STM32设备的系统存储器中可能包含支持DFU协议的固件,用于通过USB接口进行固件升级。
- 进入DFU模式通常是通过配置BOOT0引脚为特定状态(如低电平)来实现的。
-
系统初始化和配置:
- 在某些情况下,系统存储器中可能包含用于初始化和配置设备外设的启动程序或固件。
- 这些程序可以帮助设备在启动时进行基本的配置,例如时钟设置、外设初始化等。
-
应急恢复或调试模式:
- 一些开发板或者产品设计中,系统存储器可能包含用于应急恢复或调试设备的特殊启动程序。
- 这些程序可以在设备遇到问题或者需要调试时启动,提供额外的功能或者接口以便于开发人员进行故障排除。
#DFU协议介绍
Device Firmware Upgrade 缩写 DFU 翻译:设备固件升级 ,这种协议是一种用在嵌入式系统中,通过USB接口进行固件升级的标准协议。
#重点知识
通过DFU固件升级和通过DFU烧录程序本质上是一回事,都涉及到了,通过DFU协议来更新嵌入式设备的固件。
DFU固件升级方式
这是指使用DFU协议来更新设备固件的过程。这种方式通常包括以下步骤:
-
进入DFU模式:
- 设备通过硬件(如BOOT引脚)或软件方式进入DFU模式。
- 在DFU模式下,设备会等待接收新的固件数据。
-
传输固件数据:
- 使用DFU工具(如STM32的DfuSe工具)在主机(如PC)上将新的固件数据通过USB传输到设备。
- 设备在接收过程中会进行数据校验,以确保传输的固件数据的完整性和正确性。
-
写入Flash存储器:
- 设备接收到完整的固件数据后,将其写入内部的Flash存储器。
- 更新完成后,设备通常会重新启动并运行新固件。
DFU烧录程序
这是指具体实施DFU固件升级的过程。DFU烧录程序的主要工作是将新的固件数据写入设备的存储器中。具体步骤和流程如下:
-
进入DFU模式:
- 将设备设置为DFU模式,使其能够接收新的固件数据。
-
使用DFU工具:
- 在PC端使用DFU工具,选择需要烧录的固件文件,并通过USB接口将数据传输到设备。
-
设备处理数据:
- 设备接收并验证固件数据,然后将其写入Flash存储器中。
#STM32F103c8t6不支持DFU下载
F103不支持DFU下载,只能用来做USB协议通信,如果必须通过USB烧录程序,可以通过下面两种方法。
自定义Bootloader:可以实现一个自定义的Bootloader程序,通过USB接收固件数据并写入Flash存储器。这种方式可以自定义通信协议和传输方式,不依赖于DFU协议。
串口烧录:使用USB转串口芯片(如FTDI、CP210x等),将PC端的串口数据传输到设备的UART接口,然后通过串口进行固件烧录和更新。
欢迎指正,希望对你,有所帮助!!!