0

最近在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

然后将内核映像与 dtb 一起正确位置和文件名,以便新的引导加载程序可以找到并加载它们。现在引导加载程序可以正常工作,并加载内核 dtb,但随后无法显示 hdmi 控制台和许多其他故障,并且根文件系统安装为只读状态。正如我上面提到的,现在内核已经加载,所以它应该可以处理所有事情,不会失败,它就像以前一样未更改的系统,是吗?但是随着引导加载程序的改变,它只是每一个不同的地方。我错过了一些要弄清楚的事情吗?

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

1 回答 1

-1

Neither Uboot nor the Kernel is a monolithic thing that runs in a vacuum. Uboot has a command line input of parameters that get passed to the Kernel. The Kernel also has various modules that it loads (often for device drivers). So you can change these parameters that are passed to change their behaviour. The boot.ini file, for example.

Just doing a random copy of some Uboot stuff from here and some Kernel stuff from there (whatever the build parameters were when you compiled it) is unlikely to work well. Different vendors and different releases (and even different builds) will end up with different things they expect from the environment.

In particular, various parameters are passed about how to handle HDMI, or if it ought to be turned on at all. So that is where you need to look.

于 2018-12-05T15:27:11.987 回答