Sdram initialization failed

I have a Jetson Nano eMMC SoM which is failing to boot with the following output.

[0000.219] [L4T TegraBoot] (version 00.00.2018.01-l4t-dd84d362)
[0000.225] Processing in cold boot mode Bootloader 2
[0000.230] A02 Bootrom Patch rev = 1023
[0000.233] Power-up reason: pmc por
[0000.236] No Battery Present
[0000.239] pmic max77620 reset reason
[0000.242] pmic max77620 NVERC : 0x40
[0000.246] RamCode = 0
[0000.248] Platform has DDR4 type RAM
[0000.251] max77620 disabling SD1 Remote Sense
[0000.256] Setting DDR voltage to 1125mv
[0000.260] Serial Number of Pmic Max77663: 0x1417f3
[0000.267] Entering ramdump check
[0000.270] Get RamDumpCarveOut = 0x0
[0000.273] RamDumpCarveOut=0x0,  RamDumperFlag=0xe59ff3f8
[0000.279] Last reboot was clean, booting normally!
[0000.283] Sdram initialization failed with 0x3
[0000.287] Error is 3

There is data on the eMMC that I would like to recover. Is there any way to proceed beyond this point? I have tried recovery mode with the tegraflash scripts but the boot output is the same.

My last resort is to de-solder the eMMC chip and attempt to clone it with an eMMC to SD card adapter. I have a low success rate of doing this in the past so I would like to find a safer alternative.

Hi,
You may refer to this section:
Jetson Linux API Reference: Setting Up Cross-Platform Support

To clone the image and mount to your host PC. Check if you can see the important data and save it out.

I’m not able to follow these steps, since the scripts cannot communicate with the recovery interface when the boot process fails at the SDRAM initialization step.

I’m not sure what part of the boot process this is happening in - BPMP or CCPLEX as described here. I’m hoping I can interrupt the boot process at a lower level before the fault occurs and perform the clone operation.

I’ve been trying to clone the image as follows, using a known-good SoM.

sudo ./tegraflash.py --bl cboot.bin --applet nvtboot_recovery.bin --chip 0x21 --cmd “read APP my_backup_image_APP.img”
but this always fails with sending ebt, verification failed, return value 4.

I was able to clone the eMMC using the flash.sh tool instead, as per Flashing Support — Jetson Linux<br/>Developer Guide 34.1 documentation.

sudo ./flash.sh -r -k APP -G backup.img jetson-nano-devkit-emmc mmcblk0p1

This tool is located in work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra of the Yocto toolchain build directory. I believe it comes from the NVIDIA SDK Manager.

I then mounted the image:

mkdir /media/backup
mount backup.img /media/backup
cd /media/backup

This process does not work on the target Jetson module which has the SDRAM initialisation failure during boot. The log is

user@PC:~/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra$ sudo ./flash.sh -r -k APP -G backup.img jetson-nano-devkit-emmc mmcblk0p1
###############################################################################
# L4T BSP Information:
# R32 , REVISION: 5.2
###############################################################################
# Target Board Information:
# Name: jetson-nano-devkit-emmc, Board Family: t210ref, SoC: Tegra 210,
# OpMode: production, Boot Authentication: ,
# Disk encryption: disabled ,
###############################################################################
./tegraflash.py --chip 0x21 --applet "/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/nvtboot_recovery.bin" --skipuid --cmd "dump eeprom boardinfo cvm.bin"
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands

