我是Linux Kernel的初学者
据我所知,在旧版本的内核中有一个特定于板的文件,其中所有设备都已注册(通过使用某些API,如platform_get_register
等)。
在较新版本的内核中,设备所需的信息将通过设备树传递
我的问题是内核如何从设备树中获取驱动程序的信息?
设备如何通过设备树在内核中注册?
答案 0 :(得分:4)
如果您指的是OpenFirmware设备树,它们将被打包成特殊格式(dtb图像)并由引导加载程序与内核映像一起放入RAM中。 Bootloader然后调用内核入口点,将RAM中dtb映像的地址作为参数之一传递。
位于<kernel>/drivers/of
子目录中的内核子系统将遍历树,对于支持的每个设备条目,它将尝试通过device_add()
和朋友创建所需的设备(在Linux中创建设备的常用过程) )。如果驱动程序子系统可以找到合适的驱动程序,则该驱动程序的*_probe()
回调将能够从(可能是子类)device
对象获取OF设备条目中找到的参数传递给它。