Image created by "jetson-disk-image-creator.sh" can't boot

Hi,
I am working with the Xavier NX dev kit and I want to create a custom image that I could flash on a uSD card.
With SDK manager on a 18.04 Ubuntu I installed the JP4.6.2 development environment and tried to create an image using this :

sudo ./jetson-disk-image-creator.sh -o m_sd-blob.img -b jetson-xavier-nx-devkit

But the system doesn’t boot correctly and fail at some point, displaying only the debug on the HDMI port.
boot_uart.txt (119.6 KB)

What could cause this problem and how can I fix it ?
Thanks.

mmc0 is gone. What did you change in the device tree? Also, why do you need to change device tree? This is already devkit, what is your purpose to change it?

We are making a custom carrier board where we will use the SDMMC3.

I modified the pinmux to configure GPIO11 as an output (for the load switch),
I modified “tegra194-p3668-common.dtsi” by adding this :

sdmmc3: sdhci@3440000 {
	mmc-ocr-mask = <0>;
	vmmc-supply = <&p3668_vdd_sdmmc3_sw>;
	status = "okay";
};

And “tegra194-fixed-regulator-p3668.dtsi” :

p3668_vdd_sdmmc3_sw: regulator@103 {
	compatible = "regulator-fixed";
	reg = <103>;
	regulator-name = "vdd-sdmmc3-sw";
	regulator-min-microvolt = <3300000>;
	regulator-max-microvolt = <3300000>;
	gpio = <&tegra_main_gpio TEGRA194_MAIN_GPIO(Q, 6) 0>;		//	GPIO11
	enable-active-high;
};

Hi,

That sdcard image is only for sdcard module to use. It will only work for the sdcard slot which is on the module.

Your “sdmmc3” is a sdcard slot on the carrier board but not module. Which will not work with it.

If you want to check the sdcard slot issue on your carrier board, just flash the board with flash.sh and validate. No need to try this jetson disk tool and create more problems for yourself.

And if you are using custom board, stop saying that you are using devkit. It is just confusing other people.

I might have been unclear in my other messages, sorry for that.

I am working with the Xavier NX sdcard module (that I thought was named devkit), and we want to try it on a custom carrier board. This carrier board have a micro SD card slot that will be used for data storage, so I was trying to enable SDMMC3.

But because I have Ubuntu on a virtual machine, the script that need the Xavier NX to be connected in recovery mode failed. That’s why I tried to use the disk image creator because I thought I would be able to write that image on the uSD I am using inside the module.

Hi,

The dtb is located on the QSPI of the module. Which means your dtb on the sdcard may not work.

Honestly, my personal suggestion is, if you really want to make a carrier board, or do these bring up cases, prepare a native ubuntu host and use flash.sh to do this work.

Hello again,

I made a native ubuntu host, downloaded SDK Manager, the JP4.6.2 sources, build the kernel and used the flash.sh to flash the DTB only :

sudo ./flash.sh -k kernel-dtb jetson-xavier-nx-devkit mmcblk0p1

But I still have the same issue, when it start the system it doesn’t boot correctly
debug_boot_uart.txt (130.1 KB)

Any clue on what’s happening ?

Could you check if your dtb changes the status of other sdmmc devices and hence disable the original sdcard slot?

You can just compare the dmesg |grep sdhci and see what was enabled when you use the original dtb on the devkit.

Here is what I have :

:~$ dmesg |grep sdhci
[    0.000000] Kernel command line: console=ttyTCU0,115200 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4  video=tegrafb earlycon=tegra_comb_uart,mmio32,0x0c168000 gpt rootfs.slot_suffix= usbcore.old_scheme_first=1 tegraid=19.1.2.0.0 maxcpus=6 boot.slot_suffix= boot.ratchetvalues=0.4.2 vpr_resize sdhci_tegra.en_boot_part_access=1
[    0.742347] iommu: Adding device 3400000.sdhci to group 6
[    5.201386] sdhci: Secure Digital Host Controller Interface driver
[    5.206585] sdhci: Copyright(c) Pierre Ossman
[    5.210786] sdhci-pltfm: SDHCI platform and OF driver helper
[    5.216774] sdhci-tegra 3400000.sdhci: Got CD GPIO
[    5.222483] sdhci-tegra 3400000.sdhci: Client registration for eMC Successful
[    5.231021] sdhci-tegra 3400000.sdhci: wakeup init done, cdirq 246
[    5.305471] mmc0: SDHCI controller on 3400000.sdhci [3400000.sdhci] using ADMA 64-bit with 64 bit addr

On your device, 3400000.sdhci becomes mmc1. Please check if this is due to you put the 3440000.sdhci before 3400000.sdhci in the device tree.

1 Like

The 3440000.sdhci is written just after the 3400000.sdhci.
Should I try to put it at the complete end of the file ?

Are you using the dts file converted back from dtb to check or you are using the source code file to check?

I checked the .dtb in the compiled kernel with dtc -I dtb -O dts -o reverse_tree.dts tegra194-p3668-all-p3509-0000.dtb and indeed the 3440000.sdhci was BEFORE the 3400000.sdhci. I put it just below, used dtc -I dts -O dtb -o tegra194-p3668-all-p3509-0000.dtb reverse_tree.dts and flashed the device tree.
It worked !

But I still can’t see the external SD card…

External sd is something else and need to check your device tree. Better filing a new topic.

Or you can check similar posts first. Honestly, it is already too much duplicated sdmmc3 issue there.
You can check them first.

Yeah that’s right, and I need to verify the HW too.
Actually should I rename this topic as " “ERROR: mmcblk0p1 not found” after activating SDMMC3" ? And mark it as solved ?

Yes, and that topic would be more precise.