Page tree
Skip to end of metadata
Go to start of metadata

复位地址

Arm Cortex内核在复位时从地址0x00000000开始运行,因此该地址分别指向:

  • ROM code位于Cortex-A7侧。 ROM嵌入了在平台引导(并执行boot chain)或从低功耗STANDBY模式唤醒时执行的引导代码。
  • Cortex-M4侧的保留RAM。 在释放Cortex-M4重置(在RCC中)并使其运行之前,需要由Cortex-A7加载。 默认情况下,这是由Linux协处理器管理完成的。

注意:由于Cortex-A7的ROM代码映射到地址0x00000000,因此它使用硬件别名来访问地址0x38000000的保留RAM

Cortex-M4 多端口

Cortex-M4通过以下面的三个端口连接到互连模块(ML-AHB),如下图所示:

  • I-bus用于获取0x00000000--0x1FFFFFFF地址范围内的代码指令(Instructions)。
  • D-bus 用于在0x00000000--0x1FFFFFFF地址范围内读取/写入数据(Data)。
  • S-bus用于0x20000000--0xFFFFFFFF地址范围内的所有访问; 所有STM32MP15内部外设寄存器都映射在该范围内。


在这些端口之间平衡Cortex-M4固件访问可调整系统性能,这就是为什么MCU SRAM在第一个地址范围(从0x10000000开始)中定义,但在第二个范围(从0x30000000开始)在STM32MP15中可见的原因。
尽管如此,必须注意,嵌入在STM32MP15中的Cortex-M4仅允许在I-bus覆盖的地址范围上设置硬件断点。 因此,必须通过软件断点调试通过S-bus访问的任何代码。


完整内存映射

下面的内存映射图是在硬件级别公开的所有区域的子集:它显示了OpenSTLinux中使用的默认配置,但客户可以选择其他映射方式以利用STM32MP1芯片定义的其他地址范围。

 Cortex-A7/Cortex-M4 共享内存

下图是Cortex-A7非安全和Cortex-M4之间共享的RAM区域的放大图。 此映射是意法半导体(STMicroelectronics)的默认实现,可以由客户自由调整以适应其他需求。



  • No labels