1. 啟動時出現了下面錯誤
[ 4.682595] pcieport 0004:00:00.0: Signaling PME through PCIe PME interrupt
[ 4.684939] pci 0004:01:00.0: Signaling PME through PCIe PME interrupt
[ 4.691287] pci 0004:01:00.0: enabling device (0000 -> 0002)
[ 5.296255] pci 0004:01:00.0: xHCI HW not ready after 5 sec (HC bug?) status = 0x801
[ 5.296764] xhci_hcd 0004:01:00.0: Direct firmware load for K2026090.mem failed with error -2
[ 5.296909] xhci_hcd 0004:01:00.0: Falling back to user helper
[ 64.860662] tegra-xusb 3610000.xhci: cannot find firmware....retry after 1 second
[ 65.884664] tegra-xusb 3610000.xhci: Direct firmware load for tegra19x_xusb_firmware failed with error -2
[ 65.884850] tegra-xusb 3610000.xhci: Falling back to user helper
[ 66.908783] xhci_hcd 0004:01:00.0: failed to load firmware K2026090.mem: -11
[ 66.908955] xhci_hcd: probe of 0004:01:00.0 failed with error -11
通過lspci查看 貌似能識別到這個芯片,但是驅動沒加載。
iking@iking:~$ lspci -v
0004:00:00.0 PCI bridge: NVIDIA Corporation Device 1ad1 (rev a1) (prog-if 00 [Normal decode])Flags: bus master, fast devsel, latency 0, IRQ 33Bus: primary=00, secondary=01, subordinate=ff, sec-latency=0Memory behind bridge: 40000000-400fffffCapabilities: <access denied>Kernel driver in use: pcieport0004:01:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03) (prog-if 30 [XHCI])Flags: fast devsel, IRQ 33Memory at 1740000000 (64-bit, non-prefetchable) [size=8K]Capabilities: <access denied>
2. 解決辦法
從啟動log看出 K2026090.mem 沒有加載成功。 首先這個固件是從官方網站上下載得到的。下載地址。這里涉及到兩種方式加載。
1) 在內核中加載
內核中配置兩個選項 Device Drivers → Generic Driver Options
x x [*] Include in-kernel firmware blobs in kernel binary
x x (K2026090.mem) External firmware blobs to build into the kernel binary
將下載到的K2026090.mem 拷貝到內核源代碼的firmware目錄中。
編譯,燒錄即可
2)在應用層加載
在應用層加載需要將xhci_hcd 相關的驅動以module的形式編譯出來,然后再在應用層insmode。獲取相應的目錄去尋找這些固件。