How to swap sdmmc3 and sdmmc1 or change linux command line?


In my custom carrier board, I implemented a SD card on the SDMMC3 interface (@ 3440000). As part of my hardware burn-in, I must be able to boot from the SD card which is on the Xavier NX SOM (P3668-0000) and which uses the SDMCC1 interface (@ 3400000).
In my device tree, I therefore kept the two interfaces. Not having mapped the USB0 on ​​my custom carrier board, I have to use the Nvidia carrier board (P3509-0000) to make the flash of the SD card which is on the SDMMC1 interface.
I therefore use the following command:
sudo ./ css_nvidia_devboard mmcblk0p1

The problem is that during boot, the two SD interfaces are detected (that’s what I want) but when assigning the labels, the mmc0 label is assigned to SDMMC3 and mmc1 to the SD card which is on SDMCC1. In the initial case (without SDMMC3), I had the mmc0 label assigned to SDMMC1.
The trick is that the command that launches the linux boot specifies each time, the partition mmcblk0p1.
Kernel command line: console=ttyTCU0,115200 video=tegrafb no_console_suspend=1 earlycon=tegra_comb_uart,mmio32,0x0c168000 gpt rootfs.slot_suffix= tegra_fbmem=0x800000@0xa069f000 lut_mem=0x2008@0xa069b000 usbcore.old_scheme_first=1 tegraid= maxcpus=6 boot.slot_suffix= boot.ratchetvalues=0.4.2 vpr_resize sdhci_tegra.en_boot_part_access=1 quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0

And so, you see the problem. Indeed, in the case of the 2 SDMMC interfaces are actived, since the SD card which contains the Linux kernel is on the SDMMC1 interface (= mmc1),. Then the linux launch command becomes false because cboot cannot find mmcblk0p1 …

I put the boot logs of the 2 configuration cases: sdmmc1 alone (as on the Nvidia carrier borad) and sdmmc1 / sdmmc3 (kernel linux on sdmcc1, storage on sdmmc3).

There are two ways :

  1. Modify linux command line. How to do it ?
  2. Change cboot. What is the way to do it

Thanks you for your help.

  1. Modify linux command line. How to do it ?

Open the /boot/extlinux.conf on your boot device and add what you want.

  1. Change cboot. What is the way to do it

You can interrupt the boot process during cboot is showing up in UART. Change the “boot-order” with setvar and printvar command.