How to flash Jetson nano emmc with my custom carrier board?

Hi,

I want to flash a Jetson nano emmc (p3448-0020) with my custom board. But I have this failure below. How can I fix this? Is this failure related to EEPROM? There is no EEPROM in my custom board.

Using this comand: sudo ./flash.sh jetson-nano-emmc mmcblk0p1

###############################################################################

L4T BSP Information:

R32 , REVISION: 5.0

###############################################################################

Target Board Information:

Name: jetson-nano-emmc, Board Family: t210ref, SoC: Tegra 210,

OpMode: production, Boot Authentication: ,

Disk encryption: disabled ,

###############################################################################
./tegraflash.py --chip 0x21 --applet “/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/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.0212 ] Generating RCM messages
[ 0.0238 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[ 0.0265 ] RCM 0 is saved as rcm_0.rcm
[ 0.0452 ] RCM 1 is saved as rcm_1.rcm
[ 0.0452 ] List of rcm files are saved in rcm_list.xml
[ 0.0452 ]
[ 0.0453 ] Signing RCM messages
[ 0.0568 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0596 ] Assuming zero filled SBK key
[ 0.1083 ]
[ 0.1084 ] Copying signature to RCM mesages
[ 0.1118 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[ 0.1160 ]
[ 0.1162 ] Boot Rom communication
[ 0.1194 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[ 0.1223 ] RCM version 0X210001
[ 0.1683 ] Boot Rom communication completed
[ 1.1758 ]
[ 1.1760 ] dump EEPROM info
[ 1.1795 ] tegrarcm --oem platformdetails eeprom /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/cvm.bin
[ 1.1824 ] Applet version 00.01.0000
[ 1.1860 ] Saved platform info in /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/cvm.bin
[ 1.2627 ]
[ 1.2660 ] tegrarcm --reboot recovery
[ 1.2687 ] Applet version 00.01.0000
[ 1.2858 ]
Parsing board information failed.

The flash process reads the board on module but not carrier board.

Please verify if this module can be flashed with B01 devkit. If it can, then it is not EEPROM problem.

Please dump the flash log from device side through UART.

https://elinux.org/Jetson/General_debug

1 Like

Hi @WayneWWW,

Thank’s for your reply. I don’t have a B01 devkit here, but, I will try to buy one, in the meantime, I’m trying to use my custom carrier board.

This is the log through UART when the “Parsing board information failed” happens.

[0348.297] Enabled early print
[0348.300] [L4T TegraBoot] (version �^���\�ǿ��Q�����v����ŕ������� )
[0348.306] Processing in recovery mode
[0348.309] A02 Bootrom Patch rev = 1023
[0348.313] Power-up reason: pmc por
[0348.316] Established communication link with host
[0349.320] NvTbootI2cWrite(): error code 0x00045100 Error while starting write transaction
[0349.328] NvTbootI2cDeviceRead(): error code 0x00045001 Error while sending the offset to slave
[0349.336] NvTbootI2c: Read failed for slave 0xac, offset 0x00 with error code 0x00045001

So, I tried these steps.

  • I put this commands “SKIP_EEPROM_CHECK=”-n";" in the “jetson-nano-emmc.conf” file.

  • I set this variables “dtbfab=b00;” and “board_sku=“0002”;” in the “p3448-0000.conf.common”. So, the dtb “tegra210-p3448-0002-p3449-0000-b00.dtb” is used.

Now, the “Parsing board information failed” not happens, but, I have another failure, look at the log below. Do you have any suggestions? Are the above steps correct?

Using this comand: sudo ./flash.sh jetson-nano-emmc mmcblk0p1

###############################################################################

L4T BSP Information:

R32 , REVISION: 5.0

###############################################################################

Target Board Information:

Name: jetson-nano-emmc, Board Family: t210ref, SoC: Tegra 210,

OpMode: production, Boot Authentication: ,

Disk encryption: disabled ,

###############################################################################
./tegraflash.py --chip 0x21 --applet “/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/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.0014 ] Generating RCM messages
[ 0.0021 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[ 0.0026 ] RCM 0 is saved as rcm_0.rcm
[ 0.0029 ] RCM 1 is saved as rcm_1.rcm
[ 0.0029 ] List of rcm files are saved in rcm_list.xml
[ 0.0029 ]
[ 0.0029 ] Signing RCM messages
[ 0.0034 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0040 ] Assuming zero filled SBK key
[ 0.0077 ]
[ 0.0077 ] Copying signature to RCM mesages
[ 0.0082 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[ 0.0090 ]
[ 0.0091 ] Boot Rom communication
[ 0.0096 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[ 0.0101 ] RCM version 0X210001
[ 0.0521 ] Boot Rom communication completed
[ 1.0601 ]
[ 1.0603 ] dump EEPROM info
[ 1.0641 ] tegrarcm --oem platformdetails eeprom /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/cvm.bin
[ 1.0671 ] Applet version 00.01.0000
[ 1.0871 ] Saved platform info in /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/cvm.bin
[ 1.1645 ]
[ 1.1682 ] tegrarcm --reboot recovery
[ 1.1711 ] Applet version 00.01.0000
[ 1.1745 ]
Board ID() version()
copying bctfile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_lpddr4_204Mhz_P987.cfg)… done.
copying bootloader(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/cboot.bin)… done.
copying initrd(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/l4t_initrd.img)… done.
populating kernel to rootfs… done.
populating initrd to rootfs… done.
populating /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0002-p3449-0000-b00.dtb to rootfs… done.
Making Boot image… done.
Existing sosfile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)… done.
copying cpu_bootloader(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/cboot.bin)… done.
copying bpffile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)… done.
Existing badpagefile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/badpage.bin) reused.
copying wb0boot(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)… done.
Existing tosfile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0002-p3449-0000-b00.dtb)… done.
Copying nv_boot_control.conf to rootfs
Making system.img…
populating rootfs from /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/rootfs … done.
populating /boot/extlinux/extlinux.conf … done.
Sync’ing system.img … done.
Converting RAW image to Sparse image… done.
system.img built successfully.
Existing tbcfile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0002-p3449-0000-b00.dtb)… done.
copying cfgfile(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_emmc_p3448.xml) to flash.xml… done.
copying flasher(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/t210ref/cboot.bin)… done.
Existing flashapp(/home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/tegraflash.py) reused.
./tegraflash.py --bl cboot.bin --bct P3448_A00_lpddr4_204Mhz_P987.cfg --odmdata 0xa4000 --bldtb kernel_tegra210-p3448-0002-p3449-0000-b00.dtb --applet nvtboot_recovery.bin --cmd “flash; reboot” --cfg flash.xml --chip 0x21 --bins “EBT cboot.bin; DTB tegra210-p3448-0002-p3449-0000-b00.dtb”
saving flash command in /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/flashcmd.txt
saving Windows flash command to /home/rene/image-box/nvidia/nvidia_sdk/JetPack_4.5_Linux_JETSON_NANO/Linux_for_Tegra/bootloader/flash_win.bat
*** Flashing target device started. ***
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.0954 ] tegrasign --key None --getmode mode.txt
[ 0.0986 ] Assuming zero filled SBK key
[ 0.5519 ]
[ 0.5523 ] Generating RCM messages
[ 0.5672 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[ 0.5706 ] RCM 0 is saved as rcm_0.rcm
[ 0.7965 ] RCM 1 is saved as rcm_1.rcm
[ 0.7966 ] List of rcm files are saved in rcm_list.xml
[ 0.7966 ]
[ 0.7967 ] Signing RCM messages
[ 0.8003 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.8034 ] Assuming zero filled SBK key
[ 0.8226 ]
[ 0.8226 ] Copying signature to RCM mesages
[ 0.8252 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[ 0.8441 ]
[ 0.8443 ] Parsing partition layout
[ 0.9615 ] tegraparser --pt flash.xml.tmp
[ 1.0252 ]
[ 1.0254 ] Creating list of images to be signed
[ 1.2205 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[ 1.3048 ]
[ 1.3050 ] Generating signatures
[ 1.3085 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[ 1.3120 ] Assuming zero filled SBK key
[ 1.4730 ]
[ 1.4730 ] Generating br-bct
[ 1.5101 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[ 1.5132 ] Copying Sdram info from 2 to 3 set
[ 1.5500 ]
[ 1.5501 ] Updating boot device parameters
[ 1.5531 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[ 1.5565 ] Warning: No sdram params
[ 1.5571 ]
[ 1.5572 ] Updating bl info
[ 1.5600 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[ 1.5650 ]
[ 1.5652 ] Updating secondary storage information into bct
[ 1.5681 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_lpddr4_204Mhz_P987.bct
[ 1.5717 ]
[ 1.5719 ] Updating Odmdata
[ 1.5749 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatefields Odmdata =0xa4000
[ 1.5783 ] Warning: No sdram params
[ 1.5788 ]
[ 1.5789 ] Get Signed section of bct
[ 1.5816 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[ 1.5847 ]
[ 1.5849 ] Signing BCT
[ 1.5916 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[ 1.5943 ] Assuming zero filled SBK key
[ 1.5963 ]
[ 1.5963 ] Updating BCT with signature
[ 1.5990 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[ 1.6027 ]
[ 1.6029 ] Copying signatures
[ 1.6059 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[ 1.6371 ]
[ 1.6373 ] Updating BFS information on BCT
[ 1.6410 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatebfsinfo flash.xml.bin
[ 1.6437 ] BFS:
[ 1.6476 ] 0: [PT ] flash.xml.bin (size=4367/131072)
[ 1.6487 ] 1: [TBC] nvtboot_cpu.bin.encrypt (size=65760/196608)
[ 1.6499 ] 2: [RP1] kernel_tegra210-p3448-0002-p3449-0000-b00.dtb.encrypt (size=244352/1048576)
[ 1.6513 ] 3: [EBT] cboot.bin.encrypt (size=485120/655360)
[ 1.6520 ] 4: [WB0] warmboot.bin.encrypt (size=3952/131072)
[ 1.6529 ] 5: [BPF] sc7entry-firmware.bin.encrypt (size=3376/262144)
[ 1.6540 ] BFS0: 131072 @ 2560 SUM abfb6379 over 2883584 bytes
[ 1.6550 ] BFS:
[ 1.6552 ] 0: [PT-1] flash.xml.bin (size=4367/131072)
[ 1.6560 ] 1: [TBC-1] nvtboot_cpu.bin.encrypt (size=65760/196608)
[ 1.6569 ] 2: [RP1-1] kernel_tegra210-p3448-0002-p3449-0000-b00.dtb.encrypt (size=244352/1048576)
[ 1.6578 ] 3: [EBT-1] cboot.bin.encrypt (size=485120/655360)
[ 1.6583 ] 4: [WB0-1] warmboot.bin.encrypt (size=3952/131072)
[ 1.6587 ] 5: [BPF-1] sc7entry-firmware.bin.encrypt (size=3376/262144)
[ 1.6593 ] 8: [VER_b] emmc_bootblob_ver.txt (size=91/32768)
[ 1.7381 ] 9: [VER] emmc_bootblob_ver.txt (size=91/32768)
[ 1.7393 ] BFS1: 131072 @ 8704 SUM abfb6379 over 2981888 bytes
[ 1.7405 ] KFS:
[ 1.7983 ] 0: [DTB] kernel_tegra210-p3448-0002-p3449-0000-b00.dtb.encrypt (size=244352/1048576)
[ 1.7988 ] 1: [TOS] tos-mon-only.img.encrypt (size=54208/6291456)
[ 1.7992 ] 2: [EKS] eks.img (size=1028/81920)
[ 1.8266 ] 3: [LNX] boot.img.encrypt (size=661504/67092480)
[ 1.8271 ] KFS0: 1048576 @ 29376546 SUM 2512d27b over 8083456 bytes
[ 1.8316 ] KFS:
[ 1.8586 ] 0: [DTB-1] kernel_tegra210-p3448-0002-p3449-0000-b00.dtb.encrypt (size=244352/1048576)
[ 1.8592 ] 1: [TOS-1] tos-mon-only.img.encrypt (size=54208/6291456)
[ 1.8596 ] 2: [EKS-1] eks.img (size=1028/81920)
[ 1.8599 ] 3: [LNX-1] boot.img.encrypt (size=661504/67092480)
[ 1.8603 ] KFS1: 1048576 @ 29522082 SUM 2512d27b over 8083456 bytes
[ 1.8631 ]
[ 1.8631 ] Boot Rom communication
[ 1.8639 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[ 1.8646 ] BR_CID: 0x32101001644612850c0000000afe85c0
[ 1.8653 ] RCM version 0X210001
[ 1.8798 ] Boot Rom communication completed
[ 2.8878 ]
[ 2.8879 ] Sending BCTs
[ 2.8912 ] tegrarcm --download bct P3448_A00_lpddr4_204Mhz_P987.bct
[ 2.8942 ] Applet version 00.01.0000
[ 2.8977 ] Sending bct
[ 2.8980 ] […] 100%
[ 2.9831 ]
[ 2.9867 ] tegrahost --chip 0x21 --align cboot.bin
[ 2.9903 ]
[ 2.9938 ] tegrahost --magicid EBT --appendsigheader cboot.bin cboot.bin_blheader
[ 3.0019 ]
[ 3.0063 ] tegrasign --key None --list cboot.bin_list.xml
[ 3.0100 ] Assuming zero filled SBK key
[ 3.0392 ]
[ 3.0405 ] tegrahost --updatesigheader cboot.bin_blheader.encrypt cboot.bin_blheader.hash zerosbk
[ 3.0426 ]
[ 3.0450 ] tegrahost --chip 0x21 --align tegra210-p3448-0002-p3449-0000-b00.dtb
[ 3.0466 ]
[ 3.0476 ] tegrahost --magicid DTB --appendsigheader tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dtb_blheader
[ 3.0493 ]
[ 3.0504 ] tegrasign --key None --list tegra210-p3448-0002-p3449-0000-b00.dtb_list.xml
[ 3.0512 ] Assuming zero filled SBK key
[ 3.0578 ]
[ 3.0596 ] tegrahost --updatesigheader tegra210-p3448-0002-p3449-0000-b00.dtb_blheader.encrypt tegra210-p3448-0002-p3449-0000-b00.dtb_blheader.hash zerosbk
[ 3.0615 ]
[ 3.0619 ] Sending bootloader and pre-requisite binaries
[ 3.0632 ] tegrarcm --download ebt cboot.bin.encrypt 0 0 --download rp1 tegra210-p3448-0002-p3449-0000-b00.dtb.encrypt 0
[ 3.0641 ] Applet version 00.01.0000
[ 3.0811 ] Sending ebt
[ 3.1468 ]
Error: Return value 1
Command tegrarcm --download ebt cboot.bin.encrypt 0 0 --download rp1 tegra210-p3448-0002-p3449-0000-b00.dtb.encrypt 0
Failed flashing t210ref.

Log from device side through UART:

[2059.322] Enabled early print
[2059.325] [L4T TegraBoot] (version �^���\�ǿ��Q�v���������ŕ������� )
[2059.331] Processing in recovery mode
[2059.334] A02 Bootrom Patch rev = 1023
[2059.338] Power-up reason: software reset
[2059.342] Established communication link with host
[2060.346] NvTbootI2cWrite(): error code 0x00045100 Error while starting write transaction
[2060.354] NvTbootI2cDeviceRead(): error code 0x00045001 Error while sending the offset to slave
[2060.362] NvTbootI2c: Read failed for slave 0xac, offset 0x00 with error code 0x00045001
[0559.775] Enabled early print
[0559.777] [L4T TegraBoot] (version �^���\�ǿ��Q�v���������ŕ������� )
[0559.783] Processing in recovery mode
[0559.787] A02 Bootrom Patch rev = 1023
[0559.790] Power-up reason: software reset
[0559.794] Established communication link with host
[0560.765] Odmdata from BCT: 0x000a4000
[0560.768] DebugPort= 0x3
[0560.771] SkipQspiOnly= 0x0
[0560.823] EEPROM CRC failed. Calculated crc=0xac CRC stored = 0x88
[0560.828] Reading Board-Type unsuccessful
[0560.832] BoardId read from EEPROM/NCT: 0
[0560.836] Unsupported Platform 0
[0560.839] Downloaded BCT successfully

Hi,

Which module are you using ? Is it a B01 version of module with emmc on it?

@WayneWWW yes I’m using B01. Look at the picture

Do you follow the design guide? One i2c is needed for module to read eeprom from module. According to the log, it gives i2c error. If this module could be flashed on devkit, then it is probably the design issue.

1 Like

@WayneWWW I follow the design guide. Does the module use the pins PWR_I2C_SCL and PWR_I2C_SDA to eeprom comunication? These pins are not internal?

Is I2C2 used by module internal eeprom?

Yes, i2c2 is needed and eeprom read is necessary.

@WayneWWW It worked. I have a mac address IC connected on i2c2, I removed and it’s worked. Thank you.