About how to create a nvidia nano image support B01 and A02

hi, our customers have both B01 and A02 nano module,
and we build the image using like this:
tools/jetson-disk-image-creator.sh -o $SystemOSImgPath -b jetson-nano -r 100
it run well in A02 with 100, but I tried 200 and 300, both them cannot boot A01.
I hope I can get some tips on building image for B01 and A02, just like the official image.

2 Likes

Could you check what dtb you are using on A02 and B01 boards?

tegra210-p3448-0000-p3449-0000-a01.dtb

Hi.

Are you sure this dtb can work for B01 board?

emmm I mean I want to know how the offical image(jetson-nano-developer-kit-sd-card-image.zip ) can work on B01 and A01 without any change . and the dtb is included by the script ( jetson-disk-image-creator.sh )

Hi,

Why do you said “B01” and “A02” first and then “B01” and “A01”? Which kind of board are your using exactly?

Please flash your board with sdkmanager first and see which dtb is in use on these different boards.

sorry, my mistake. actually, both them are in use. we want to build an image can use in BO1(sd card module) and A02 (sd card module)
and ,ok, I am going to check which dtb is used in B01 image.
thanks.

I got the same question, the issue is how official SD card image is created if I want to use " jetson-disk-image-creator.sh" is L4T. I know it might work with SDK manager, but I want to use command line tools for the build process instead of GUI. I used L4T and SampleRootfs to build the SD card image from scratch. Is there any clear guide about this? The script does not even has a revision for B01 board? (I am using latest l4t package: Tegra210_Linux_R32.4.3_aarch64.tbz2)

$ ./tools/jetson-disk-image-creator.sh --help


 Jetson Disk Image Creation Tool     

ERROR: This script requires root privilege
Usage:
jetson-disk-image-creator.sh -o <sd_blob_name> -b -r
sd_blob_name - valid file name
board - board name. Supported boards are:
jetson-nano
jetson-xavier-nx-devkit
revision - SKU revision number
jetson-nano: 100/200/300 for A01/A02/B00
jetson-xavier-nx-devkit: default
Example:
jetson-disk-image-creator.sh -o sd-blob.img -b jetson-nano -r 300
jetson-disk-image-creator.sh -o sd-blob.img -b jetson-xavier-nx-devkit

Are you trying to do mass production or just want to try the script for B01?

mass production to custom rootfs, hoping to support different board like the official SD card image.

Hi Sidney,

The emmc based module is the one for mass production use but not the sdcard based.
Thus, if you want to do mass production, we hope you to use emmc module…

sdcard based module only works on Nano devkit.

I do not need emmc module in my case. I just need to customize the rootfs for devkit. Please could you please confirm how to create SD card image (for Nano devkit) using l4t package (jetson-disk-image-creator.sh)?

Hi,

It should work if you use the B00 one.

I’ve tried and setting -r 300 (B00) does not work for B01 (it works for A02 devkit). Could you please clarify how to generate disk image for B01 using “jetson-disk-image-creator.sh”??? Why there is even no such option value in jetson-disk-image-creator.sh for B01?

Hi,

What is the dtb running on A02 and what is that one running on B01? Have you checked that?

No, but I just download official l4t, sample rootfs, build image with ‘jetson-disk-image-creator.sh -o <sd_blob_name> -b -r 300’, flash img to SD card. Why do I need to check DTB and how? I guess maybe the latest “jetson-disk-image-creator.sh” script does not support B01 yet? Ignore the A02 stuff first, currently, I have no any command to generate image for B01 using jetson-disk-image-creator.sh (it only list 100 for A01, 200 for A02, 300 for B00).

Hi,

Because there is not really big software difference between A02 or B01 board, the only difference is the DTB they are using.

Please check the board config file p3448-0000.conf.common and the function.

 32 process_board_version()
 33 {
 34         local board_id="${1}";
 35         local board_version="${2}";
 36         local board_sku="${3}";
 37         local bdv=${board_version^^};
 38         local bid=${board_id^^};
 39 
 40         echo "Board ID(${board_id}) version(${board_version}) " >/dev/stderr;
 41 
 42         if [ "${bdv}" \< "100" ]; then
 43                 dtbfab=a00;
 44         elif [ "${bdv}" \< "200" ]; then
 45                 dtbfab=a01;
 46         elif [ "${bdv}" \< "300" ]; then
 47                 dtbfab=a02;
 48         else
 49                 dtbfab=b00;
 50         fi
 51 
 52         if [ "${board_sku}" = "" ]; then
 53                 board_sku="0000";
 54         fi;
 55         DTB_FILE=tegra210-p3448-${board_sku}-p3449-0000-${dtbfab}.dtb;
 56 }

