ST意法半导体
直播中

kmno4

12年用户 959经验值
私信 关注
[问答]

有没有办法直接从BootRom运行M4固件呢?

有没有办法直接启动M4,从BootRom运行M4固件。
我知道工程模式,但是它需要调试器的帮助才能将 M4 固件复制到内存中并运行它。我喜欢做同样的事情,但在独立模式下。
我也知道 M4 可以使用 SSBL 启动和运行 M4 固件,但是我们希望 M4 固件配置时钟而不是 SSBL。有些人可能会指出为什么不使用基于 M4 的微控制器而不是 MPU,但我们有一个特定的要求,即从 BootRom 引导到 MPU 上的 M4。
我正在考虑将 M4 固件存储为 FSBL,并在其中一个闪存设备(NOR/NAND 闪存)上使用正确的标头,一旦 bootRom 声明 FSBL,复制 M4 固件并运行它。
我还没有遇到过这种方法,这就是为什么我想问这是否有可能?


回帖(1)

张海宝

2023-1-17 10:22:25
bootrom由Cortex-A7执行,所以是A7负责从外部存储(如SD卡)加载并校验FSBL,放到SYSRAM中跳转执行。
在所有这些步骤中,M4 保持复位状态。
你可以做什么(请参考RM0436的图4“Memory Map”中的内存映射):
A7在SYSRAM(0x2ffc0000~0x2fffffff)中加载FSBL并执行。
A7中的代码应该


  • 将 M4 固件的复位向量从 FSBL 数据复制到 RETRAM(M4 在 RETRAM 中的地址 0 处执行,映射到 A7 的地址 0x38000000)
  • 通过RCC寄存器RCC_MP_GCR去除对M4的复位(设置为0x1)
  • 将 A7 置于无限循环中。

M4 将根据复位向量开始执行。
M4 代码可以在同一个 SYSRAM 中。我的意思是,您不需要复制整个 M4 代码,复位向量可以指向 SYSRAM 中的代码。但是 M4 访问 SYSRAM 会引入一些延迟,因此 M4 应该优先使用 RETRAM 和/或 SRAM1-4。
请考虑我没有测试上面的过程。我希望我没有忘记一些细节。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分