How to use the Jetson Nano's Pinmux spreadsheet?

Hello.
I found new Jetson Nano’s update files.

-> Jetson Nano Developer Kit Users Pinmux Configuration Table New 1.0 2019/06/10

I tried to export DTS files, but I could not. I got a few “*.dtsi” files by this spreadsheet.

I could not get “.dts" files or ".dtb” files…

Anyone please tell me how to get the “dtb” files ???

Where I should copy this file to ?

I want to get functions(I2S, SPI, PWM and so on).

Maybe I guess… If I can get the “dts” files, I try to execute the command.
->dtc -I dts -O dtb -o xxxxxxxxxx.dtb xxxxxxxxxx.dts
->sudo ./flash.sh -r -k DTB jetson-nano-qspi-sd mmcblk0p1

This is my Nano’s pic :-)

devemin

hello devemin,

please refer to previous release documentation TX2 Configuring Pinmux GPIO and PAD for the steps to generate cfg file from pinmux spreadsheet.
thanks

Hello JerryChang.

Thanks a lot for your comment!

So I try the link, but I can’t find “pinmux-dts2cfg.py” in path “Linux_for_Tegra / kernel / pinmux /”. (L4T R32.1.0)

Did I have to download R28 ? Is the old version worked for R32?

And I don’t understand that why I use “cfg” file for alternation of “dts” .

Should I use “cfg” file ? Not “dts”?
( I guess that this way need to build kernel, “dtb” way didn’t need to build it.)

Thank you.

hello devemin,

nice catch, it seems we’ll need python scripts for Nano platforms.
we’ll investigate this internally, stay tuned.
thanks

Thank you for investivation and your busy time !

I’ll wait for it.

I like the Jetson’s platform :-)

hello devemin,

sorry, Nano platforms don’t need python scripts for conversions.
you have to update the kernel sources to modify the device tree settings,
for example, modify below to customize GPIO settings.
$TOP/kernel_src/hardware/nvidia/platform/t210b01/porg/kernel-dts/porg-platforms/tegra210b01-porg-p3448-a01-gpio-default.dtsi

hello JerryChang.

Thanks for Reply.

I tried it.
But I got Errors. (Some fix goes to success compilation. but I don’t know is it correct…)

Can you give me some advices ?

  1. Downloaded files from https://developer.nvidia.com/embedded/dlc/l4t-sources-32-1-jetson-nano

  2. I used the spreadsheet, And I exported 2 *.dtsi files.
    (with Jetson_Nano_DeveloperKit_Users_Pinmux_Configuration.xlsm)

  3. I copied the files with overwriting to
    $TOP/public_sources/hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms
    -> tegra210-porg-gpio-p3448-0000-a02.dtsi
    -> tegra210-porg-pinmux-p3448-0000-a02.dtsi

  4. cd $TOP/public_sources/kernel/kernel-4.9
    zcat /proc/config.gz > .config
    make O=build/jetson-nano/ oldconfig
    make O=build/jetson-nano/ dtbs

    (“make Image” got same result.)

  5. I got this errors about “suspend_gpio”.
    (so I try Next 5’s modification.)

DTC arch/arm64/boot/dts/ddot/ddot/ddot/ddot/ddot/ddot/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02.dtb
ERROR (phandle_references): Reference to non-existent node or label “suspend_gpio”

ERROR (phandle_references): Reference to non-existent node or label “suspend_gpio”

ERROR: Input tree has errors, aborting (use -f to force output)
/home/masa/public_sources/kernel/kernel-4.9/arch/arm64/boot/dts/Makefile:120: recipe for target ‘arch/arm64/boot/dts/ddot/ddot/ddot/ddot/ddot/ddot/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02.dtb’ failed
make[2]: *** [arch/arm64/boot/dts/ddot/ddot/ddot/ddot/ddot/ddot/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-a02.dtb] Error 2
arch/arm64/Makefile:154: recipe for target ‘dtbs’ failed
make[1]: *** [dtbs] Error 2
make[1]: Leaving directory ‘/home/masa/public_sources/kernel/kernel-4.9/build/jetson-nano’
Makefile:171: recipe for target ‘sub-make’ failed
make: *** [sub-make] Error 2

  1. I modified and add “tegra210-porg-gpio-p3448-0000-a02.dtsi”, with “suspend_gpio”, I copy the code from default file.

    so I compiled successfully. but …

     suspend_gpio: system-suspend-gpio {
     		status = "okay";
     		gpio-hog;
     		output-low;
     		gpio-suspend;
     		gpios = <
     			TEGRA_GPIO(A, 6) 0
     			>;
     };
    
  2. I got the “dtb” files at $TOP/public_sources/kernel/kernel-4.9/build/jetson-nano/arch/arm64/boot/dts

    I have not written yet this file to Nano’s SD card.

