设备树和内核之间存在密切关系。设备树是一种描述硬件资源的数据结构,它通过启动加载器(bootloader)将硬件资源传递给内核。内核则根据设备树展开出Linux内核中的设备,如platform_device、i2c_client、spi_device等,这些设备使用的内存、IRQ等资源也会被传递给内核,内核将这些资源绑定给展开的相应设备。
在ARM内核版本3.x之后,引入了Flattened Device Tree(FDTS)。这是一种在PowerPC等其他体系架构中已经使用的技术,可以有效地减少在内核源码中对板级细节信息描述的冗余代码。
设备树在启动过程中是如何传递硬件资源的?
设备树在启动过程中通过bootloader传递硬件资源给内核,使得内核和硬件资源描述相对独立。
在具体实现上,bootloader会解析设备树,并将解析后的信息通过特定机制(如传递给内核参数或者使用某种通信协议)传递给内核。一旦内核接收到这些信息,它可以根据这些信息来配置硬件、加载驱动程序,并使系统能够正常运行。