我正在尝试了解 ARM Linux 启动过程。

这些是我理解的:

  • 在任何处理器中按下复位按钮时,它会跳转到复位向量或地址,在 ARM 的情况下,它是 0x00 或 0xFFFF0000。
  • 此位置包含启动代码或 ROM 代码或引导 ROM 代码

  • 我的问题是这个 Boot ROM Code 如何获取 u-boot 第一条指令的地址?

    最佳答案

    这取决于 SoC,用于启动的方案会因一个 SoC 到另一个而不同。它通常记录在 SoC 的引用手册中,它确实描述了特定于该 SoC 的 u-boot 端口应遵循的各种约定(从哪里读取 u-boot,特定地址)以便 ROM 中的代码能够加载 u-boot,并最终将控制权转移到 u-boot。
    ROM 中的此代码可以执行以下操作: - 如果引脚 x 为 0,则从 eMMC 的第一个扇区读取 64KiB 到片上静态 RAM,然后将控制转移到位于 OCRAM 偏移 256 处的代码,例如。 - 如果引脚 x 为 1,将 UART 配置为 19200 波特,8 位奇偶校验,无停止位,尝试使用 X-MODEM 协议(protocol)从串行端口读取 64KiB 到 OCRAM,然后将控制转移到位于偏移 256 处的代码OCRAM 的代码,通常称为二级程序加载器 (SPL),然后负责配置 SDRAM Controller ,然后在 SDRAM 的开始时将 u-boot 的非 SPL 部分读入,然后跳转到 SDRAM 中的特定地址。给定 SoC 的 SPL 应该足够小以适合 SoC On Chip RAM。在这种情况下,ROM 代码将是主引导加载程序。

    以 TI AM335x Cortex-A8 SoC 为例,Technical Reference Manual 的第 26.1.6 节,更具体地说,图 26-10 解释了启动过程。一些输入引脚可能被 ROM 代码用来指导引导过程——参见表 26-7 中的 SYSBOOT 配置引脚。有关更多 u-boot 特定的、与 AM335x 相关的信息,请参阅 The AM335x U-Boot User's Guide

    关于linux - ROM Code如何找到u-boot启动指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48926788/

    10-10 17:48