我有一块板子,上面闪着工作的 u-boot。现在我想为引导加载程序添加一些功能(用于初始化硬件的某些部分),但是如果我犯了一些错误,开发过程可能会使电路板变砖。是否可以进行如下所述的多阶段引导: 1) 启动 u-boot 2) u-boot 将加载我的二进制文件,其中添加了初始化硬件的功能。3) 我的二进制文件将加载并启动 linux 内核。
如果可能的话,一些指针将不胜感激。谢谢。
我有一块板子,上面闪着工作的 u-boot。现在我想为引导加载程序添加一些功能(用于初始化硬件的某些部分),但是如果我犯了一些错误,开发过程可能会使电路板变砖。是否可以进行如下所述的多阶段引导: 1) 启动 u-boot 2) u-boot 将加载我的二进制文件,其中添加了初始化硬件的功能。3) 我的二进制文件将加载并启动 linux 内核。
如果可能的话,一些指针将不胜感激。谢谢。
是的。多阶段引导通常用于 ARM SoC。
以 TI OMAP 器件为例,使用了两个引导加载程序实例。第一个是在没有任何期望初始化 SDRAM 的情况下运行的,它被复制到 48kB 的嵌入式 SRAM 中并从中执行。必然地,除了一些基本的硬件初始化(例如 SDRAM,启用某些功能单元的电源,启用时钟)然后加载第二阶段引导加载程序之外,它并没有做太多事情。即使这是紧身衣。
u-Boot(以及Barebox和可能的其他引导加载程序)源代码树具有构建此设置的构建选项,我相信您可以颠覆。
您最好修改现有的引导加载程序。我有很好的使用Barebox的经验。
在 OMAP 的情况下,第一个引导加载程序通常称为MLO
- 这可能有助于查找资源。