存储器采用固定的存储器映射,代码区域起始地址为 0x0000 0000(通过 ICode/DCode 总 线访问),而数据区域起始地址为 0x2000 0000(通过系统总线访问)。Cortex?-M4F CPU 始终通过 ICode 总线获取复位向量,这意味着只有代码区域(通常为 Flash)可以提供 自举空间。STM32F4xx 微控制器实施一种特殊机制,可以从其它存储器(如内部 SRAM) 进行自举。 在 STM32F4xx 中,可通过 BOOT[1:0] 引脚选择三种不同的自举模式。
STM32有三种启动模式: Main Flash memory:主FLASH System memory:系统存储器 Embedded SRAM:内置SRAM 三种模式是通过不同配置来实现,一般通过BOOT引脚和BOOT位来配置启动模式。
不同的芯片配置有差异,有些芯片没有BOOT1引脚,会结合BOOT位来实现。
复位后,在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值。复位后,用户可以通过设置 BOOT1 和 BOOT0 引脚来选择需要的自举模式。BOOT0 为专用引脚,而 BOOT1 则与 GPIO 引脚共用。一旦完成对 BOOT1 的采样,相应 GPIO 引脚即进入空闲状态,可用于其它用途。器件退出待机模式时,还会对 BOOT 引脚重新采样。因此,当器件处于待机模式时,这些引 脚必须保持所需的自举模式配置。这样的启动延迟结束后,CPU 将从地址 0x0000 0000 获 取栈顶值,然后从始于 0x0000 0004 的自举存储器开始执行代码。
注意: 如果器件从 SRAM 自举,在应用程序初始化代码中,需要使用 NVIC 异常及中断向量表和偏 移寄存器来重新分配 SRAM 中的向量表。
嵌入式自举程序 嵌入式自举程序模式用于通过以下串行接口重新编程 Flash: ● USART1(PA9/PA10) ● USART3(PB10/11 和 PC10/11) ● CAN2(PB5/13) ● USB OTG FS(PA11/12) 从设备模式(DFU:器件固件升级)。
USART 外设以内部 16 MHz 振荡器 (HSI) 频率运行,而 CAN 和 USB OTG FS 则需要相当 于 1 MHz 数倍(4 MHz 到 26 MHz 之间)的外部时钟 (HSE) 频率。嵌入式自举程序代码位于系统存储器中,在芯片生产期间由 ST 编程。
|