【问题标题】:How to choose one version of the drivers to be loaded on boot when multiple drivers for the same hardware exist?当同一硬件存在多个驱动程序时,如何选择一个版本的驱动程序在启动时加载?
【发布时间】:2015-06-24 08:44:49
【问题描述】:

我正在使用嵌入式 linux。

有两个 USB 小工具驱动程序内置为 LKMg_ether.ko and g_file_storage.ko

我做了depmod,然后在modprobe -l 中,两个驱动程序都出现在列表中。

kernel/drivers/usb/gadget/g_ether.ko
kernel/drivers/usb/gadget/g_file_storage.ko

问题是,内核在启动时不会加载其中任何一个。

目前我的解决方案是将启动脚本添加到/etc/init.d etc/rcX.d 以强制在启动时将g_ether.ko 作为默认驱动程序加载。

还有其他(更好的)方法可以让g_ether.ko成为默认驱动程序吗?

一个可能的解决方案是,我将g_ether.ko 设为静态驱动,并将g_file_storage.ko 设为LKM,但我不知道如何关闭静态驱动以释放硬件,以便可以加载另一个LKM 驱动.

有什么建议吗?

【问题讨论】:

    标签: linux-kernel linux-device-driver embedded-linux kernel-module


    【解决方案1】:

    将 USB 外围控制器用作以太网或存储设备是用户的选择。所以自动客户端驱动加载没有相关的硬件事件。

    但是有一种方法可以通过 sysfs 在用户空间绑定/取消绑定驱动程序。看这个:https://lwn.net/Articles/143397/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 2019-02-27
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      相关资源
      最近更新 更多