Customizing the Cboot source code and then flashing

We are currently using the Jetpack 4.6.4 SDK on a Xavier NX . We want to optimize the boot time and have noticed the waiting time during the Cboot stage for auto boot and kernel selection.

So I downloaded the source code of cboot (cboot_src_t19x.tbz2 from Jetson Linux R32.7.4 | NVIDIA Developer)and compiled the lk according to the document CBoot_Standalone_Readme_t194.txt. I then placed it into the development environment. However, I am unable to enter the cboot stage successfully.
here is flashing log.
flash_cboot.txt (79.9 KB)
here is the boot log.
cboot_2023-10-23_11_02_30.log (33.5 KB)

“I noticed that when using the original cboot, there would be a log displaying ‘Welcome to cboot’ after the lk stage. However, when using the cboot I compiled myself, this log does not appear. May I ask how should I configure the cboot source code to ensure it can boot up properly on Xavier?”

Hi Ricardo_2007,

Are you using the devkit or custom board for Xavier NX?

Could your Xavier NX boot up successfully if you recover the <Linux_for_Tegra>/bootloader/nvtboot_cpu_t194.bin to original and use the following command to update again?

$ sudo ./flash.sh -r -k cpu-bootloader jetson-xavier-nx-devkit-emmc mmcblk0p1

Hi KevinFFF

thanks for your reply.

I relpace the cboot_t194.bin file not the nvtboot_cpu_t194.bin with the lk.bin whitch I compiled.

because I see the CBoot_Standalone_Readme_t194.txt below.

  1. Build the T194 CBoot binary, lk.bin, with the command:
    make -C ./bootloader/partner/t18x/cboot PROJECT=t194 TOOLCHAIN_PREFIX=“${CROSS_COMPILE}” DEBUG=2 BUILDROOT=“${PWD}”/out NV_TARGET_BOARD=t194ref NV_BUILD_SYSTEM_TYPE=l4t NOECHO=@

    The binary is located at: ‘./out/build-t194/…’:

    cboot/out/build-t194/lk.bin

  2. Rename the binary lk.bin to cboot_t194.bin to use with the Jetson Xavier (T194)
    Linux for Tegra Board Support Package.

    This CBoot binary replaces the one provided at: Linux_for_Tegra/bootloader/cboot_t194.bin.

I could boot up successfully when I recover the cboot_t194.bin.
so I need to relpace nvtboot_cpu_t194.bin instead of cboot_t194.bin. Is that rihgt?

We are using the custom board, but it basically like the devkit.

replace cboot_t194.bin…
nvtboot_cpu_t194.bin is not open source… there is no way you can build a new nvtboot binary…

Kevin’s point is you should not replace nvtboot.

May I ask any advice for my problem? How do I compile cboot that xaiver can run?

Are you talking about right after you replace “cboot_t194.bin” to your new file then you cannot flash it?

I can flash successfully, but the new cboot seems can not work.

請問你所謂的 “seems cannot work” 是怎樣叫cannot work?

改的東西沒有出來?
改的東西造成crash?
有沒有log可以提供來說明你碰到的問題?

这是烧录后的启动log,LK阶段后没有进入cboot阶段。

ok, 我現在能請問一下你確定自己沒有換錯檔案吧? 從頭到尾就不應該動到nvtboot_cpu_t194.

我从来没有动过nvtboot_cpu_t194
KevinFFF 提到他也让我感觉一头雾水呢。

能請你確認一下如果你把cboot復原成原本nv提供的版本然後燒錄就能開進去了嗎?

我把cboot_t194重新替换为SDK中原始的版本,单独烧录cboot后,机器就可以正常启动了。

請問你的cboot source code有改什麼內容嗎?

在上面这个链接下载后直接编译的,没有改动代码。

我們這邊試試 麻煩你那邊也試試整機重燒

替换我自己编译的cboot全部烧录现象一样,无法进入cboot阶段。

lk_r32.7.4.bin (475.2 KB)
please test this cboot binary.

使用这个 lk_r32.7.4.bin (475.2 KB)
Rename 成cboot_t194.bin烧录后可以正常启动。
以下是启动log:
boot_2023-10-25_9_45_13.log (83.2 KB)