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