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