- For TX2 or TX1, if I connect a storage device(such as an NVMe SSD) through PCIe interface, can I see the device under /dev/ directory?
- If the first answer is yes : can I choose the PCIe storage device as our OS disk?
You might need to enable a kernel config for NVMe, but otherwise it should work. I do know of one person having issues though, so it might depend on the model of NVMe.
As for using PCIe for storage, I don’t think the boot loader can recognize this…but I may be wrong about that (I don’t have one to test). So long as the “/boot” is on eMMC you could do this, so even if U-Boot does not boot to a PCIe drive switching from eMMC ("/boot") after kernel load (root partition or “/”) would probably work ok.
Thanks for your reply.
Two more question:
- What devices have you connect to PCIe interface and works OK?
- If a graphics card can work through PCIe interface?
These may help me confirm my original question.
I have tested NVMe SSD through PCIe interface on TX1. As linuxdev suggested, we need to select NVMe driver in config file (by default its not selected).
I’ve only connected a PCIe x1 (PCIe v2) network card using a Realtek chipset (it works).
In theory a graphics card should work if you have a driver for it on the arm64/aarch64/ARMv8 architecture. The integrated graphics connects directly to the memory controller, and thus the driver for built-in GPU does not work over PCIe. NVIDIA publishes drivers only for desktop PC architectures, so an add-on NVIDIA video card won’t be an option unless it works with the Nouveau software-only driver (and I don’t know if it will). I don’t actually know of any video cards with published hardware acceleration on arm64/aarch64 other than the integrated video of the Jetson (though someone might know of one).
Samsung PM961 NVMe M.2 2280 drive seems to be working fine with Jetson TX2 dev board (kernel 4.4.38) via $5 PCIe (4 lanes) to M2 adapter card.
With the same adapter board as @albertr’s one, I have connected a Corsair MP500 NVME SSD.
The only thing is that it needs:
in kernel boot args, otherwise there are a lot of AER error messages when it enables gen2 speed:
Jul 27 12:43:15 tegra-ubuntu kernel: [ 8.991863] tegra-pcie 10003000.pcie-controller: speed change : Gen-1 -> Gen-2 Jul 27 12:43:15 tegra-ubuntu kernel: [ 8.992025] pcieport 0000:00:01.0: AER: Corrected error received: id=0020 Jul 27 12:43:15 tegra-ubuntu kernel: [ 8.992037] pcieport 0000:00:01.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=0008(Transmitter ID)
Works fine now:
sudo hdparm -t /dev/nvme0n1 /dev/nvme0n1: Timing buffered disk reads: 1948 MB in 3.00 seconds = 649.31 MB/sec
It works fine as root device (had to make kernel with builtin CONFIG_PCI_TEGRA instead of module, CONFIG_BLK_DEV_NVME being already builtin).