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。获取相应的目录去寻找这些固件。