私はLinuxデバイスドライバーに非常に慣れておらず、現在USBドライバーに取り組んでいます。USB 関連のドライバーをローダブル モジュールとして作成し、必要に応じて削除/再挿入する必要があります。しかし、特定の問題に直面しています。Qualcomm Snapdragon 820 プロセッサ (APQ8096) に基づく Dragonboard 820 に取り組んでいます。
Linux カーネル バージョン: 3.18.20
Android バージョン: 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 は挿入後に正常に動作します。ただし、ドライバーを (逆の順序で) 削除しようとすると、3 つのドライバー (phy_msm_qusb、phy_msm_ssusb_qmp、および xhci_hcd) が削除されず、他のドライバーを再挿入するとクラッシュします (xhci_plat_hcd を再挿入する際)。これらのドライバーを強制的に削除すると、非常に不安定になり、残りのドライバーの削除時または再挿入時にクラッシュします。したがって、誰かがこれについて意見を持っていれば、それは大歓迎です。