Hello,
I have a Jetson TX2 development kit, and recently I bought this M.2 E Key slot Artix-7 FPGA, as I wanted to experiment with PCIe designs:
This is an M.2 2230 A/E compatible device, which I figured would work fine on the Jetson. It slots in nicely. I’m running the JetPack 3.1 release.
The board has 3 LEDs, and is pre-programmed with an FPGA bitstream that both[1]:
-
Sets LEDs B and C to constant high, so there is no blink, just a lit LED.
-
Sets LED A to constant blink, indicating the PCIe clock line is active.
After this, the device should be visible in sudo lspci
, I would suspect, and I could then load the Xilinx xdma
driver and play around. Upon installation and bootup, however, this is not the case.
First, sudo lspci -vvv
returns nothing (literally zero lines of output). Second, LED A is not blinking, indicating the clock line isn’t active to the FPGA’s PCIe PHY.
Being curious, I reset the board (fully shutting down and unplugging the power, and replugging – full cold restart) and observed the LEDs on the FPGA. During bootup, after HDMI is active and I can see systemd
dumping boot information, LED A does start blinking, but then stops after a second or two, as if the PCIe bus is active, then disabled.
Looking at dmesg
output, this would seem to be accurate. The kernel scans the bus but ignores the device; and then powers down the PCIe power rails. Here is the relevant dmesg
snippet:
nvidia@tegra-ubuntu:~$ dmesg | grep pcie
[ 13.238869] tegra-pcie 10003000.pcie-controller: 4x1, 1x1 configuration
[ 13.239747] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[ 13.240130] tegra-pcie 10003000.pcie-controller: probing port 0, using 4 lanes
[ 13.243106] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[ 13.672856] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[ 14.084691] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[ 14.487015] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[ 14.489035] tegra-pcie 10003000.pcie-controller: link 0 down, ignoring
[ 14.891382] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 15.294816] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 15.708281] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 15.710299] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring
[ 15.710304] tegra-pcie 10003000.pcie-controller: PCIE: no end points detected
[ 15.710478] tegra-pcie 10003000.pcie-controller: PCIE: Disable power rails
At this point I figured that perhaps the M.2 key slot being intended for WiFi might be the case (as the board is marked to indicate this), but wasn’t sure how to confirm this: even if I don’t have the FPGA plugged in, the boot messages seem to be the same regardless.
Does anyone have any advice here? I’m probably missing something exceedingly obvious to check/ask. Thanks!
Here is the full information from the dmesg log at the time of scanning the bus:
nvidia@tegra-ubuntu:~$ dmesg
...
[ 13.238869] tegra-pcie 10003000.pcie-controller: 4x1, 1x1 configuration
[ 13.239747] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[ 13.240130] tegra-pcie 10003000.pcie-controller: probing port 0, using 4 lanes
[ 13.243106] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[ 13.273909] xhci-tegra 3530000.xhci: cannot find firmware....retry after 1 second
[ 13.400005] dhd_module_init in
[ 13.407740] tegra_net_perf_init: cannot get wifi sclk
[ 13.427846] found wifi platform device bcmdhd_wlan
[ 13.436389] gpio tegra-gpio-aon wake69 for gpio=59(FF:3)
[ 13.444881] wifi_platform_get_country_code_map: could not get country_code_map
[ 13.456580] wifi_plat_dev_drv_probe:platform country code map is not available
[ 13.467057] Power-up adapter 'DHD generic adapter'
[ 13.474117] wifi_platform_set_power = 1
[ 13.672856] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[ 13.682835] wifi_platform_bus_enumerate device present 1
[ 13.714358] wifi_platform_bus_enumerate device present 0
[ 13.729019] F1 signature read @0x18000000=0x17214354
[ 13.738695] F1 signature OK, socitype:0x1 chip:0x4354 rev:0x1 pkg:0x2
[ 13.739350] DHD: dongle ram size is set to 786432(orig 786432) at 0x180000
[ 13.739414] wifi_platform_prealloc: failed to alloc static mem section 7
[ 13.739420] wifi_platform_get_mac_addr
[ 13.740545] CFG80211-ERROR) wl_setup_wiphy : Registering Vendor80211
[ 13.749143] wl_create_event_handler(): thread:wl_event_handler:258 started
[ 13.750961] CFG80211-ERROR) wl_event_handler : tsk Enter, tsk = 0xffffffc1e1a61a70
[ 13.752715] dhd_attach(): thread:dhd_watchdog_thread:25a started
[ 13.752905] dhd_attach(): thread:dhd_dpc:25b started
[ 13.755155] dhd_attach(): thread:dhd_rxf:25c started
[ 13.755164] dhd_deferred_work_init: work queue initialized
[ 13.758377] Dongle Host Driver, version 1.201.82 (r)
Compiled in drivers/net/wireless/bcmdhd on Jul 20 2017 at 00:47:12
[ 13.758657] tegra_sysfs_register
[ 13.758687] Register interface [wlan0] MAC: 00:04:4b:8c:c0:a7
[ 13.758690] dhd_prot_ioctl : bus is down. we have nothing to do
[ 13.760617] sdhci-tegra 3440000.sdhci: Tuning already done, restoring the best tap value : 65
[ 13.761658] wifi_platform_set_power = 0
[ 14.084691] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[ 14.272763] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-03-31 06:21:56 UTC, Version: 55.07 release
[ 14.274828] xhci-tegra 3530000.xhci: xHCI Host Controller
[ 14.274841] xhci-tegra 3530000.xhci: new USB bus registered, assigned bus number 1
[ 14.275652] xhci-tegra 3530000.xhci: hcc params 0x0184fd25 hci version 0x100 quirks 0x00010810
[ 14.275675] xhci-tegra 3530000.xhci: irq 59, io mem 0x03530000
[ 14.275796] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 14.275798] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 14.275800] usb usb1: Product: xHCI Host Controller
[ 14.275802] usb usb1: Manufacturer: Linux 4.4.38-tegra xhci-hcd
[ 14.275803] usb usb1: SerialNumber: 3530000.xhci
[ 14.276077] hub 1-0:1.0: USB hub found
[ 14.276100] hub 1-0:1.0: 4 ports detected
[ 14.294943] xhci-tegra 3530000.xhci: xHCI Host Controller
[ 14.294951] xhci-tegra 3530000.xhci: new USB bus registered, assigned bus number 2
[ 14.295114] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[ 14.295117] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 14.295119] usb usb2: Product: xHCI Host Controller
[ 14.295121] usb usb2: Manufacturer: Linux 4.4.38-tegra xhci-hcd
[ 14.295122] usb usb2: SerialNumber: 3530000.xhci
[ 14.295422] hub 2-0:1.0: USB hub found
[ 14.295446] hub 2-0:1.0: 3 ports detected
[ 14.295825] tegra-xotg xotg: otg: host 3530000.xhci registered
[ 14.487015] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[ 14.489035] tegra-pcie 10003000.pcie-controller: link 0 down, ignoring
[ 14.586814] usb 1-2: new full-speed USB device number 2 using xhci-tegra
[ 14.721222] usb 1-2: New USB device found, idVendor=248a, idProduct=8367
[ 14.721225] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 14.721227] usb 1-2: Product: Wireless Receiver
[ 14.721228] usb 1-2: Manufacturer: Telink
[ 14.721446] usb 1-2: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes
[ 14.721802] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work mailbox command 6
[ 14.726628] input: Telink Wireless Receiver as /devices/3530000.xhci/usb1/1-2/1-2:1.0/0003:248A:8367.0001/input/input4
[ 14.778992] hid-generic 0003:248A:8367.0001: input,hidraw0: USB HID v1.11 Mouse [Telink Wireless Receiver] on usb-3530000.xhci-2/input0
[ 14.781498] input: Telink Wireless Receiver as /devices/3530000.xhci/usb1/1-2/1-2:1.1/0003:248A:8367.0002/input/input5
[ 14.835085] hid-generic 0003:248A:8367.0002: input,hidraw1: USB HID v1.11 Keyboard [Telink Wireless Receiver] on usb-3530000.xhci-2/input1
[ 14.891382] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 14.946804] usb 1-3: new full-speed USB device number 3 using xhci-tegra
[ 15.099090] usb 1-3: New USB device found, idVendor=0403, idProduct=6015
[ 15.099093] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 15.099095] usb 1-3: Product: FT230X Basic UART
[ 15.099096] usb 1-3: Manufacturer: FTDI
[ 15.099098] usb 1-3: SerialNumber: DO00HAMO
[ 15.099597] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work mailbox command 6
[ 15.102624] ftdi_sio 1-3:1.0: FTDI USB Serial Device converter detected
[ 15.102673] usb 1-3: Detected FT-X
[ 15.102906] usb 1-3: FTDI USB Serial Device converter now attached to ttyUSB0
[ 15.294816] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 15.326954] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: data=ordered
[ 15.708281] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 15.710299] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring
[ 15.710304] tegra-pcie 10003000.pcie-controller: PCIE: no end points detected
[ 15.710478] tegra-pcie 10003000.pcie-controller: PCIE: Disable power rails
[ 15.942796] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work mailbox command 5
[ 15.942799] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work ignore firmware MBOX_CMD_DEC_SSPI_CLOCK request
[ 18.135467] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 18.135537]
Dongle Host Driver, version 1.201.82 (r)
Compiled in drivers/net/wireless/bcmdhd on Jul 20 2017 at 00:47:12
[ 18.135539] wl_android_wifi_on in
[ 18.135541] wifi_platform_set_power = 1
...
(I included the full information, because at the time of booting it seems as if the system has an error loading WiFi firmware, just as a hunch/tip off of what might be wrong.)
[1] Installation · RHSResearchLLC/PicoEVB Wiki · GitHub
[2] https://github.com/RHSResearchLLC/PicoEVB/tree/master/DMADriver