linux内核如何从Device树中获取数据?

时间:2014-11-28 11:31:48

标签: linux-kernel linux-device-driver device-tree

我是Linux Kernel的初学者 据我所知,在旧版本的内核中有一个特定于板的文件,其中所有设备都已注册(通过使用某些API,如platform_get_register等)。
在较新版本的内核中,设备所需的信息将通过设备树传递 我的问题是内核如何从设备树中获取驱动程序的信息? 设备如何通过设备树在内核中注册?

1 个答案:

答案 0 :(得分:4)

如果您指的是OpenFirmware设备树,它们将被打包成特殊格式(dtb图像)并由引导加载程序与内核映像一起放入RAM中。 Bootloader然后调用内核入口点,将RAM中dtb映像的地址作为参数之一传递。

位于<kernel>/drivers/of子目录中的内核子系统将遍历树,对于支持的每个设备条目,它将尝试通过device_add()和朋友创建所需的设备(在Linux中创建设备的常用过程) )。如果驱动程序子系统可以找到合适的驱动程序,则该驱动程序的*_probe()回调将能够从(可能是子类)device对象获取OF设备条目中找到的参数传递给它。