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 内核中去,从而极大提高了硬件驱动文件系统的灵活性和可靠性。