I want to tell me that is this means correct ?

And Why did I get this errors about “suspend_gpio” with using official spreadsheet ?

I would appreciate your reply.
I apologize for the inconvenience, but thank you for your consideration.

devemin

I continued to try this. But the kernel did not boot up.

I copied the all of “*.dtb” files and kernel Image to SD card at path “/boot/”.

and then configured the “/boot/extlinux/extlinux.conf”

(ref:
https://elinux.org/Jetson/Nano/Upstream
https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide%2Fkernel_custom.html%23wwpID0ESHA
)

LABEL customdtb2
MENU LABEL customdtb2 kernel
LINUX /boot/Image2
FDT /boot/tegra210-p3448-0000-p3449-0000-a02.dtb
APPEND root=/dev/mmcblk0p1 rw rootwait

U-boot boot up, I selected the LABEL… I got this messages.

Enter choice: 3
3: customdtb2 kernel
Retrieving file: /boot/initrd
0 bytes read in 86 ms (0 Bytes/s)
Retrieving file: /boot/Image2
33914888 bytes read in 1598 ms (20.2 MiB/s)
append: tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4 root=/dev/mmcblk0p1 rw rootwait
Retrieving file: /boot/tegra210-p3448-0000-p3449-0000-a02.dtb
200856 bytes read in 97 ms (2 MiB/s)

Flattened Device Tree blob at 82000000

Booting using the fdt blob at 0x82000000
reserving fdt memory region: addr=80000000 size=20000
Using Device Tree in place at 0000000082000000, end 0000000082034097

Starting kernel …

Messages stopped and freeze.

I want README of the pinmux’s spreadsheet…

I was able to write the dtb files, and Nano boot.

I copied *.dtb file to Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb

sudo ./flash.sh --no-systemimg -k DTB jetson-nano-qspi-sd mmcblk0p1

boot, No edited extlinux.conf

sudo cat /sys/kernel/debug/tegra_gpio
then SPI’s CNF has changed.

ref:
https://devtalk.nvidia.com/default/topic/1050427/jetson-nano/enabling-spidev-on-the-jetson-nano-is-hanging-when-flashing/
https://www.rt-shop.jp/blog/archives/11277
https://github.com/rt-net/JetsonNano_DT_SPI

I don’t know yet this…