[   0.0108 ] Generating RCM messages
[   0.0115 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   0.0120 ] RCM 0 is saved as rcm_0.rcm
[   0.0123 ] RCM 1 is saved as rcm_1.rcm
[   0.0123 ] List of rcm files are saved in rcm_list.xml
[   0.0123 ]
[   0.0124 ] Signing RCM messages
[   0.0129 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0134 ] Assuming zero filled SBK key
[   0.0168 ]
[   0.0168 ] Copying signature to RCM mesages
[   0.0174 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0184 ]
[   0.0185 ] Boot Rom communication
[   0.0190 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[   0.0194 ] RCM version 0X210001
[   0.0735 ] Boot Rom communication completed
[   1.0887 ]
[   1.0888 ] dump EEPROM info
[   1.0896 ] tegrarcm --oem platformdetails eeprom /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/cvm.bin
[   1.0902 ] Applet version 00.01.0000
[   1.1043 ] Saved platform info in /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/cvm.bin
[   1.1923 ]
[   1.1931 ] tegrarcm --reboot recovery
[   1.1937 ] Applet version 00.01.0000
[   1.2122 ]
Board ID(3448) version(400)
copying bctfile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying initrd(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/l4t_initrd.img)... done.
Making Boot image... done.
Existing sosfile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
Existing badpagefile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/badpage.bin) reused.
copying wb0boot(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0002-p3449-0000-b00.dtb)... done.
Copying nv_boot_control.conf to rootfs
sed: can't read /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
Skip generating system.img
Existing tbcfile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0002-p3449-0000-b00.dtb)... done.
copying cfgfile(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_emmc_p3448.xml) to flash.xml... done.
copying flasher(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/bootloader/tegraflash.py) reused.
*** Reading [APP] and storing to /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/backup.img ***
./tegraflash.py --bl cboot.bin --bldtb kernel_tegra210-p3448-0002-p3449-0000-b00.dtb  --chip 0x21 --applet nvtboot_recovery.bin --bct  P3448_A00_lpddr4_204Mhz_P987.cfg  --cfg  flash.xml   --odmdata 0xa4000  --cmd "read APP /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/backup.img"
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands

