stm32prg烧录boot
时间: 2025-05-26 21:17:23 浏览: 16
### STM32PRG 烧录 Bootloader 的方法教程
#### 工具准备
为了成功烧录 Bootloader 到 STM32 微控制器中,需要准备好以下工具和环境:
- **STM32PRG 软件**:用于通过串口或其他通信协议烧录程序。
- **硬件设备**:包括目标板(带有 STM32H750)、USB-TTL 适配器或 ST-LINK 调试器。
- **开发环境**:如 Keil MDK 或 IAR Embedded Workbench。
---
#### 配置流程
##### 1. 创建 Bootloader 和 APP 应用程序工程
在 Keil MDK 中分别创建两个独立的工程项目:
- **Bootloader 工程**:负责初始化 QSPI 接口并将控制权交给 APP 应用程序[^1]。
- **APP 应用程序工程**:实际业务逻辑所在的区域,运行于外部 QSPI Flash 上。
确保两者的链接地址不同:
- Bootloader 地址设为 `0x8000000`。
- APP 地址设为 `0x90000000`。
##### 2. 编写 Bootloader 主要功能模块
Bootloader 的核心任务包括:
- 初始化 QSPI 接口。
- 将中断向量表重定向至 APP 的起始地址 (`SCB->VTOR = 0x90000000`)。
- 实现跳转机制以切换到 APP 运行状态。
以下是关键代码片段:
```c
void JumpToApplication(uint32_t app_address) {
typedef void (*AppFunction)(void);
AppFunction jump_to_app;
// 检查堆栈指针是否有效
if (*(volatile uint32_t*)app_address != 0xFFFFFFFF && *(volatile uint32_t*)(app_address + 4) != 0xFFFFFFFF) {
SCB->VTOR = app_address; // 设置新的向量表基址寄存器
__set_MSP(*(uint32_t*)app_address); // 加载 MSP 寄存器
jump_to_app = (AppFunction)*(uint32_t*)(app_address + 4); // 获取入口地址
jump_to_app(); // 执行跳转
}
}
```
此函数实现了从 Bootloader 向 APP 的安全跳转。
##### 3. 使用 STM32PRG 烧录 Bootloader
按照以下步骤操作:
- 打开 STM32PRG 并连接目标板。
- 在软件界面中指定 `.bin` 文件路径(通常由 Keil 输出)。
- 设定烧录参数,例如波特率、端口号等。
- 开始烧录过程,并验证是否成功写入。
注意:如果使用的是外部 QSPI Flash,则需额外配置下载算法文件来支持该存储介质的操作[^1]。
---
#### 常见问题及其解决方案
1. **无法正常进入 APP**
- 可能原因:中断向量表未正确映射到新地址。
- 解决方案:确认 `SCB->VTOR` 是否已设置为目标地址 `0x90000000`[^1]。
2. **烧录失败提示错误码**
- 可能原因:通信链路不稳定或者目标芯片处于保护模式。
- 解决方案:检查硬件连线以及解除写保护选项后再尝试。
3. **程序运行异常退出**
- 可能原因:QSPI 初始化存在问题导致访问冲突。
- 解决方案:仔细核对 HAL 库调用序列及配置项准确性。
---
阅读全文
相关推荐














