STM32 HID Bootloader 项目常见问题解决方案
STM32 HID Bootloader 项目常见问题解决方案
stm32-hid-bootloader Driverless USB HID bootloader and flashing tool for STM32F10X devices 项目地址: https://gitcode.com/gh_mirrors/st/stm32-hid-bootloader
项目基础介绍
STM32 HID Bootloader 是一个无驱动的 USB HID 引导加载程序和闪存工具,专门为 STM32F10X 设备设计。该项目不使用 ST 的库,因为它们被认为是臃肿且有问题的。相反,它仅使用了 ST 提供的 SDK 中的 CMSIS 和一些必要的系统文件和宏。这使得引导加载程序非常小,不到 4KB。用户可以使用提供的 CLI 工具(如 hid-flash MYFIRMWARE.BIN
)来刷写固件。
主要的编程语言是 C 语言,占项目代码的 75.4%。此外,项目中还使用了汇编语言(18.4%)、富文本格式(3.8%)、HTML(2.3%)和 Makefile(0.1%)。
新手使用注意事项及解决方案
1. 编译环境设置问题
问题描述:新手在尝试编译项目时,可能会遇到编译环境设置不正确的问题,导致编译失败。
解决步骤:
- 安装 GCC ARM 工具链:确保你已经安装了最新版本的 GCC ARM 工具链。你可以从 GNU Arm Embedded Toolchain 下载并安装。
- 设置环境变量:将 GCC ARM 工具链的路径添加到系统的环境变量中。例如,在 Linux 系统中,你可以编辑
~/.bashrc
文件,添加如下内容:export PATH=$PATH:/path/to/gcc-arm-none-eabi/bin
- 验证安装:在终端中运行
arm-none-eabi-gcc --version
,确认工具链已正确安装并可用。
2. 固件刷写问题
问题描述:在刷写固件时,可能会遇到设备无法识别或刷写失败的问题。
解决步骤:
- 检查 BOOT1 引脚:确保 BOOT1 引脚在启动时被驱动为高电平。对于 Blue Pill 板,设置 BOOT1 跳线到 1 位置,BOOT0 跳线到 0 位置。
- 使用正确的 CLI 工具:确保你使用的是项目提供的
hid-flash
工具。你可以从项目的cli
目录中找到该工具的源代码并编译。 - 检查固件文件:确保固件文件(如
MYFIRMWARE.BIN
)存在且路径正确。
3. 中断向量表位置问题
问题描述:在编译用户应用程序时,可能会遇到中断向量表位置不正确的问题。
解决步骤:
- 修改 Makefile:在项目的
Makefile
中,确保设置了正确的 FLASH 起始地址和中断向量表位置。通常,这些设置在Makefile
和.ld
脚本中。 - 检查链接脚本:确保
.ld
脚本中定义了正确的 FLASH 起始地址和中断向量表位置。例如:FLASH (rx) : ORIGIN = 0x8001000, LENGTH = 0x10000
- 重新编译:修改完成后,重新编译项目,确保所有设置都正确应用。
通过以上步骤,新手可以更好地理解和使用 STM32 HID Bootloader 项目,避免常见问题的发生。
stm32-hid-bootloader Driverless USB HID bootloader and flashing tool for STM32F10X devices 项目地址: https://gitcode.com/gh_mirrors/st/stm32-hid-bootloader
作者:邹岩讳Sally