[   0.0042 ] Generating RCM messages
[   0.0048 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[   0.0123 ] RCM 0 is saved as rcm_0.rcm
[   0.0127 ] RCM 1 is saved as rcm_1.rcm
[   0.0127 ] List of rcm files are saved in rcm_list.xml
[   0.0128 ]
[   0.0128 ] Signing RCM messages
[   0.0134 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0141 ] Assuming zero filled SBK key
[   0.0181 ]
[   0.0181 ] Copying signature to RCM mesages
[   0.0187 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0196 ]
[   0.0196 ] Boot Rom communication
[   0.0201 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[   0.0209 ] BR_CID: 0x321010016445c8492400000009048240
[   0.0223 ] RCM version 0X210001
[   0.0230 ] Boot Rom communication completed
[   1.0345 ]
[   1.0345 ] Parsing partition layout
[   1.0354 ] tegraparser --pt flash.xml.tmp
[   1.0363 ]
[   1.0364 ] Creating list of images to be signed
[   1.0370 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[   1.0488 ]
[   1.0489 ] Generating signatures
[   1.0495 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[   1.0502 ] Assuming zero filled SBK key
[   1.1174 ]
[   1.1175 ] Send BCT from Host
[   1.1175 ] Generating br-bct
[   1.1182 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[   1.1187 ] Copying Sdram info from 2 to 3 set
[   1.1205 ]
[   1.1205 ] Updating boot device parameters
[   1.1210 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[   1.1215 ] Warning: No sdram params
[   1.1216 ]
[   1.1216 ] Updating bl info
[   1.1221 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   1.1234 ]
[   1.1234 ] Updating secondary storage information into bct
[   1.1239 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_lpddr4_204Mhz_P987.bct
[   1.1245 ]
[   1.1245 ] Updating Odmdata
[   1.1250 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatefields Odmdata =0xa4000
[   1.1255 ] Warning: No sdram params
[   1.1256 ]
[   1.1257 ] Get Signed section of bct
[   1.1261 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[   1.1267 ]
[   1.1267 ] Signing BCT
[   1.1278 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[   1.1283 ] Assuming zero filled SBK key
[   1.1286 ]
[   1.1286 ] Updating BCT with signature
[   1.1291 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[   1.1298 ]
[   1.1298 ] Sending BCTs
[   1.1303 ] tegrarcm --download bct P3448_A00_lpddr4_204Mhz_P987.bct
[   1.1308 ] Applet version 00.01.0000
[   1.1410 ] Sending bct
[   1.1411 ] [................................................] 100%
[   1.3055 ]
[   1.3056 ] Retrieving storage infomation
[   1.3064 ] tegrarcm --oem platformdetails storage storage_info.bin
[   1.3071 ] Applet version 00.01.0000
[   1.3200 ] Saved platform info in storage_info.bin
[   1.4038 ]
[   1.4038 ] Sending bootloader and pre-requisite binaries
[   1.4046 ] tegrarcm --download ebt cboot.bin 0 0 --download rp1 kernel_tegra210-p3448-0002-p3449-0000-b00.dtb 0
[   1.4052 ] Applet version 00.01.0000
[   1.4182 ] Sending ebt
[   1.5403 ]
Error: Return value 1
Command tegrarcm --download ebt cboot.bin 0 0 --download rp1 kernel_tegra210-p3448-0002-p3449-0000-b00.dtb 0
*** The [APP] has been read successfully. ***
        Converting RAW image to Sparse image... mv: cannot stat '/home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/backup.img': No such file or directory
open input file /home/user/toolchains/jetson-toolchain/jetson-builds/tmp-nano-toolchain/work-shared/L4T-tegra210-32.5.2-r0/Linux_for_Tegra/backup.img.raw failed.

Meanwhile the UART shows:

[0002.688] Processing in recovery mode
[0002.692] A02 Bootrom Patch rev = 1023
[0002.695] Power-up reason: pmc por
[0002.699] Established communication link with host
[0003.672] NvTbootI2cWrite(): error code 0x00045100 Error while starting write transaction
[0003.680] NvTbootI2cDeviceRead(): error code 0x00045001 Error while sending the offset to slave
[0003.688] NvTbootI2c: Read failed for slave 0xac, offset 0x00 with error code 0x00045001
[0002.463] Enabled early print
▒5X▒▒▒$u▒▒6iZ▒▒▒s|▒▒t▒▒▒̚r▒$I▒▒▒▒5▒▒T2▒▒F▒u▒}oG▒#▒bm"▒P▒ȣ▒▒▒e$▒u▒▒▒▒^▒▒Y<_'4"▒▒96F▒w▒▒▒3▒H▒$▒A▒
                                                                          Pך=▒@H▒Hq@v>@▒▒J▒▒-&0eSm▒▒i
!vu}▒"'▒▒▒▒▒    ▒t▒?v▒/▒hϾ▒sc2▒5▒
                                 ▒8r▒[▒nm
(▒▒▒9!▒6.▒▒0) 6/▒\▒▒9▒▒▒~▒▒ﹺG!▒▒▒▒▒{j`▒)
[0002.494] Processing in recovery mode
[0002.497] A02 Bootrom Patch rev = 1023
[0002.501] Power-up reason: software reset
[0002.504] Established communication link with host
[0003.562] Odmdata from BCT: 0x000a4000
[0003.565] DebugPort= 0x3
[0003.568] SkipQspiOnly= 0x0
[0003.620] BoardId read from EEPROM/NCT: 3448
[0003.624] BoardID = 3448, SKU = 0x2
[0003.651] NvTbootInit_Porg: Setting GPIO_A6 for HDMI ...
[0003.656] max77620 setting MBLPD bit
[0003.660] No Battery Present
[0003.662] RamCode = 0
[0003.665] Platform has DDR4 type RAM
[0003.668] max77620 disabling SD1 Remote Sense
[0003.672] Setting DDR voltage to 1125mv
[0003.676] Serial Number of Pmic Max77663: 0x1417f3
[0003.684] Entering ramdump check
[0003.687] Get RamDumpCarveOut = 0x0
[0003.690] RamDumpCarveOut=0x0,  RamDumperFlag=0xe59ff3f8
[0003.695] Last reboot was clean, booting normally!
[0003.700] Sdram initialization failed with 0x3
[0003.704] Downloaded BCT successfully
[0003.794] Csd NumOfBlocks=0

Hi,
The purpose is to save the important data out before re-flashing Jetson Nano. So please mount clone.img.raw to your host PC and see if you can access the important data. And then save the data out

As stated before, the process fails before it is able to retrieve an image from the device.

I want to know if it’s possible to run this process without actually utilising the main processor, i.e. can the boot & power management processor access the eMMC?

sorry, not possible.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.