ARM CPU如何加载引导加载程序?

ARM CPU如何加载引导加载程序?,arm,boot,bootloader,Arm,Boot,Bootloader,据我所知,CPU可以直接访问RAM。设备RAM在启动时为空,CPU不知道从何处将引导加载程序加载到RAM中以执行它。甚至它也无能为力,因为我认为调用堆栈也应该是空的。 然而,如何将引导加载程序复制到RAM中以供进一步执行 这应该发生在智能手机等嵌入式设备上。据我所知,在x86 PC机上,BIOS负责将MBR部分从磁盘加载到RAM。您在x86上也有同样的问题。一般来说,与其他处理器一样,在处理器引导的地址空间和/或向量表所在的地址空间中放置一个rom/闪存 还有一些其他的解决方案,比如让其他逻辑从

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


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

您在x86上也有同样的问题。一般来说,与其他处理器一样,在处理器引导的地址空间和/或向量表所在的地址空间中放置一个rom/闪存

还有一些其他的解决方案,比如让其他逻辑从一些非易失性存储器读取数据并将其放入引导/向量空间,或者其他逻辑为其他处理器/计算机提供接口,以便下载到板/芯片中,然后释放复位。

RAM中的引导加载程序是辅助引导加载程序;在某种类型的ROM中,总会有一些代码包含加载辅助引导的主引导。通常认为ROM是芯片上的掩模ROM,它本身就是


通常,在Cortex-a等ARM应用处理器上,主引导程序将从NAND闪存或SD卡向RAM加载代码。ARM Cortex-M通常在任何情况下都直接从ROM运行代码。

芯片上有一小块ROM,带有硬编码的初始引导加载程序。这将引导CPU将下一阶段引导加载程序从引导设备(通过上/下拉CPU引脚配置)加载到片上SRAM并运行它。然后,第二阶段将初始化更多硬件,例如片外DRAM和引导设备的文件系统,并将第三个引导加载程序放入DRAM并运行它。在第三阶段之后,CPU应该能够加载操作系统内核并运行它。有时,在将整个第三级加载到DRAM之前,会有一个额外的2.5级将部分第三级压缩到片上SRAM中。您指的是哪种特定的ARM体系结构?它们的工作方式并不完全相同。此外,它通常是特定于供应商的-不同的ARM许可证持有者有不同的实现。@Clifford我提到过ARMv7@Alex:这可能仍然指的是ARMv7-M、ARMv7E-M、ARMv7-R或ARMv7-A。如果您只想要一个一般性的答案,这可能并不重要。