Arm 需要了解引导加载程序顺序的帮助吗

Arm 需要了解引导加载程序顺序的帮助吗,arm,bootloader,u-boot,Arm,Bootloader,U Boot,我正在经历第1阶段的引导加载程序。对此我有一些疑问。首先,复位后的引导顺序如下: 将CPU设置为监控模式 使一级指令无效,数据缓存和转换查找放在一边 缓冲区(紧密耦合的内存,如果有) 禁用MMU和缓存 设置堆栈大小 启用指令和数据缓存以及MMU 遵循Nand闪存控制器的初始时钟配置和设置时钟 我的问题是 我们已经在使一级指令/数据缓存和TLB(它是MMU的一部分)失效,但为什么我们需要再次禁用MMU和缓存 请帮助理解它。此外,请提供任何链接,使了解引导顺序更好 非常感谢您的支持。MMU将在启动时

我正在经历第1阶段的引导加载程序。对此我有一些疑问。首先,复位后的引导顺序如下:

  • 将CPU设置为监控模式
  • 使一级指令无效,数据缓存和转换查找放在一边 缓冲区(紧密耦合的内存,如果有)
  • 禁用MMU和缓存
  • 设置堆栈大小
  • 启用指令和数据缓存以及MMU
  • 遵循Nand闪存控制器的初始时钟配置和设置时钟

    我的问题是

  • 我们已经在使一级指令/数据缓存和TLB(它是MMU的一部分)失效,但为什么我们需要再次禁用MMU和缓存
  • 请帮助理解它。此外,请提供任何链接,使了解引导顺序更好


    非常感谢您的支持。

    MMU将在启动时禁用,因此步骤3一开始看起来是多余的。基于有限的信息,我将尝试证明逻辑:

    在主引导加载程序执行结束时,代码将跳转到辅助引导加载程序。如果未提供辅助引导加载程序,或者在设置新的异常向量之前,辅助引导加载程序弄乱了某些东西;如果指令的效果是mov pc,则会出现#0(跳转到空函数指针);然后,主引导加载程序将从步骤1重新启动

    缓存可能已损坏,MMU可能已打开,目前尚无任何猜测。因此,如果引导加载程序现在必须开始清理,它将需要执行步骤1-3,以确保环境干净才能执行。这看起来是一个预防措施,而不是必要的措施


    引导加载程序在功能和体系结构上有很大不同。没有真正的标准化方法来做到这一点。因此,唯一的实际选择是阅读代码并提出问题。

    哪个阶段1引导加载程序?CPU本身在MMU和缓存关闭时引导。