Linux自动驱动注册实现(驱动注册linux)

原理

随着Linux 内核的发展,越来越多的外设被支持,而Linux系统还是基于模块化实现的,让用户可以根据自己的需要,调整软硬件组成,减少不必要的硬件依赖,来实现想要的系统功能。由此,Linux自动驱动注册可以在基本系统初始化过程中发挥重要作用。

它是一种自动载入软件驱动模块的策略,可以在Linux 运行时,将设备驱动软件自动载入内核环境中,无需人工的介入与操作。它的实现,关键要解决的是:发现设备,查找设备驱动,绑定设备与驱动,完成软件驱动自动载入等几个核心问题。

其实,这么自动驱动注册的实现原理,就是通过读取系统内存硬件资源信息,加载硬件数据,将设备资源描述符发送到系统总线,开始选取总线上的合适硬件数据,然后关联设备id与硬件驱动,继而注册内核中即可用的设备节点,最后,根据类型的驱动模块,查询有效的内核驱动,最后从特定的源头载入驱动,将其注册并加载到 Linux 内核中去。比如下面的代码片段:

int kernel_init_devices (void)
{
bus_type_register(&platform_bus_type);
device_register(&root_platform_device);
driver_register (&pbus_driver);
// 遍历所有的 platform_driver
for_each_platform_driver(drv){
if(!drv->probe)
continue;
if(!platform_bus_type.match)
continue;
// 注册设备(driver & devices)
drv->probe(drv->pd);
}
...//其他相关操作
}

最终,Linux 提供的自动驱动注册技术,将软件驱动模块成功载入Linux 内核中去,从而极大提高了硬件驱动文件系统的灵活性和可靠性。


数据运维技术 » Linux自动驱动注册实现(驱动注册linux)