STM32H7的boot启动模式
- H7的boot启动模式
- F1,F4 的启动方式
H7的boot启动模式
跟F1和F4不同的是,H7的启动方式只有一个boot引脚,但是这个引脚只能区分两种状态,因此H7配套了两个option bytes选项字节配置,
BOOT引脚 | BOOT地址、选项字节 | BOOT区域 |
---|---|---|
0 | BOOT_ADD0[15:0] | 启动地址由BOOT_ADD0定义,默认值是0x800,对应的flash地址是0x8000000 |
1 | BOOT_ADD1[15:0] | 启动地址由BOOT_ADD1定义,默认值是0x1FF,对应的bootloader的首地址是0x1FF00000 |
BOOT_ADD0 和 BOOT_ADD1 对应 32 位地址到高 16 位,这点要特别注意。通过这两个选项字节,
所有 0x0000 0000 到 0x3FFF 0000 的存储器地址都可以设置,包括:
◆ 所有 Flash 地址空间。
◆ 所有 RAM 地址空间,ITCM,DTCM 和 SRAM。
设置了选项字节后,掉电不会丢失,下次上电或者复位后,会根据 BOOT 引脚状态从 BOOT_ADD0,
或 BOOT_ADD1 所设置的地址进行启动。
使用 BOOT 功能,注意以下几个问题:
◆ 如果用户不慎,设置的地址范围不在有效的存储器地址,那么 BOOT = 0 时,会从 Flash 首地址0x0800
0000 启动,BOOT = 1 时,会从 ITCM 首地址 0x0000 0000 启动。
如果用户使能了 Flash Level 2 保护,那么只能从 Flash 地址空间进行启动。
F1,F4 的启动方式
作为对比,这里补充 F1,F4 的启动方式,由 BOOT0 和 BOOT1 引脚共同决定。
BOOT引脚 | BOOT模式 |
---|---|
BOOT0=0,BOOT1=X | 从flash启动 |
BOOT0=1,BOOT1=0 | 从系统代码启动 |
BOOT0=1,BOOT1=1 | 从SRAM启动 |