我对 linux 设备驱动程序非常陌生,目前正在研究 USB 驱动程序。我需要将与 USB 相关的驱动程序作为可加载模块并删除/重新插入它们。但是我遇到了一些问题。我正在开发基于 Qualcomm Snapdragon 820 处理器(APQ8096)的 Dragonboard 820。
Linux 内核版本:3.18.20
安卓版本:6.0
插入驱动程序第一次工作。这是插入的顺序。
insmod dbm.ko
insmod dbm-1_4.ko
insmod dbm-1_5.ko
insmod dwc3.ko
insmod dwc3-msm.ko
insmod dwc3-pci.ko
insmod ehci-hcd.ko
insmod ehci-pci.ko
insmod xhci-hcd.ko
insmod xhci-pci.ko
insmod xhci-plat-hcd.ko
insmod phy-msm-ssusb-qmp.ko
insmod phy-msm-qusb.ko
insmod usb-storage.ko
'lsmod' 给出以下输出;
root@msm8996:/system/lib/modules # lsmod
Module Size Used by
usb_storage 55391 0
phy_msm_qusb 18820 4
phy_msm_ssusb_qmp 17033 2
xhci_plat_hcd 6509 0
xhci_pci 4916 0
xhci_hcd 158558 2 xhci_plat_hcd,xhci_pci,[permanent]
ehci_pci 4594 0
ehci_hcd 69125 1 ehci_pci
dwc3_pci 2890 0
dwc3_msm 50671 0
dwc3 237561 1 dwc3_msm
dbm_1_5 6526 0
dbm_1_4 6197 0
dbm 2119 3 dwc3_msm,dbm_1_5,dbm_1_4
插入后 USB 工作良好。但是,在尝试删除驱动程序时(以相反的顺序),三个驱动程序 -phy_msm_qusb、phy_msm_ssusb_qmp 和 xhci_hcd 没有被删除,并且重新插入其他驱动程序崩溃(重新插入 xhci_plat_hcd 时)。如果我强制删除这些驱动程序,它会非常不稳定,并且在删除剩余驱动程序或重新插入时崩溃。因此,如果有人对此有任何意见 - 非常感谢。