uboot如何加载内核并继续继续?

时间:2018-01-04 16:41:40

标签: linux-kernel embedded-linux u-boot hdmi orange-pi

最近我在OrangePi-win主板上为soc建立了一个系统。我使用每个官方站点的原始uboot和内核源代码,以及可用的ATF代码。 这些都很好,我可以使用它们来启动电路板:但是hdmi上的图形根本不起作用,而调试串口工作正常。

以下是我的问题:

  1. 据我所知,uboot启动后,它会加载内核来处理整个板,当传递正确的设备树信息和其他需要内核参数时。我可以说uboot只需要一个简单的设备树来构建和启动板,而内核将需要完整配置的设备树信息吗?

  2. uboot加载内核后,内核将处理所有内容,不再处理uboot了,是不是?如果这是正确的,当我让uboot加载内核和刚从工作井系统复制的设备树时:与它们的/ lib / modules一起,为什么内核会遇到很多错误?请注意,我已修改原始工作系统,只允许它更改引导加载程序部分。内核,rootfs没有任何改变。也就是说,我改变的只是 做命令:

    dd if = u-boot-sunxi-with-spl.bin of = / dev / mmcblk0 bs = 8k seek = 1

  3. 然后将内核映像与dtb放在一起以更正位置和文件名,以便新的引导加载程序可以找到并加载它们。 现在引导加载程序可以工作,并加载内核,dtb,但后来只是无法显示hdmi控制台和许多其他故障,并且根文件系统挂载为只读状态。 正如我上面提到的,现在内核已经被加载了,所以它应该处理所有内容,什么都不应该失败,它就像以前一样改变系统,是吗?但它与改变的引导加载程序完全不同。我错过了想弄清楚的事情吗?

    1. 修改后的系统无法初始化hdmi输出,屏幕上显示许多垃圾,或者只是空白屏幕。请注意,内核在使用另一个引导加载程序时效果很好,应该在哪里进行更改以使其再次正常工作?

1 个答案:

答案 0 :(得分:-1)

Uboot和内核都不是在真空中运行的整体组件。 Uboot具有命令行输入的参数,这些参数将传递给内核。内核还具有加载的各种模块(通常用于设备驱动程序)。因此,您可以更改传递来更改其行为的这些参数。例如boot.ini文件。

仅从此处随机复制一些Uboot内容,从此处随机复制一些Kernel内容(无论编译时的构建参数是什么)都不太可能奏效。不同的供应商和不同的发行版(甚至不同的版本)最终会带来他们期望从环境中获得的不同东西。

尤其是,传递了有关如何处理HDMI或是否应该完全打开HDMI的各种参数。这就是您需要查看的地方。