Jetpack 5.0.1 flash process reports: "CPU Bootloader is not running on device."

Seriously, do you mean you also use “sudo ./flash.sh wolf-22xp-dp-revClk mmcblk0p1” to flash devkit?

yes

…So you didn’t flash devkit before?

Please use the existing board config to flash. Should be a config with nx-devkit-emmc. Not something customized by you.

Apologise. It’s my first time using the devkit.

So I changed the conf file in the flash command and that’s it. I didn’t rebuild anything. Just the flash command.

I don’t know how much customization you’ve done to your BSP. If you can give a clean setup, then it would be better.

Ok. I can do that.
In my current workspace I made some changes to the Rootfs, some specific .dts files and the tegra194-mb1-bct-misc-l4t.cfg and tegra194-mb1-bct-misc-flash.cfg as you instructed me.

Hi,
The command I used:
sudo ./flash.sh jetson-xavier-nx-devkit-emmc mmcblk0p1

I get the same issue:
dev_kit_flash_log (11.2 KB)

Following are the steps I performed:

  1. Vars & Exports:
BSP_BUILD_SOURCE_PATH=$BSP_BUILD_PATH/Source
TOOLCHAIN_PACKAGE=$BSP_BUILD_SOURCE_PATH/aarch64--glibc--stable-final.tar.gz
L4T_RELEASE_PACKAGE=$BSP_BUILD_SOURCE_PATH/Jetson_Linux_R34.1.1_aarch64.tbz2
SAMPLE_FS_PACKAGE=$BSP_BUILD_SOURCE_PATH/Tegra_Linux_Sample-Root-Filesystem_R34.1.1_aarch64.tbz2
PUBLIC_SOURCES=$BSP_BUILD_SOURCE_PATH/public_sources.tbz2

WORKSPACE_PATH=$BSP_BUILD_PATH/Workspace
KERNEL_OUT_PATH=$WORKSPACE_PATH/Out
TOOLCHAIN_INSTALL_PATH=$WORKSPACE_PATH/ToolChain

export CROSS_COMPILE_AARCH64_PATH=$TOOLCHAIN_INSTALL_PATH
export LOCALVERSION=-tegra
  1. Create Workspace
mkdir $WORKSPACE_PATH
mkdir $TOOLCHAIN_INSTALL_PATH
mkdir -p $KERNEL_OUT_PATH
tar xf $TOOLCHAIN_PACKAGE -C $TOOLCHAIN_INSTALL_PATH
tar xf $L4T_RELEASE_PACKAGE -C $WORKSPACE_PATH
sudo tar xpf $SAMPLE_FS_PACKAGE -C $WORKSPACE_PATH/Linux_for_Tegra/rootfs	
sudo tar -xjf $PUBLIC_SOURCES -C $BSP_BUILD_SOURCE_PATH/
cd $WORKSPACE_PATH/Linux_for_Tegra/source/
mkdir public
cd public
sudo tar -xjf $BSP_BUILD_SOURCE_PATH/Linux_for_Tegra/source/public/kernel_src.tbz2
  1. Build custom kernel and flash
cd $WORKSPACE_PATH/Linux_for_Tegra/source/public/kernel/kernel-5.10
sudo make ARCH=arm64 O=$KERNEL_OUT_PATH tegra_defconfig
sudo make ARCH=arm64 O=$KERNEL_OUT_PATH menuconfig
sudo make CROSS_COMPILE=$TOOLCHAIN_INSTALL_PATH/bin/aarch64-buildroot-linux-gnu- ARCH=arm64 O=$KERNEL_OUT_PATH -j2 
cd $WORKSPACE_PATH/Linux_for_Tegra/
sudo ./apply_binaries.sh
sudo ./flash.sh jetson-xavier-nx-devkit-emmc mmcblk0p1

Hi,

There are things that are not needed. For example, I only mean you just download the BSP and rootfs. Decompress them and then apply_binaries.sh and flash.

You don’t need to build kernel here.

