我想在设备终端中加载和卸载linux驱动程序,我有两个选项,但我不想做第一个
-
将驱动程序构建为一个模块CONFIG_DRIVER=m我可以使用rmmod和modprobe来卸载和加载设备驱动程序。
-
将设备驱动程序构建到内核中CONFIG_DRIVER=Y
我想遵循第二个选项,但我不知道如何卸载和加载设备驱动程序,请开源社区在这里帮助我!
就这么简单。您找到了要解除绑定的设备和驱动程序。例如,在我的Intel Minownboard(v1(上,我有PCH UDC控制器(PCI设备(:
% lspci -nk
...
02:02.4 0c03: 8086:8808 (rev 02)
Subsystem: 1cc8:0001
Kernel driver in use: pch_udc
现在我知道了必要的部分:
- 设备所在的总线:PCI
- 设备名称:0000:02:02.4(请注意,
lspci
提供了减少的PCI地址,即没有域或i.o.w.BDF,而驱动程序需要domain:BDF( - 驱动程序名称:pch_udc
总之,我们可以解除设备绑定:
% echo 0000:02:02.4 > /sys/bus/pci/drivers/pch_udc/unbind
[ 3042.531872] configfs-gadget 0000:02:02.4: unregistering UDC driver [g1]
[ 3042.540979] udc 0000:02:02.4: releasing '0000:02:02.4'
你可以再绑一次。简单使用绑定同一文件夹中的节点。
这个功能出现在15年前,下面是关于LWN的文章来解释它