Booting from SD Card with a Jetson Nano production module

Hi, I’m trying to boot with my Jetson Nano production module and a customised carrier board from the SDCARD.

With cold boot the system works fine. But with shutdown -r now the system show an error like:


I have my Tegra210-porg-p3448-common.dtsi :

sdhci@700b0400 {
status = “okay”;
/delete-property/ keep-power-in-suspend;
/delete-property/ non-removable;
mmc-ddr-1_8v;
mmc-ocr-mask = <3>;
uhs-mask = <0x0>;
sd-uhs-sdr104;
sd-uhs-sdr50;
sd-uhs-sdr25;
sd-uhs-sdr12;
no-sdio;
broken-mmc-highspeed;
max-clk-limit = <0xbebc200>;
tap-delay = <3>;

I would suggest you firstly make sure the stability of your sdcard when you boot from emmc. Actually, your device tree change lacks of some properties.

For example, our developer guide mentions there is cd-gpios and SDMMC_VDD_EN. But they don’t show up in your device tree at all.

I guess your sdcard is not even working when you boot from emmc.

Also, please learn to dump the full log from uart console instead of just pasting a screen photo with panic log.

Sorry is true!

The system currently work when i start with the emmc and is possible to mount the sdcard without problem and copy the root.
I can boot from the sd card modifying the extlinux.conf without problem.
The problem appears only when using the sdcard mounted as / and booting normally if i need reboot using a software command like: shutdown -r now appears the panic screen.

But if i made a cold reset then system boot without problem.

Then just share us the log from uart.

The real info that would help is the log file. Your description is just for clarify the symptom. The detail still requires the log to tell.

And based on our experience of helping bring up extra sd slot on production modules over TX2-NX, NX and Nano, cd-gpios and vmmc-suppply in device tree are needed.

Sometimes user may think their sdcard is working but it may not be true. Because it has chance sdcard is enumerated in low speed mode due to those properties in device tree are not correct. Under such case, yes the sdcard is working, but it is not right.

Generally, we ask for schematic (sd part), full dts file and dmesg to debug.

Thanks Wayne. I’m attaching the console.log.

console.log (122.4 KB)

Hi BARO,

As expected, your log is full of sdcard error. That is the stability issue as we are talking about.

There is full of sdmmc error from timestemp 6 ~ 13.

[    6.263594] Root device found: mmcblk1p1
[    6.270673] Found dev node: /dev/mmcblk1p1
[    6.284516] mmc1: Data CRC error
[    6.289325] sdhci: =========== REGISTER DUMP (mmc1)===========
[    6.296801] sdhci: Sys addr: 0x00000008 | Version:  0x00000303
[    6.304279] sdhci: Blk size: 0x00007200 | Blk cnt:  0x00000001
[    6.311753] sdhci: Argument: 0x00000808 | Trn mode: 0x0000003b
[    6.319225] sdhci: Present:  0x01fb0000 | Host ctl: 0x00000013
[    6.326693] sdhci: Power:    0x00000001 | Blk gap:  0x00000000
[    6.334157] sdhci: Wake-up:  0x00000000 | Clock:    0x00000007
[    6.341624] sdhci: Timeout:  0x0000000e | Int stat: 0x00000000
[    6.349100] sdhci: Int enab: 0x02ff100b | Sig enab: 0x02fc100b
[    6.356580] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
[    6.364075] sdhci: Caps:     0x376cd08c | Caps_1:   0x10006f73
[    6.371580] sdhci: Cmd:      0x0000123a | Max curr: 0x00000000
[    6.379095] sdhci: Host ctl2: 0x00003001
[    6.384701] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000ffefe410
[    6.392948] sdhci: ===========================================
[    6.400673] mmcblk1: error -110 sending stop command, original cmd response 0x900, card status 0x400900
[    6.411813] mmcblk1: error -84 transferring data, sector 2056, nr 8, cmd response 0x900, card status 0x0
[    6.504709] mmc1: Data CRC error
[    6.509586] sdhci: =========== REGISTER DUMP (mmc1)===========
[    6.517126] sdhci: Sys addr: 0x00000008 | Version:  0x00000303
[    6.524661] sdhci: Blk size: 0x00007200 | Blk cnt:  0x00000000
[    6.532170] sdhci: Argument: 0x00000808 | Trn mode: 0x0000003b
[    6.539662] sdhci: Present:  0x01fb0000 | Host ctl: 0x00000013
[    6.547146] sdhci: Power:    0x00000001 | Blk gap:  0x00000000
[    6.554603] sdhci: Wake-up:  0x00000000 | Clock:    0x00000007
[    6.562033] sdhci: Timeout:  0x0000000e | Int stat: 0x00000000
[    6.569466] sdhci: Int enab: 0x02ff100b | Sig enab: 0x02fc100b
[    6.576905] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
[    6.584350] sdhci: Caps:     0x376cd08c | Caps_1:   0x10006f73
[    6.591800] sdhci: Cmd:      0x0000123a | Max curr: 0x00000000
[    6.599255] sdhci: Host ctl2: 0x00003001
[    6.604803] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000ffefe410
[    6.613001] sdhci: ===========================================
[    6.620683] mmcblk1: error -110 sending stop command, original cmd response 0x900, card status 0x400900
[    6.631808] mmcblk1: error -84 transferring data, sector 2056, nr 8, cmd response 0x900, card status 0x0
[    6.643067] mmcblk1: retrying using single block read
[    6.664274] mmc1: Data CRC error

Please share your full dts and your board schematic for the sd part.

BTW, why enabling mmc2 here? This should not have pinout from emmc module for this.

I’m attaching the schematic and tegra210-porg-p3448-common for your evaluation.

At the moment when I turn on the board the SD CARD have reasonable speed less than 30 seconds.


tegra210-porg-p3448-common.dtsi (22.1 KB)

I made this modification in tegra210-porg-plugin-manager.dtsi.

fragement@9 {
ids = “<3448-0000-300”, “<3448-0002-300” , “>=3448-0003-000”;
override@0 {
target = <&max77620_ldo6>;
overlay {
status = “disabled”;
};
};
override@1 {
target = <&sdhci2>;
overlay {
status = “okay”;
vmmc-supply = <&max77620_ldo6>;
keep-power-in-suspend;
non-removable;
};

Hi @BARO ,

Please do not modify tegra210-porg-plugin-manager.dtsi. You should not touch this if you don’t understand what this is doing. Just prevent to use those plugin-manager stuff. This is usually doing board dts control for our internal board.

Also, please use dtc tool to directly convert your dtb back to dts and share it here. It looks like your vmmc-supply is not correct.

I’m attaching the converted dtb.
thanks for your support.

tegra210-p3448-0002-p3449-0000-b00.dts (349.1 KB)

I modified it following this: MicroSD card not detected on Jetson Nano production module - #14 by jetson_user

Can you try to add nvidia,vmmc-always-on to your sdhci?

BTW, generally we ask customer to assign vdd-3v3-sd, which is regulator@3 to the vmmc-supply. But in your device tree, you give regulator@2, which is vdd-3v3-sys to vmmc-supply.

Sorry my ignorance. Where I need to modify it? Because never I assigned this parameter.

sdhci@700b0400 is the only node that we will apply change to now.

I added: nvidia,vmmc-always-on but nothing happen. the problem continue.

about to change the regulator2 to 3 I don’t where I need to change it. thanks

Share me again with your dts.

Also, I have a question about your schematic. Where does your SD_VCC_EN connect on tegra side?