Linux kernel uboot如何在不使用DTS的情况下将硬件信息传递给内核

Linux kernel uboot如何在不使用DTS的情况下将硬件信息传递给内核,linux-kernel,arm,embedded-linux,boot,u-boot,Linux Kernel,Arm,Embedded Linux,Boot,U Boot,我是嵌入式Linux开发新手。我必须将uboot和定制Linux发行版移植到一个新的基于ARM的板上 我们正在使用的uboot(2009.08)没有Arch和DTS文件夹。我想这是一个旧版本,它不使用DTS将硬件信息传递给内核(V3.0)。我已经读了很多关于DTS的书,但在互联网上,关于这种(过时的?)将硬件信息从uboot传递到我们正在使用的内核的方法的信息还不够。互联网告诉我,在uboot和内核源代码中都有用于此任务的C文件需要同步,但有人能告诉我这个方向吗?另外,如果我的假设是错误的,请纠

我是嵌入式Linux开发新手。我必须将uboot和定制Linux发行版移植到一个新的基于ARM的板上

我们正在使用的uboot(2009.08)没有Arch和DTS文件夹。我想这是一个旧版本,它不使用DTS将硬件信息传递给内核(V3.0)。我已经读了很多关于DTS的书,但在互联网上,关于这种(过时的?)将硬件信息从uboot传递到我们正在使用的内核的方法的信息还不够。互联网告诉我,在uboot和内核源代码中都有用于此任务的C文件需要同步,但有人能告诉我这个方向吗?另外,如果我的假设是错误的,请纠正我,如果需要,请询问更多信息。

在U-Boot和Linux ARM内核之间传递数据的(旧)方法称为ATAG内存列表。使用此数据列表将可用内存区域、机器类型和板信息等信息从U-Boot传递到Linux ARM内核

在U-Boot中,ATAG内置于
lib_arm/armlinux.c
(1.1.5)或
lib_arm/bootm.c
(2009.08)或
arch/arm/lib/bootm.c
(2015.04),需要配置选项配置设置内存标签和突出的配置xxx_标签s.
然后由Linux在
arch/arm/kernel/setup.c
中处理ATAG

有关文件,请参见或的第8节

附录

另请参见本演示文稿的第4张幻灯片,该幻灯片介绍了在U-Boot和Linux ARM内核之间传递数据的(旧)方法称为ATAG内存列表。使用此数据列表将可用内存区域、机器类型和板信息等信息从U-Boot传递到Linux ARM内核

在U-Boot中,ATAG内置于
lib_arm/armlinux.c
(1.1.5)或
lib_arm/bootm.c
(2009.08)或
arch/arm/lib/bootm.c
(2015.04),需要配置选项配置设置内存标签和突出的配置xxx_标签s.
然后由Linux在
arch/arm/kernel/setup.c
中处理ATAG

有关文件,请参见或的第8节

附录


另请参见本演示文稿的第4张幻灯片,内容是关于

查找特定于电路板的文件它可能类似于linux/arch/arm/mach xxx/board xx.c或搜索机器\u从arch/arm/@Sasi下开始看起来这就是我一直在寻找的地方。如果您可以将其作为答案和文档指针发布,以便我了解发生了什么以及如何修改它(或为使用设备树结构的新板生成它),我可以将其视为正确的answer@Hamzahfrq例如我没有任何文件。我在看代码。就这样。大多数ARM代码都是这样定义的。您可以选择任意一个板代码并修改它以满足您的要求。查找特定于板的文件,可能类似于linux/arch/arm/mach xxx/board xx.c,或者在arch/arm/@Sasi下搜索MACHINE_START,看起来这就是我一直在寻找的地方。如果您可以将其作为答案和文档指针发布,以便我了解发生了什么以及如何修改它(或为使用设备树结构的新板生成它),我可以将其视为正确的answer@Hamzahfrq例如我没有任何文件。我在看代码。就这样。大多数ARM代码都是这样定义的。您可以使用任意一个单板代码并修改它以满足您的要求。我找不到lib_arm/armlinix文件。参数可在
include/asm arm/setup.h
lib_arm/bootm.c
中找到。我错过什么了吗?其次,我在这些ATAG中找不到有关硬件外围设备的信息。内核如何知道它有哪些设备需要加载相关的驱动程序?对不起,我提供了U-Boot旧版本的文件名。您找到了正确的代码,bootm.c是2009.08的源模块。电路板配置与代码交织在一起(因此推送设备树)。早期的电路板初始化由来自arch/arm/mach xxx的电路板文件执行,并且将具有在构建时定义的设备的硬编码属性结构。引导和安装rootfs所需的所有设备驱动程序都必须与kernelI静态链接,因为我找不到lib_arm/armlinix文件。参数可在
include/asm arm/setup.h
lib_arm/bootm.c
中找到。我错过什么了吗?其次,我在这些ATAG中找不到有关硬件外围设备的信息。内核如何知道它有哪些设备需要加载相关的驱动程序?对不起,我提供了U-Boot旧版本的文件名。您找到了正确的代码,bootm.c是2009.08的源模块。电路板配置与代码交织在一起(因此推送设备树)。早期的电路板初始化由来自arch/arm/mach xxx的电路板文件执行,并且将具有在构建时定义的设备的硬编码属性结构。引导和装载rootfs所需的所有设备驱动程序都必须与内核静态链接