U-Boot等不实现Open Firmware API的Bootloader应该以平面设备树的二进制形式传递给内核 - LinuxFDTBlob
为什么DTS文件也存在于内核中?这不是多余的吗?
例如,U-boot源代码有以下文件:
arch/arm/dts/tegra124-jetson-tk1.dts
此文件也可以在Linux源代码下找到:
arch/arm/boot/dts/tegra124-jetson-tk1.dts
虽然内核版本是U-boot版本的4倍,但我想知道这种冗余背后的原因。我认为维护人员和开发人员都很难维护和使用
答案 0 :(得分:5)
以下是Artlessnoise评论的答案:
u-boot源使用u-boot DTB,而Linux在内核启动时使用Linux DTB。 u-boot版本是一个精简版本,因为没有多少外围设备需要启动。你总是使用Linux的内核版本,即u-boot将这个版本传递给Linux(以及加载bzImage或vmlinux)。
许多u-boot驱动程序几乎与Linux相同。显然,你可以为所有u-boot驱动程序创建相同的参数;大多数是Linux驱动程序的副本,其中断由轮询例程替换。使用相同的开放固件接口可以使它们更接近匹配。
答案 1 :(得分:3)
由于上述原因,复制DTS副本是有意义的。
答案 2 :(得分:0)
Uboot有单独的DTS文件,可以在uboot defconfig中设置为CONFIG_DEFAULT_DEVICE_TREE。此DTS文件是使用uboot映像构建的,这意味着它是uboot映像的一部分。 uboot DTS文件的语法与Linux内核DTS文件相同。 Linux DTS文件被编译成DTB文件并单独用于解析Linux内核的硬件配置。 Linux DTB映像与Linux内核映像分开刷新。