
原理
随着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 内核中去,从而极大提高了硬件驱动文件系统的灵活性和可靠性。
香港服务器首选树叶云,2H2G首月10元开通。
树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/197184.html<