Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 内核如何探测驱动程序_C_Linux_Linux Kernel_Operating System - Fatal编程技术网

C 内核如何探测驱动程序

C 内核如何探测驱动程序,c,linux,linux-kernel,operating-system,C,Linux,Linux Kernel,Operating System,当内核启动时(特别是在基于arm的设备上),它如何知道哪些设备连接到它以及要探测哪些驱动程序?请您参考内核源代码或给出一个例子。。。。感谢Linux内核将知道设备仅通过其设备驱动程序连接。基于Linux内核配置加载的设备驱动程序列表 在编译Linux内核期间启用驱动程序时,驱动程序的init部分将放在内核映像的特殊部分上 在()中的内核初始化过程中,静态设备驱动程序将被删除 Linux内核中init调用机制的参考文献 我不认为这个问题离题,所以很遗憾它被标记为离题,我无法添加完整答案。例如,您

当内核启动时(特别是在基于arm的设备上),它如何知道哪些设备连接到它以及要探测哪些驱动程序?请您参考内核源代码或给出一个例子。。。。感谢

Linux内核将知道设备仅通过其设备驱动程序连接。基于Linux内核配置加载的设备驱动程序列表

在编译Linux内核期间启用驱动程序时,驱动程序的init部分将放在内核映像的特殊部分上

在()中的内核初始化过程中,静态设备驱动程序将被删除

Linux内核中init调用机制的参考文献



我不认为这个问题离题,所以很遗憾它被标记为离题,我无法添加完整答案。例如,您可以在LDD3书籍的“Linux设备模型”一章的“总线、设备和驱动程序”一节中阅读。简单地说,Linux使用了
总线
的抽象(如PCI、USB等),可以将
设备
连接到这些总线。每个
设备
可能由一些定义了
探测
回调的
驱动程序
支持。总线将调用这些回调,直到一些
驱动程序决定它将处理此设备。总线可能会使用一些提示(如设备id)询问特定的
驱动程序,或者可以对所有驱动程序进行迭代。此外,一些设备,尤其是嵌入式系统(如ARM系统)上的设备,没有连接到任何可检测硬件的真实总线。这些设备在Linux中被组织在特殊的抽象总线中,称为“平台”。在过去,此总线的驱动程序注册是在内核代码中硬编码的,但现在它主要由名为
设备树的特殊配置文件来描述,这些文件由引导加载程序提供给内核。描述仍然是静态的,但它独立于内核代码,因此您可以对一个内核映像进行多个配置(对于稍微不同的板)。