As you can see, for every board that has bdv >=300, we all use the dtbfab b00. Otherwise, we use A02 or A01.
This rule is applied to disk image creator too.

Please share the boot up log of your B01 board + sd image for us to check what is the exact error.

From the build log, it is using below dtb (tegra210-p3448-0000-p3449-0000-b00.dtb):
./tegraflash.py --bl cboot.bin --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg --odmdata 0x94000 --bldtb tegra210-p3448-0000-p3449-0000-b00.dtb --applet nvtboot_recovery.bin --cmd “sign” --cfg flash.xml --chip 0x21 --bins “EBT cboot.bin; DTB tegra210-p3448-0000-p3449-0000-b00.dtb”

And the result is there is no boot log at all, and just stuck at the Nvidia logo page when boot. So it is hard for me to debug.

The whole build & flash process is just as below:

  1. download l4t using wget: https://developer.nvidia.com/embedded/L4T/r32_Release_v4.3/t210ref_release_aarch64/Tegra210_Linux_R32.4.3_aarch64.tbz2

  2. download sample rootfs using wget:
    https://developer.nvidia.com/embedded/L4T/r32_Release_v4.3/t210ref_release_aarch64/Tegra_Linux_Sample-Root-Filesystem_R32.4.3_aarch64.tbz2

  3. extract them

  4. Run below commands:
    < l4t >/apply_binaries.sh -r < rootfs >
    ROOTFS_DIR=< rootfs > < l4t >/tools/jetson-disk-image-creator.sh -o test.img -b jetson-nano -r 300

  5. flash the image
    dd bs=4M if=test.img of=/dev/xxxx conv=fsync status=progress

Just a basic process to generate SD card image and flash to boot. Thanks for your help, please check what I am missing and if any more info should be provided.

Below are the boot log from debug serial:

[0006.069] Updated board info to DTB
[0006.073] “pmu-board” doesn’t exist, creating
[0006.078] Updated board info to DTB
[0006.081] “display-board” doesn’t exist, creating
[0006.087] Updated board info to DTB
[0006.090] “reset” doesn’t exist, creating
[0006.095] Updated reset info to DTB
[0006.098] Cmdline: 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,2 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 tegra_fbmem=0x800000@0x92cb4000 is_hdmi_initialised=1
[0006.137] DTB cmdline: earlycon=uart8250,mmio32,0x70006000
[0006.143] boot image cmdline: root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0
[0006.156] Updated bootarg info to DTB
[0006.160] Adding uuid 0000000164456803080000000f000500 to DT
[0006.165] Adding eks info 0 to DT
[0006.171] WARNING: Failed to pass NS DRAM ranges to TOS, err: -7
[0006.177] Updated memory info to DTB
[0006.185] set vdd_core voltage to 1075 mv
[0006.189] setting ‘vdd-core’ regulator to 1075000 micro volts
[0006.205] Found secure-pmc; disable BPMP

U-Boot 2016.07-ge6da093be3 (Jun 25 2020 - 21:18:08 -0700)

TEGRA210
Model: NVIDIA P3450-Porg
Board: NVIDIA P3450-PORG
DRAM: 4 GiB
MMC: Tegra SD/MMC: 0, Tegra SD/MMC: 1
SF: Detected MX25U3235F with page size 256 Bytes, erase size 4 KiB, total 4 MiB
*** Warning - bad CRC, using default environment

In: serial
Out: serial
Err: serial
Net: No ethernet found.
MMC: no card present
** Bad device mmc 1 **
Hit any key to stop autoboot: 0
MMC: no card present
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
BOOTP broadcast 2
BOOTP broadcast 3
BOOTP broadcast 4
BOOTP broadcast 5
BOOTP broadcast 6
BOOTP broadcast 7
BOOTP broadcast 8
BOOTP broadcast 9
BOOTP broadcast 10

I searched the error “MMC: no card present” and got below:

But for my case, the same board can boot with official SD card image, and the same SD card can work to boot my another A02 board. So, the board and the SD card should not be an issue here. (I tried many times to confirm already.) Any other reason for this? Thanks.