2017-04-10 1 views
1

私はLinuxのデバイスドライバにはとても新しく、現在現在はUSBドライバで作業中です。私はロード可能なモジュールとしてUSB関連のドライバを作成し、それらを削除/再挿入する必要があります。しかし、私は特定の問題に直面しています。私は、クアルコムのSnapdragon 820プロセッサ(APQ8096)に基づいてDragonboard 820に取り組んでいます。再挿入時にUSBドライバがクラッシュする

Linuxカーネルのバージョン:3.18.20

Androidのバージョン:ドライバの6.0

挿入は最初time.Hereは挿入の順序で動作します。

insmodのdwc3-msm.ko
insmodのdwc3-pci.ko dwc3.ko
insmodののDBM-1_4.ko
insmodののDBM-1_5.ko
insmodのdbm.ko insmodの

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 'は次のように出力します。 、(逆の順序で)ドライバを削除しようとしているときに

[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後によく働く3人のドライバー-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ホストコントローラチップによって

これらの3つのモジュールは変更できない最低レベルです。おそらく問題は、依存関係のために他のモジュールが再挿入されるという順序である。投稿内のlsmod出力の ''の列には、そのehci_hcdは、例えば

(カーネルプロセスによってロック)ehci_pciしかし、各ロードされたモジュールは、システム上の(未知の)プロセスによって使用される によって使用され、これはあなたがもう三つのモジュールをアンロードすることができない理由のポイントです上記のサンプル出力では、iptable_filterは1つの (未知)のLinuxプロセスで使用され、ip_tablesモジュールは1つのカーネル モジュールがiptable_filterという名前で使用されています。 ソース:http://xmodulo.com/how-to-check-kernel-module-dependencies-on-linux.html

多分あなたはそれがかつての依存関係に応じて、彼らが再挿入の順序を滞在し、変更を注文ロード

別の可能性を受け入れなければならないが、彼らはバグがあるということです、ケースを参照してくださいhttp://pritambankar.blogspot.de/2012/10/solution-to-problem-of-module-getting.htmlWhy is this kernel module marked at permanent on 2.6.39

応答ラルフため

+0

おかげ(-DCC_HAVE_ASM_GOTOフラグを使用して再コンパイル)永久マークモジュールの溶液です。 'xhci_hcd'はexit関数がないので永久に表示されます。追加すると永久に表示されなくなり、削除することができます。他の2つについては、あなたは正しいです、彼らはいくつかの未知のプロセスによって使用されています。私はこれらのドライバがロード可能なモジュールとしてコンパイルされることを意図しておらず、したがってこのアプローチをあきらめていることを知らされています。 – Jay

関連する問題