ARMCPU如何加载bootloader?

How ARM CPU loading bootloader?

据我所知,CPU可以直接访问RAM。启动时设备 RAM 为空,CPU 不知道从何处将引导加载程序加载到 RAM 中以执行它。即使它也无能为力,因为我认为调用堆栈也应该是空的。 然而bootloader程序是如何复制到RAM中执行的呢?

这应该发生在智能手机等嵌入式设备上。据我所知,在 x86 PC 上,BIOS 负责将 MBR 部分从磁盘加载到 RAM。

你在 x86 上遇到了同样的问题。和一般相同的解决方案(对于任何其他处理器也是如此),您将 rom/flash 放在处理器引导 and/or 的地址 space 中,其向量 table 是.

还有其他一些解决方案,例如使用其他逻辑从一些非易失性存储中读取并将其放置在 boot/vector space 中,或者其他逻辑为其他 [=17] 提供接口=]下载进去board/chip然后释放reset.

RAM 中的引导加载程序是辅助引导加载程序;在某种 ROM 中总是有代码包含加载次要 bootstrap 的主要 bootstrap。通常,ROM 是 mask-ROM 在它自己的芯片上。

通常在 Cortex-A 等 ARM 应用处理器上,主要 bootstrap 会将代码从 NAND 闪存或 SD 卡加载到 RAM。在任何情况下,ARM Cortex-M 通常 运行 代码直接来自 ROM。