Boot source other than eMMC or USB

It looks like there are three BOOT_SELECT[2:0] pins for the Tegra X2 SoC. Only BOOT_SELECT2 is accessible on the TX2 8GB SoM (via D8). However, all three BOOT_SELECT pins are available on the TX2i/TX2-4GB (D8, H10, G10). Therefore, each BOOT_SELECT pin can be controlled by the carrier board on the TX2 4GB SoM.

Is there a combination of BOOT_SELECT[2:0] settings (using strong pull-ups) that will cause the Tegra X2 to boot directly, with the internal eMMC erased/blank, off any other sources?

For example one of these:

  1. QSPI
  2. SATA
  3. External SD/MMC device
  4. Other (not USB recovery)

Anyone have an answer to this question?

Boot the rootfs from sata and sdcard is possible.
Please elaborate what is your usecase.

I understand fully how to put the rootfs on other devices. That is not what I’m trying to do. I need to boot the system in a production environment in the factory with a completely blank/erased SoM and flash the eMMC from an SD card. Therefore, I need to be able to boot the entire system directly from an SD card OR I need to boot from QSPI/SATA and read data off the SD card to flash an initial image to the SoM’s internal eMMC.

Using the USB port in recovery mode is not an option as it requires a USB Host x86 PC running Linux, for the initial programming of the SoM.

I was able to make some progress on this. It appears that the Tegra X2 SoC can boot from QSPI. By forcing the Jetson TX2 4GB SoM module pin G10/BOOT_SELECT0 (TP503) high at 1.8V during reset, the Tegra X2 SoC attempts to boot from QSPI. I was able to see activity on the QSPI signals coming from the SoM. It looks like the QSPI_SCK, QSPI_CS_N, and QSPI_IO0 signals were all being activated by the BootROM code in the Tegra X2, most likely trying to detect the presence of the QSPI device and read from it.

Additionally, after attempting a QSPI boot, with no actual QSPI NOR flash connected, I sent in a recovery over USB and got the following message out of the serial console:

[0076.647] I> Welcome to MB2(TBoot-BPMP) Recovery(version: 01.00.160913-t186-M-00.00-mobile-bc98f182)
[0076.656] I> bit @ 0xd480000
[0076.659] I> Boot-device: QSPI
[0081.662] E> Read-device-ID: register (0x9f) read fail (err:0x12120706)
[0081.669] E> Error opening qspi
[0081.672] E> Failed to initialize boot device
[0081.676] E> Top caller module: SPI, error module: SPI, reason: 0x06, aux_info: 0x07
[0081.683] C> Hang

Therefore, it looks like a BOOT_SELECT[2:0] = b001 will perform a QSPI boot, instead of eMMC.

My next question is:
What is the proper format for the image that is flashed on the QSPI that would allow the BootROM to properly boot off QSPI?

Hi JDSchroeder,

So actually you want to “flash” by external storage and don’t want to flash with host machine, right?

Yes, that is the goal.

Unfortunately, this feature is not yet ready.

Has there been any progress on this?

I have a board with a QSPI connected up on it now. Which QSPI parts are supported by the Tegra X2 Boot ROM for direct booting (bypassing the internal eMMC)?

Is there a method for getting the Jetson TX2 8GB/original SoM module to boot off QSPI?

did you try to create a respective BCT and initiate some true QSPI full boot?

No, NVIDIA didn’t provide any additional information to help with this effort. Therefore, it would of required studying how some of the other Jetson SoMs boot from QSPI to make work properly. I only have the Jetson TX2 and TX2i to experiment with.

It would be helpful if NVIDIA could provide more information on possibly booting off QSPI with the TX2i, even if they couldn’t official support it with the it would be nice.

what SoMs can boot from QSPI NORs?

I’m not sure any of the Jetson TX2 SoMs can boot from QSPI NOR, especially without NVIDIAs help. My initial investigation was looking at the Jetson TX2i since it had what appeared to be the necessary pins coming out of the SoM.

do you know if Nano/Xavier can? maybe there is some Jetson that does boot from QSPI that will support as a reference for booting tx2i (I use it too) from NOR

Sorry, I do not. Here are all the files in Linux for Tegra that have qspi in their name:

nvidia@ubuntu:~/Linux_for_Tegra_R32.5.0$ ls -l *qspi*
lrwxrwxrwx 1 nvidia nvidia   31 Jan 15 17:10 jetson-xavier-nx-devkit-qspi.conf -> p3509-0000+p3668-0000-qspi.conf
lrwxrwxrwx 1 nvidia nvidia   34 Jan 15 17:10 p3449-0000+p3668-0000-qspi-sd.conf -> p3509-0000+p3668-0000-qspi-sd.conf
lrwxrwxrwx 1 nvidia nvidia   36 Jan 15 17:10 p3449-0000+p3668-0001-qspi-emmc.conf -> p3509-0000+p3668-0001-qspi-emmc.conf
-rw-r--r-- 1 nvidia nvidia 1716 Jan 15 17:10 p3509-0000+p3668-0000-qspi.conf
-rw-r--r-- 1 nvidia nvidia 1863 Jan 15 17:10 p3509-0000+p3668-0000-qspi-sd.conf
-rw-r--r-- 1 nvidia nvidia 1849 Jan 15 17:10 p3509-0000+p3668-0001-qspi-emmc.conf

well I guess we need to assume MB1/2 support for QSPI, it should be able to boot cboot from QSPI as well after running itself