【问题标题】:multi stage booting多阶段引导
【发布时间】:2013-04-08 18:20:53
【问题描述】:

我有一块板子,上面有工作的 u-boot。现在我想为引导加载程序添加一些功能(用于初始化硬件的某些部分),但是如果我犯了一些错误,开发过程可能会使电路板变砖。 是否可以进行如下所述的多阶段引导: 1)启动u-boot 2) u-boot 将加载我的二进制文件,它增加了初始化硬件的功能。 3) 我的二进制文件将加载并启动 linux-kernel。

如果可能的话,我们将不胜感激。谢谢。

【问题讨论】:

  • 工作量太大!您已经创建了一个 XY 问题。使用go 命令加载“子程序”可能更简单,并继续使用U-Boot 加载内核。 stackoverflow.com/questions/15340089/… 最终你应该将这个新的板初始化代码合并到 U-Boot 中。
  • 谢谢!我想我需要使用“go”命令。
  • 您可能会将 U-Boot go 命令用于下一阶段的引导加载程序或子程序。

标签: linux-kernel arm u-boot


【解决方案1】:

是的。多阶段启动通常用于 ARM SoC。

以 TI OMAP 器件为例,使用了两个引导加载程序实例。第一个运行没有任何期望 SDRAM 被初始化,并被复制到 并从 48kB 的嵌入式 SRAM 执行。必然地,除了一些基本的硬件初始化(例如 SDRAM,为某些功能单元启用电源,启用时钟)然后加载第二阶段引导加载程序之外,它并没有做太多事情。即使这是紧身衣。

u-Boot(还有Barebox,可能还有其他引导加载程序)源代码树有构建选项来构建这个设置,我相信你可以颠覆它。

您最好修改现有的引导加载程序。我有很好的使用Barebox 的经验。

在 OMAP 的情况下,第一个引导加载程序通常称为 MLO - 这可能有助于查找资源。

【讨论】:

  • 感谢您的回答。我现在没有用于刷新引导加载程序的工具。所以目前唯一的方法是开发另一个二进制文件,它将在 u-boot 之后作为引导加载程序的另一个阶段。
  • 第一次刷引导加载程序有点伤脑筋 - 然而,大多数系统都有许多主要的引导选项,所以你通常有一张越狱免费卡而不是而不是一块砖板。
猜你喜欢
  • 2011-11-25
  • 2019-08-24
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
相关资源
最近更新 更多