在研究如何在板上启动 Android 时,我了解到 MLO(X-loader)、U-Boot 是uImage
在板上启动 Android 所必需的。
但我想知道,当我了解这一点时,IMX53quickstart 板不需要 MLO 来在其上启动 Android。
- 怎么可能呢?主板如何在没有 MLO 的情况下启动?
- 这块板子有什么特别之处吗?那是什么?
- 如果是这样,为什么其他主板不能具有此功能?
- 我们可以在所有主板上实现这个功能吗?
答案1
系统“需要”启动的是特定内存地址处的可执行代码。
如果你把内核放在正确的位置,它就会启动(这就是我们过去的做法——没有启动加载程序)。这些天我们在那里放了一个引导加载程序。引导加载程序只是可执行代码,它比硬件更智能(但不是很多)关于在哪里找到其他可执行代码。
用非常简单的术语解释一下,硬件加电后将开始执行固件中的程序。这因硬件而异,但在 PC 上它曾经是 BIOS。今天可能是 EFI。该程序,无论它是什么,都知道如何查看特定地址的块设备。在那里找到的块被加载到 RAM 中然后执行。硬件对于它可能是什么非常不智能,因此实际上没有任何要求它是特定的东西,除了它是处理器*的正确机器代码之外。
在你的情况下,唯一的事情必需的启动的是uImage(内核映像)。 U-Boot 只是一种查找 uImage 的方法。 MLO 大概只是寻找 U-Boot 的一种方式。理论上,如果您将 uImage 放置在正确的块中,它将直接启动。
* 顺便说一句,变砖是指处理器无法正确执行这些块中发生的任何内容。