2017-04-10 42 views
1

我很新的linux设备驱动程序,目前正在使用USB驱动程序。我需要将与USB相关的驱动程序作为可加载模块,并根据意愿删除/重新插入它们。但是我面临着一些问题。我正在使用基于Qualcomm Snapdragon 820处理器(APQ8096)的Dragonboard 820。重新插入USB驱动程序崩溃

的Linux内核版本:20年3月18日

的Android版本:6.0

插入驱动程序的工作,第一time.Here是插入的顺序。
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-高原-hcd.ko

insmod的PHY-MSM-ssusb-qmp.ko
insmod的PHY-MSM-qusb.ko

insmod的USB-storage.ko

“的lsmod '给出以下输出;

[email protected]:/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 insertion.However后效果很好,而试图删除驱动程序(以相反的顺序),三位车手-phy_msm_qusb,phy_msm_ssusb_qmp和xhci_hcd不会被删除,其他司机的重新插入崩溃(同时重新插入xhci_plat_hcd)。如果我强制删除这些驱动程序,它会非常不稳定,并会在删除剩余的驱动程序或重新插入时崩溃。所以,如果有人对此有任何意见 - 这是非常感谢。

回答

0

xhci_hcd永久不能与modprobe

Why is this kernel module marked at permanent on 2.6.39

被卸载,也许如果PHY代表物理和手段使用最低级别的固件它与phy_msm_ssusb_qmpphy_msm_qusb相似由USB主机控制芯片

这三个模块是这是不能改变的最低水平。也许问题在于其他模块由于依赖性而被重新插入的顺序。 '使用'在您的帖子输出lsmod说,即该ehci_hcd所使用的ehci_pci 但是每个加载模块所使用的系统上(未知)的过程,这就是为什么你不能卸载三个模块了点(由内核进程锁定)

例如在上面的示例输出中,iptable_filter被一个 (未知)Linux进程使用,而ip_tables模块被一个内核使用 模块调用iptable_filter。 来源:http://xmodulo.com/how-to-check-kernel-module-dependencies-on-linux.html

也许你不得不接受,一旦加载他们保持和秩序的变化重新插入的顺序根据依赖关系

另一种可能性是,他们是越野车,看到的情况Why is this kernel module marked at permanent on 2.6.39

http://pritambankar.blogspot.de/2012/10/solution-to-problem-of-module-getting.html

为永久标记模块(重新编译使用-DCC_HAVE_ASM_GOTO标志)

+0

感谢您的答复拉尔夫的溶液。 'xhci_hcd'显示为永久性的,因为它缺少退出功能。如果添加一个,则不再显示为永久性,您可以将其删除。关于另外两个,你说得对,他们正在被一些未知的进程使用。我被告知这些驱动程序并不打算作为可加载模块编译,因此放弃了这种方法。 – Jay

相关问题