3273 Jetson Xavier NX l4t_initrd_flash

Hi,

I tried to use l4t_initrd_flash.sh script to flash internal and external emmc (3273, Device: Jetsosn Xavier NX)
I used command (Followed the README_initrd_flash):
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device < external-device > -c <external-partition-layout> <board-name> internel
then the script stoped at Ongoing processes (See below image)


At the same times, the debug serial port logs report: blk_update_request: I/O error, dev mmcblk0rpmb, sector 0 (See below image):

So what did I miss here?

Hi,

Are you using a custom board or a DevKit?
Would flashing work with flash.sh instead of initrd flash?

I used custom board
I can not find method working with flash.sh to flash both Jetson Xavier NX internal and carrier board’s external emmc, Do you have any guides to support it.

So you have eMMC on both the module and the carrier board?
I mean at least try if flashing the internal eMMC is working with flash.sh.

It works only flash internal eMMC with flash.sh

Hi,

After you boot into the internal eMMC, is the external eMMC being recognized as mmcblk1?
Maybe you can try patching flash.sh to see if it can also flash the external eMMC:

--- if [[ "${target_rootdev}" == "internal" || "${target_rootdev}" == mmcblk0p* || \
+++ if [[ "${target_rootdev}" == "internal" || "${target_rootdev}" == mmcblk0p* || "${target_rootdev}" == mmcblk1p* || \
      "${target_rootdev}" == ${BOOTDEV} ]]; then
	rootdev_type="internal";
	INITRD="";
	if [ ${disk_enc_enable} -eq 1 ] && [ "${target_rootdev}" != "internal" ]; then
		echo "Change device boot from ${target_rootdev} to internal"
		target_rootdev="internal";
	fi

Then run it like sudo ./flash.sh <device> mmcblk1p1.

Hi,
I used your method to modify script ”flash.sh“, and use command:
sudo ./flash.sh mmcblk1p1
After flash, I can not boot success, and kernel panic:

你用同一包BSP flash internal eMMC是可以開機的嗎?
看起來很像這個:

還有任何log麻煩都請附上文字檔,不要用截圖

Hi,
Maybe I need to clarify my questions:
My Jetson Xavier NX carrier board contain an external 128GB eMMC, and the design is:
Xavier NX internal eMMC: system image
128GB eMMC: user Partition (make user.img, out it in the Linux_for_Tegra/bootloader folder)
I want to find a method to flash both system image and user Partition.

I don’t think that’s possible.
What do you mean with user.img?

可以的,内置eMMC可以,并且正常使用。

你的意思是說你想要把一些自己的資料包成一個user.img,然後flash的時候要同時把L4T image燒進module上的eMMC、還有把你自己的資料燒進底板上的eMMC?

烧录的时候同时烧录module上的eMMC(烧录怎个系统镜像),我自己的资料,应用软件做成一个 user.img,然后烧录到底板上自己添加的eMMC,之前看官网上
https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3273/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/flashing.html#wwpID0E0KO0HA
Flashing to an External Storage Device章节中可以用l4t_initrd_flash.sh脚本完成内置和外置eMMC烧录

文件裡同時燒的意思是兩個storage device存的都是L4T BSP,你要燒自己的image要自己修改partition layout

我不知道你這裡有沒有做好這件事

我把外置eMMC的xml上传,下面是的

<partition_layout version="01.00.0000">
    <device type="nvme" instance="0" sector_size="512" num_sectors="241172480">
        <partition name="master_boot_record" type="protective_master_boot_record">
            <allocation_policy> sequential </allocation_policy>
            <filesystem_type> basic </filesystem_type>
            <size> 512 </size>
            <file_system_attribute> 0 </file_system_attribute>
            <allocation_attribute> 8 </allocation_attribute>
            <percent_reserved> 0 </percent_reserved>
            <description> **Required.** Contains protective MBR. </description>
        </partition>
        <partition name="primary_gpt" type="primary_gpt">
            <allocation_policy> sequential </allocation_policy>
            <filesystem_type> basic </filesystem_type>
            <size> 19968 </size>
            <file_system_attribute> 0 </file_system_attribute>
            <allocation_attribute> 8 </allocation_attribute>
            <percent_reserved> 0 </percent_reserved>
            <description> **Required.** Contains primary GPT of the `eMMC` device. All
              partitions defined after this entry are configured in the kernel, and are
              accessible by standard partition tools such as gdisk and parted. </description>
        </partition>
       <partition name="TESTSOURCE" type="data">
            <allocation_policy> sequential </allocation_policy>
            <filesystem_type> basic </filesystem_type>
            <size> 118111600640 </size>
            <file_system_attribute> 0 </file_system_attribute>
            <allocation_attribute> 8 </allocation_attribute>
            <percent_reserved> 0 </percent_reserved>
            <filename> testsource.img  </filename>
            <description> **Required.**  </description>
        </partition>
       <partition name="TESTAP" type="data">
            <allocation_policy> sequential </allocation_policy>
            <filesystem_type> basic </filesystem_type>
            <size> 3221225472 </size>
            <file_system_attribute> 0 </file_system_attribute>
            <allocation_attribute> 8 </allocation_attribute>
            <percent_reserved> 0 </percent_reserved>
            <filename> testap.img </filename>
            <description> **Required.**  </description>
        </partition>
       <partition name="TESTCOM" type="data">
            <allocation_policy> sequential </allocation_policy>
            <filesystem_type> basic </filesystem_type>
            <size> 1073741824 </size>
            <file_system_attribute> 0 </file_system_attribute>
            <allocation_attribute> 8 </allocation_attribute>
            <percent_reserved> 0 </percent_reserved>
            <filename> testcom.img </filename>
            <description> **Required.**  </description>
        </partition>
        <partition name="secondary_gpt" type="secondary_gpt">
            <allocation_policy> sequential </allocation_policy>
            <filesystem_type> basic </filesystem_type>
            <size> 0xFFFFFFFFFFFFFFFF </size>
            <file_system_attribute> 0 </file_system_attribute>
            <allocation_attribute> 8 </allocation_attribute>
            <percent_reserved> 0 </percent_reserved>
            <description> **Required.** Contains secondary GPT of the `eMMC`
              device. </description>
        </partition>
    </device>
</partition_layout>

Hi,

你可以試試看用default partition layout+initrd flash
看能不能從底板上的eMMC開機嗎?
就是先把你自己的image和改過之後的partition layout拿掉

或是同樣的流程在L4T 35.x上試試看

我们这边试过同样的流程在3521,3531 都可以

但是我这边想再3273上也这样做

請問這樣做在32.7.3上是可以的嗎?

还是不行,下面是我用到的烧录命令

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device mmcblk1 -c ./tools/kernel_flash/flash_l4t_external.xml jetson-xavier-nx-devkit-emmc internal