I want to tell me that is modifition with adding “suspend_gpio” means correct ? (#7 comments)

And Why did I get the errors about “suspend_gpio” with using official spreadsheet when building dtb files ?

Anyone can tell me this ?

hello devemin,

there’s known issue that pinmux spreadsheet is not align with public release sources. please expect next public release (l4t-r32.2) will fix this failure.

also, summarize the steps for using the Jetson Nano’s Pinmux spreadsheet.

  1. Download the pinmux spreadsheet from Jetson Download Center
  2. Generate the dtsi file from pinmux spreadsheet. (you’ll generate 2 dtsi files)
  3. Copy these dtsi files to the ubuntu host
  4. Download the kernel sources from Jetson Download Center
  5. un-tar the sources package
  6. overwriting dtsi files for building.

Hello JerryChang.

Grateful thanks for this.

I’ll expect L4T-r32.2.

I wish you the best.

Until R32.2, I will use this dtb instead of spreadsheet.

SPI :
https://devtalk.nvidia.com/default/topic/1050427/jetson-nano/enabling-spidev-on-the-jetson-nano-is-hanging-when-flashing/post/5338398/#5338398

I2S :
https://devtalk.nvidia.com/default/topic/1051776/jetson-nano/enabling-i2s-audio-output-on-40-pin-connector/

PWM :
No data.
Maybe we can use GPIO pin No.32(PM3_PWM0), No.33(PM3_PWM2).

ref: https://elinux.org/Jetson/PWM

Thanks.

devemin

Hi Jerry,

I noticed that “Jetson Nano Developer Kit 40-Pin Expansion Header Configuration” PDF was released yeaterday. Unfortunately, following the steps you get stuck at the error:

ERROR (phandle_references): Reference to non-existent node or label "suspend_gpio"

You mentioned that the error would be fixed with the release l4t-r32.2. When could we expect the release to take place? Is there any way to fix the problem before the release?

Thanks,

Kira

hello kira_canada,

please update the device tree manually, you should copy the code from the default file.
for example,

suspend_gpio: system-suspend-gpio {
 			status = "okay";
 			gpio-hog;
 			output-high;
 			gpio-suspend;
 			suspend-output-low;
 			gpios = <
 				TEGRA_GPIO(A, 6) 0
 				>;
 		};

we’re currently close to l4t-r32.2 release,
stay tuned.

Hi Jerry,

Thank you for information. I will stay tuned.

Best,

Kira

That’s quite the nano set up you have there. I don’t know if you’re connected to these guys (or if it might be you), but there’s a Japanese robotics shop that seems to be getting through many of these configurations as well.

https://github.com/rt-net/JetsonNano_DT_SPI
https://www.rt-shop.jp/blog/archives/11277

I’ve come across their GitHub page before, thank you for the pointer. Their scripts helped me get an I2S microphone to work on my Jetson.

Hello
i flashed dtb file successfully by following ‘Jetson Nano Developer Kit 40-Pin Expansion Header Configuration’ file

$ sudo ./flash.sh jetson-nano-qspi-sd mmcblk0p1
[sudo] password for hiworld: 
###############################################################################
# L4T BSP Information:
# R32 , REVISION: 2.0
###############################################################################
# Target Board Information:
# Name: jetson-nano-qspi-sd, Board Family: t210ref, SoC: Tegra 210, 
# OpMode: production, Boot Authentication: , 
###############################################################################
./tegraflash.py --chip 0x21 --applet "/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/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.0023 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   0.0032 ] RCM 0 is saved as rcm_0.rcm
[   0.0273 ] RCM 1 is saved as rcm_1.rcm
[   0.0273 ] List of rcm files are saved in rcm_list.xml
[   0.0273 ] 
[   0.0273 ] Signing RCM messages
[   0.0455 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0484 ] Assuming zero filled SBK key
[   0.0551 ] 
[   0.0551 ] Copying signature to RCM mesages
[   0.0559 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0571 ] 
[   0.0572 ] Boot Rom communication
[   0.0580 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[   0.0587 ] RCM version 0X210001
[   0.1021 ] Boot Rom communication completed
[   1.1096 ] 
[   1.1098 ] dump EEPROM info
[   1.1130 ] tegrarcm --oem platformdetails eeprom /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/cvm.bin
[   1.1163 ] Applet version 00.01.0000
[   1.1385 ] Saved platform info in /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/cvm.bin
[   1.2165 ] 
Board ID(3448) version(200) 
creating dummy /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/badpage.bin
1+0 records in
1+0 records out
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.000137433 s, 29.8 MB/s
copying bctfile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying initrd(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/l4t_initrd.img)... done.
	populating kernel to rootfs... done.
	populating initrd to rootfs... done.
	populating /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb to rootfs... done.
Making Boot image... done.
Existing sosfile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
Existing badpagefile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/badpage.bin) reused.
copying wb0boot(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb)... done.
Copying nv_boot_control.conf to rootfs
sed: can't read /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
sed: can't read /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/rootfs/etc/nv_boot_control.conf: Not a directory
Making system.img... 
	populating rootfs from /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/rootfs ... done.
	Sync'ing system.img ... done.
	Converting RAW image to Sparse image... 

---- Raw to Sparse Image Converter v1.0 ----------------------------
  0: RAW:     5242880(      5 blks) ==>          28:5242892
  1: SKP:    32505856(     31 blks) ==>     5242920:12
  2: RAW:     1048576(      1 blks) ==>     5242932:1048588
  3: SKP:    95420416(     91 blks) ==>     6291520:12
  4: RAW:     1048576(      1 blks) ==>     6291532:1048588
  5: SKP:     3145728(      3 blks) ==>     7340120:12
  6: RAW:     1048576(      1 blks) ==>     7340132:1048588
  7: SKP:     3145728(      3 blks) ==>     8388720:12
  8: RAW:    23068672(     22 blks) ==>     8388732:23068684
  9: SKP:     1048576(      1 blks) ==>    31457416:12
 10: RAW:     9437184(      9 blks) ==>    31457428:9437196
 11: SKP:   226492416(    216 blks) ==>    40894624:12
 12: RAW:     1048576(      1 blks) ==>    40894636:1048588
 13: SKP:   267386880(    255 blks) ==>    41943224:12
 14: RAW:     1048576(      1 blks) ==>    41943236:1048588
 15: SKP:   267386880(    255 blks) ==>    42991824:12
 16: RAW:     1048576(      1 blks) ==>    42991836:1048588
 17: SKP:   267386880(    255 blks) ==>    44040424:12
 18: RAW:     1048576(      1 blks) ==>    44040436:1048588
 19: SKP:   938475520(    895 blks) ==>    45089024:12
 20: RAW:     1048576(      1 blks) ==>    45089036:1048588
 21: SKP:  1206910976(   1151 blks) ==>    46137624:12
 22: RAW:     1048576(      1 blks) ==>    46137636:1048588
 23: SKP:   267386880(    255 blks) ==>    47186224:12
 24: RAW:     1048576(      1 blks) ==>    47186236:1048588
 25: SKP:   670040064(    639 blks) ==>    48234824:12
 26: RAW:     1048576(      1 blks) ==>    48234836:1048588
 27: SKP:  2146435072(   2047 blks) ==>    49283424:12
 28: RAW:     1048576(      1 blks) ==>    49283436:1048588
 29: SKP:   133169152(    127 blks) ==>    50332024:12
 30: RAW:     1048576(      1 blks) ==>    50332036:1048588
 31: SKP:     3145728(      3 blks) ==>    51380624:12
 32: RAW:     1048576(      1 blks) ==>    51380636:1048588
 33: SKP:  2008023040(   1915 blks) ==>    52429224:12
 34: RAW:     1048576(      1 blks) ==>    52429236:1048588
 35: SKP:  2146435072(   2047 blks) ==>    53477824:12
 36: RAW:     1048576(      1 blks) ==>    53477836:1048588
 37: SKP:    32505856(     31 blks) ==>    54526424:12
 38: RAW:     1048576(      1 blks) ==>    54526436:1048588
 39: SKP:    99614720(     95 blks) ==>    55575024:12
 40: RAW:     1048576(      1 blks) ==>    55575036:1048588
 41: SKP:     3145728(      3 blks) ==>    56623624:12
 42: RAW:     6291456(      6 blks) ==>    56623636:6291468
 43: SKP:  2002780160(   1910 blks) ==>    62915104:12
 44: RAW:     1048576(      1 blks) ==>    62915116:1048588
 45: SKP:  2146435072(   2047 blks) ==>    63963704:12
-- Total: ---------------------------------------------------
 46 CHUNK 15032385536(  14336 blks) ==>    63963716(61 blks)

done.
system.img built successfully. 
Existing tbcfile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb)... done.
copying cfgfile(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_spi_sd_p3448.xml) to flash.xml... done.
copying flasher(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/tegraflash.py) reused.
./tegraflash.py --bl cboot.bin --bct  P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg --odmdata 0x94000 --bldtb tegra210-p3448-0000-p3449-0000-a02.dtb --applet nvtboot_recovery.bin --cmd "flash; reboot"  --cfg flash.xml --chip 0x21    --bins "EBT cboot.bin; DTB tegra210-p3448-0000-p3449-0000-a02.dtb" 
saving flash command in /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/Linux_for_Tegra/bootloader/flashcmd.txt
saving Windows flash command to /home/hiworld/Downloads/pinmux/Jetson-210_Linux_R32.2.0_aarch64/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.0266 ] tegrasign --key None --getmode mode.txt
[   0.0295 ] Assuming zero filled SBK key
[   0.0300 ] 
[   0.0301 ] Generating RCM messages
[   0.0406 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[   0.0438 ] RCM 0 is saved as rcm_0.rcm
[   0.0502 ] RCM 1 is saved as rcm_1.rcm
[   0.0502 ] List of rcm files are saved in rcm_list.xml
[   0.0502 ] 
[   0.0503 ] Signing RCM messages
[   0.0530 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0557 ] Assuming zero filled SBK key
[   0.0746 ] 
[   0.0747 ] Copying signature to RCM mesages
[   0.0777 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0832 ] 
[   0.0833 ] Parsing partition layout
[   0.0867 ] tegraparser --pt flash.xml.tmp
[   0.0903 ] 
[   0.0905 ] Creating list of images to be signed
[   0.0942 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[   0.1411 ] 
[   0.1412 ] Generating signatures
[   0.1442 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[   0.1472 ] Assuming zero filled SBK key
[   0.2151 ] 
[   0.2152 ] Generating br-bct
[   0.2418 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[   0.2446 ] Copying Sdram info from 0 to 1 set
[   0.2520 ] Copying Sdram info from 1 to 2 set
[   0.2520 ] Copying Sdram info from 2 to 3 set
[   0.2520 ] 
[   0.2521 ] Updating boot device parameters
[   0.2567 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[   0.2600 ] Warning: No sdram params
[   0.2606 ] 
[   0.2607 ] Updating bl info
[   0.2634 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   0.2676 ] 
[   0.2677 ] Updating secondary storage information into bct
[   0.2705 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[   0.2736 ] 
[   0.2738 ] Updating Odmdata
[   0.2765 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatefields Odmdata =0x94000
[   0.2794 ] Warning: No sdram params
[   0.2799 ] 
[   0.2800 ] Get Signed section of bct
[   0.2833 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[   0.2876 ] 
[   0.2877 ] Signing BCT
[   0.2944 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[   0.2972 ] Assuming zero filled SBK key
[   0.2987 ] 
[   0.2987 ] Updating BCT with signature
[   0.3016 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[   0.3048 ] 
[   0.3050 ] Copying signatures
[   0.3077 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   0.3350 ] 
[   0.3351 ] Updating BFS information on BCT
[   0.3381 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatebfsinfo flash.xml.bin
[   0.3415 ] 
[   0.3416 ] Boot Rom communication
[   0.3446 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[   0.3478 ] BootRom is not running
[   0.3907 ] 
[   0.3908 ] Sending BCTs
[   0.3935 ] tegrarcm --download bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[   0.3962 ] Applet version 00.01.0000
[   0.4134 ] Sending bct
[   0.4138 ] [................................................] 100%
[   0.5862 ] 
[   0.5891 ] tegrahost --chip 0x21 --align cboot.bin
[   0.5927 ] 
[   0.5955 ] tegrahost --magicid EBT --appendsigheader cboot.bin cboot.bin_blheader
[   0.6022 ] 
[   0.6064 ] tegrasign --key None --list cboot.bin_list.xml
[   0.6102 ] Assuming zero filled SBK key
[   0.6483 ] 
[   0.6501 ] tegrahost --updatesigheader cboot.bin_blheader.encrypt cboot.bin_blheader.hash zerosbk
[   0.6519 ] 
[   0.6535 ] tegrahost --chip 0x21 --align tegra210-p3448-0000-p3449-0000-a02.dtb
[   0.6545 ] 
[   0.6555 ] tegrahost --magicid DTB --appendsigheader tegra210-p3448-0000-p3449-0000-a02.dtb tegra210-p3448-0000-p3449-0000-a02.dtb_blheader
[   0.6569 ] 
[   0.6579 ] tegrasign --key None --list tegra210-p3448-0000-p3449-0000-a02.dtb_list.xml
[   0.6587 ] Assuming zero filled SBK key
[   0.6649 ] 
[   0.6677 ] tegrahost --updatesigheader tegra210-p3448-0000-p3449-0000-a02.dtb_blheader.encrypt tegra210-p3448-0000-p3449-0000-a02.dtb_blheader.hash zerosbk
[   0.6688 ] 
[   0.6691 ] Sending bootloader and pre-requisite binaries
[   0.6698 ] tegrarcm --download ebt cboot.bin.encrypt 0 0 --download rp1 tegra210-p3448-0000-p3449-0000-a02.dtb.encrypt 0
[   0.6705 ] Applet version 00.01.0000
[   0.6893 ] Sending ebt
[   0.6896 ] [................................................] 100%
[   0.7980 ] Sending rp1
[   0.8026 ] [................................................] 100%
[   0.8532 ] 
[   0.8560 ] tegrarcm --boot recovery
[   0.8592 ] Applet version 00.01.0000
[   0.8773 ] 
[   0.8775 ] Retrieving storage infomation
[   0.8805 ] tegrarcm --oem platformdetails storage storage_info.bin
[   0.8831 ] Applet is not running on device. Continue with Bootloader
[   1.6252 ] 
[   1.6288 ] tegradevflash --oem platformdetails storage storage_info.bin
[   1.6305 ] Cboot version 00.01.0000
[   1.6322 ] Saved platform info in storage_info.bin
[   1.6387 ] 
[   1.6388 ] Flashing the device
[   1.6398 ] tegradevflash --pt flash.xml.bin --storageinfo storage_info.bin --create
[   1.6408 ] Cboot version 00.01.0000
[   1.6560 ] Writing partition GPT with gpt.bin
[   1.6565 ] [................................................] 100%
[   1.6624 ] Writing partition NVC with nvtboot.bin.encrypt
[  14.4059 ] [................................................] 100%
[  14.4157 ] Writing partition PT with flash.xml.bin
[  24.9144 ] [................................................] 100%
[  24.9184 ] Writing partition NVC_R with nvtboot.bin.encrypt
[  25.1686 ] [................................................] 100%
[  25.1831 ] Writing partition VER with qspi_bootblob_ver.txt
[  35.6971 ] [................................................] 100%
[  35.7190 ] Writing partition APP with system.img
[  35.9805 ] [................................................] 100%
[  38.2650 ] Writing partition TBC with nvtboot_cpu.bin.encrypt
[  45.2490 ] [................................................] 100%
[  45.2581 ] Writing partition RP1 with tegra210-p3448-0000-p3449-0000-a02.dtb.encrypt
[  45.3107 ] [................................................] 100%
[  45.3243 ] Writing partition EBT with cboot.bin.encrypt
[  45.3891 ] [................................................] 100%
[  45.4130 ] Writing partition WB0 with warmboot.bin.encrypt
[  45.4968 ] [................................................] 100%
[  45.5038 ] Writing partition BPF with sc7entry-firmware.bin.encrypt
[  45.5502 ] [................................................] 100%
[  45.5569 ] Writing partition TOS with tos-mon-only.img.encrypt
[  45.6009 ] [................................................] 100%
[  45.6102 ] Writing partition DTB with tegra210-p3448-0000-p3449-0000-a02.dtb.encrypt
[  45.6566 ] [................................................] 100%
[  45.6702 ] Writing partition LNX with boot.img.encrypt
[  45.7347 ] [................................................] 100%
[  45.7596 ] Warning: EKS partition magic header mismatch!
[  45.8356 ] Writing partition EKS with eks.img
[  45.8363 ] [................................................] 100%
[  45.8426 ] Writing partition BMP with bmp.blob
[  45.8898 ] [................................................] 100%
[  45.9086 ] Writing partition RP4 with rp4.blob
[  45.9569 ] [................................................] 100%
[  46.0276 ] 
[  46.0305 ] tegradevflash --write BCT P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[  46.0334 ] Cboot version 00.01.0000
[  46.0357 ] Writing partition BCT with P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[  46.0369 ] [................................................] 100%
[  52.6916 ] 
[  52.6917 ] Flashing completed

[  52.6918 ] Coldbooting the device
[  52.6948 ] tegradevflash --reboot coldboot
[  52.6974 ] Cboot version 00.01.0000
[  52.7006 ] 
*** The target t210ref has been flashed successfully. ***
Reset the board to boot from internal eMMC.

but nano would not boot,and the serial print the debug message as follow

U-Boot 2016.07 (Aug 02 2019 - 16:30:31 +0800)                                   
                                                                                
TEGRA210                                                                        
Model: NVIDIA P3450-Porg                                                        
Board: NVIDIA P3450-PORG                                                        
DRAM:  4 GiB                                                                    
MMC:   Tegra SD/MMC: 0, Tegra SD/MMC: 1                                         
Using default environment                                                       
                                                                                
In:    serial                                                                   
Out:   serial                                                                   
Err:   serial                                                                   
Net:   No ethernet found.                                                       
Card did not respond to voltage select!                                         
** Bad device mmc 1 **                                                          
Hit any key to stop autoboot:  0                                                
Card did not respond to voltage select!                                         
Card did not respond to voltage select!                                         
starting USB...                                                                 
USB0:   tegrausb: Invalid dr_mode 2 for host mode                               
probe failed, error -1                                                          
USB error: all controllers failed lowlevel init                                 
                                                                                
Warning: eth_rtl8169 MAC addresses don't match:                                 
Address in SROM is         00:e0:4c:68:04:60                                    
Address in environment is  00:04:4b:e5:0d:93                                    
BOOTP broadcast 1                                                               
*** Unhandled DHCP Option in OFFER/ACK: 213                                     
DHCP client bound to address 192.168.6.182 (16 ms)                              
*** Warning: no boot file name; using 'C0A806B6.img'                            
Using eth_rtl8169 device                                                        
TFTP from server 0.0.0.0; our IP address is 192.168.6.182; sending through gate1
Filename 'C0A806B6.img'.                                                        
Load address: 0x80080000                                                        
Loading: T T T T T T T T T T                                                    
Retry count exceeded; starting again                                            
missing environment variable: pxeuuid                                           
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/01-00-04-4b-e5-0d-93                              
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/C0A806B6                                          
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/C0A806B                                           
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/C0A806                                            
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/C0A80                                             
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/C0A8                                              
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/C0A                                               
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/C0                                                
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/C                                                 
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/default-arm-tegra210                              
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/default-arm                                       
*** ERROR: `serverip' not set                                                   
missing environment variable: bootfile                                          
Retrieving file: pxelinux.cfg/default                                           
*** ERROR: `serverip' not set                                                   
Config file not found                                                           
starting USB...                                                                 
USB0:   tegrausb: Invalid dr_mode 2 for host mode                               
probe failed, error -1                                                          
USB error: all controllers failed lowlevel init                                 
BOOTP broadcast 1                                                               
*** Unhandled DHCP Option in OFFER/ACK: 213                                     
DHCP client bound to address 192.168.6.182 (29 ms)                              
Using eth_rtl8169 device                                                        
TFTP from server 0.0.0.0; our IP address is 192.168.6.182; sending through gate1
Filename 'boot.scr.uimg'.                                                       
Load address: 0x90000000                                                        
Loading: T T T T T T T T T T                                                    
Retry count exceeded; starting again                                            
BOOTP broadcast 1                                                               
*** Unhandled DHCP Option in OFFER/ACK: 213                                     
DHCP client bound to address 192.168.6.182 (21 ms)                              
Using eth_rtl8169 device                                                        
TFTP from server 0.0.0.0; our IP address is 192.168.6.182; sending through gate1
Filename 'boot.scr.uimg'.                                                       
Load address: 0x80080000                                                        
Loading: T T T T T T T T T T                                                    
Retry count exceeded; starting again                                            
Tegra210 (P3450-Porg) #

what could i do next!!!

@ washiu hello, I think I may have the same problem as you. I asked support on the following link:

https://devtalk.nvidia.com/default/topic/1057627/jetson-nano/jetpack-4-2-1-spi/post/5367885/#5367885

Unfortunately, I do not have yet the serial cable for debug, so I could not go further to investigate. I should receive it soon, but in the meantime, I kind of have to rely on external support to diagnose.

I’ll have a look in more details to your log. Please let me know if you find anything on your side.

for info, what modification did you do to the pinmux spreadsheet: enable SPI? other outputs?

hello wahsiu,

could you please also share what’s the modification you had done.
thanks

@jerrychang

Ok, I now have a serial cable. I have something similar on the log.

Log when it doesn’t boot:

Err:   serial
Net:   No ethernet found.
Card did not respond to voltage select!
** Bad device mmc 1 **
Hit any key to stop autoboot:  0 
Card did not respond to voltage select!
Card did not respond to voltage select!
starting USB...
USB0:   tegrausb: Invalid dr_mode 2 for host mode
probe failed, error -1
USB error: all controllers failed lowlevel init
BOOTP broadcast 1

Log when it does boot (no modification of pinmux):

Err:   serial                                                                   
Net:   No ethernet found.                                                       
Hit any key to stop autoboot:  0                                                
switch to partitions #0, OK                                                     
mmc1 is current device                                                          
Scanning mmc 1:1...                                                             
Found /boot/extlinux/extlinux.conf                                              
Retrieving file: /boot/extlinux/extlinux.conf                                   
733 bytes read in 109 ms (5.9 KiB/s)                                            
L4T boot options                                                                
1:      primary kernel                                                          
Enter choice: 1:        primary kernel                                          
Retrieving file: /boot/initrd