Я очень новичок в драйверах устройств Linux и в настоящее время работаю над драйвером USB. Мне нужно сделать драйверы, связанные с USB, в виде загружаемых модулей и удалить / повторно вставить их по желанию. Но я столкнулся с некоторыми проблемами. Я работаю над Dragonboard 820 на базе процессора Qualcomm Snapdragon 820 (APQ8096).
Версия ядра 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 после вставки работает хорошо. Однако при попытке удалить драйвера (в обратном порядке) три драйвера -phy_msm_qusb,phy_msm_ssusb_qmp и xhci_hcd не удаляются, а повторная вставка других драйверов дает сбой (при повторной вставке xhci_plat_hcd). Если я принудительно удаляю эти драйверы, это очень нестабильно и дает сбой либо при удалении оставшихся драйверов, либо при повторной установке. Так что, если у кого-то есть какие-либо предложения по этому поводу - это очень ценится.