C 内核如何探测驱动程序
当内核启动时(特别是在基于arm的设备上),它如何知道哪些设备连接到它以及要探测哪些驱动程序?请您参考内核源代码或给出一个例子。。。。感谢Linux内核将知道设备仅通过其设备驱动程序连接。基于Linux内核配置加载的设备驱动程序列表 在编译Linux内核期间启用驱动程序时,驱动程序的init部分将放在内核映像的特殊部分上 在()中的内核初始化过程中,静态设备驱动程序将被删除 Linux内核中init调用机制的参考文献C 内核如何探测驱动程序,c,linux,linux-kernel,operating-system,C,Linux,Linux Kernel,Operating System,当内核启动时(特别是在基于arm的设备上),它如何知道哪些设备连接到它以及要探测哪些驱动程序?请您参考内核源代码或给出一个例子。。。。感谢Linux内核将知道设备仅通过其设备驱动程序连接。基于Linux内核配置加载的设备驱动程序列表 在编译Linux内核期间启用驱动程序时,驱动程序的init部分将放在内核映像的特殊部分上 在()中的内核初始化过程中,静态设备驱动程序将被删除 Linux内核中init调用机制的参考文献 我不认为这个问题离题,所以很遗憾它被标记为离题,我无法添加完整答案。例如,您
我不认为这个问题离题,所以很遗憾它被标记为离题,我无法添加完整答案。例如,您可以在LDD3书籍的“Linux设备模型”一章的“总线、设备和驱动程序”一节中阅读。简单地说,Linux使用了
总线
的抽象(如PCI、USB等),可以将设备
连接到这些总线。每个设备
可能由一些定义了探测
回调的驱动程序
支持。总线将调用这些回调,直到一些驱动程序决定它将处理此设备。总线可能会使用一些提示(如设备id)询问特定的驱动程序,或者可以对所有驱动程序进行迭代。此外,一些设备,尤其是嵌入式系统(如ARM系统)上的设备,没有连接到任何可检测硬件的真实总线。这些设备在Linux中被组织在特殊的抽象总线中,称为“平台”。在过去,此总线的驱动程序注册是在内核代码中硬编码的,但现在它主要由名为设备树的特殊配置文件来描述,这些文件由引导加载程序提供给内核。描述仍然是静态的,但它独立于内核代码,因此您可以对一个内核映像进行多个配置(对于稍微不同的板)。