-2
如何知道哪些设备连接到它以及要探测哪些驱动程序?你可以参考内核源代码或举一个例子....谢谢内核启动时(特别是在基于ARM的设备上)内核探测驱动程序
如何知道哪些设备连接到它以及要探测哪些驱动程序?你可以参考内核源代码或举一个例子....谢谢内核启动时(特别是在基于ARM的设备上)内核探测驱动程序
Linux内核将知道该设备只通过它的设备驱动程序连接。基于Linux内核配置加载的设备驱动程序列表。
在编译Linux内核时启用驱动程序时,驱动程序的init部分将被放置在内核映像的特殊部分。
在内核初始化过程start_kernel()中,静态设备驱动程序将为loaded one by one。
有关init调用机制参考Linux内核
http://linuxgazette.net/157/amurray.html
http://lwn.net/Articles/141730/
我不认为这个问题是题外话,所以它也被标记为这样的耻辱,我不能添加完整的答案。例如,您可以在LDD3手册的“Linux设备模型”一章的“公共汽车,设备和驱动程序”一节中阅读它。简而言之,Linux使用“设备”可以连接到的“Buses”(如PCI,USB等)的抽象概念。每个'Device'可以由一些'Drivers'支持,这些'Drivers'具有定义的'probe'回调。巴士将调用这些回调,直到某个'Driver'决定它将处理该设备。总线可能会使用一些提示(如设备ID)来询问特定的驱动程序或者可以遍历所有驱动程序 –
还有一些设备,尤其是嵌入式系统(如ARM系统)的某些设备未连接到任何可检测硬件的实际总线。这些设备被组织在Linux的特殊抽象总线中,称为“平台”。过去,这种总线的驱动程序注册在内核代码中进行了硬编码,但现在主要由称为'设备树'的特殊配置文件来描述,该文件由引导加载程序提供给内核。描述仍然是静态的,但它独立于内核代码,因此对于一个内核映像您可以有多种配置(对于稍微不同的主板)。 –