【发布时间】:2017-06-06 14:46:41
【问题描述】:
据我所知,CPU 可以直接访问 RAM。设备 RAM 在启动时为空,CPU 不知道从何处将引导加载程序加载到 RAM 中以执行它。即使它也无能为力,因为我认为调用堆栈也应该是空的。 但是如何将引导加载程序复制到 RAM 中以供进一步执行?
这应该发生在智能手机等嵌入式设备上。据我所知,在 x86 PC 上,BIOS 负责将 MBR 部分从磁盘加载到 RAM。
【问题讨论】:
-
芯片上有一小块带有硬编码初始引导加载程序的 ROM。这将指示 CPU 将下一阶段的引导加载程序从引导设备(通过上拉/下拉 CPU 引脚配置)加载到片上 SRAM 并运行它。然后第二阶段将初始化更多硬件,例如引导设备的片外 DRAM 和文件系统,并将第三个引导加载程序放入 DRAM 并运行它。在第三阶段之后,CPU 应该能够加载操作系统内核并运行它。有时,在将整个第 3 级加载到 DRAM 之前,需要额外的 2.5 级将部分第 3 级压缩到片上 SRAM 中。
-
您指的是哪个特定的 ARM 架构?它们并非都以完全相同的方式工作。此外,它通常是特定于供应商的 - 不同的 ARM 许可证持有者有不同的实现。
-
@Clifford 我提到了 ARMv7
-
@Alex : 那可能仍然是指 ARMv7-M、ARMv7E-M、ARMv7-R 或 ARMv7-A。如果您只想要一个一般性的答案,也许没关系。
标签: arm boot bootloader