My point is just try to use your host with default rootfs +BSP to flash the devkit. This could validate that whether your host is able to flash this module on devkit.

A more easier way is directly flash NX devkit with sdkmanager since sdkmanage will also do the same things (download BSP+ rootfs) on your host and flash.

And of course we are testing jp5.0.x version here.

Same thing.
I tries as you said: just expanding the BSP and RootFS , apply binaries and flashing.
dev_kit_flash_log (11.4 KB)

I didn’t use the sdkmanager. If you wish I can try it as well. (is there any guide for how to use it?)

Thanks

SDKM is much easier since it is just a GUI tool.

BTW, actually you are hitting different kind of error in each case. Have you tried another jetson nx module yet?

I didn’t try another module yet since I have needed data on it and I prefer to postpone this operation as much as possible until you’ll say we have to do it.

When I use the SDK The flashing process finish successfully.
This is the log:
dev_kit_flash_log (97.9 KB)

Oh ok, the previous command was wrong because you are using sdcard module. Thus, you need to use this one to flash your board. Cannot use emmc.

sudo ./flash.sh jetson-xavier-nx-devkit mmcblk0p1

Please validate this again with devkit. It shall pass the flash.

After this, please directly flash with your custom board with this default BSP and command, with cvb eeprom size to 0 in cfg file.

  1. The devkit flashing process with jetson-xavier-nx-devkit.cfg succeeded.

  2. Unfortunately I don’t know how to flash my custom board without creating its suitable .dtb first.
    I remember trying to flash it using its config file but it complained about missing dtb files.

for compiling the dtb from dts I need to modify the BSP and execute the command:
sudo make CROSS_COMPILE=$TOOLCHAIN_INSTALL_PATH/bin/aarch64-buildroot-linux-gnu- ARCH=arm64 O=$KERNEL_OUT_PATH -j2

Am I wrong?

No, I mean just use the same command which you flashed the devkit to flash your custom board.

“Flash” itself shall not really care about what dtb you feed. It may fail to boot later. But the flash itself may succeed.

No one says a custom board must use customized dtb to flash. Take boards from some other vendors for example, some vendors claim their board can be directly flashed by sdkmanager. As you know, sdkmanger won’t provide any custom dtb for them.

Hi Wayne,
The devkit flash succeeded but the nx module flash failed (same stuck problem).

I edited the files with eeprom.cvb_eeprom_read_size = 0 and used the command:
sudo ./flash.sh jetson-xavier-nx-devkit mmcblk0p1

flash log:
nx_flash_log (7.0 KB)

modified config files with cvb=0:
tegra194-mb1-bct-misc-flash.cfg (3.7 KB)
tegra194-mb1-bct-misc-l4t.cfg (3.8 KB)
tegra194-mb1-bct-misc-flash.cfg (3.7 KB)
tegra194-mb1-bct-misc-l4t.cfg (3.8 KB)

(2 pairs because they exists in:
Linux_for_Tegra/bootloader and Linux_for_Tegra/bootloader/t186ref/BCT

You mean the NX module failed when using your custom board, right?

Devkit has NX module too.

Yes. on my custom board. The flashing process fails.

Is the log you just dumped still with a sdcard based module? The error log is changed again.

Are you sure you are using the same module on devkit and then swapped to your custom board in this test?

I mean please make sure whether you are using a emmc module or sdcard based module. If you are not sure, please also tell.

I’m pretty sure they are not the same. the devkit module is based on a sdcard and the custom carrier board is based on emmc.

Just to make sure - is there any way I can verify it? (I can’t physically see the custom board nx module)

Ok then, just to make it easier to understand.

When you are using “jetson-xavier-nx-devkit-emmc” in flash.sh, it is obvious that this is for emmc.
And if you are using “jetson-xavier-nx-devkit”, then it is for sdcard.

Obviously, the log you just shared used the wrong command for flash emmc module.

Please flash it with correct command again. I didnt’ mean it will 100% succeed. I just want to say make sure the command is correct first.