在Jetson Linux 36.2中如何修改设备树

在原来35.2.1版本中,我修改了图片中所显示的地方:



但是在新的版本中找不到这2个文件,只有tegra234-p3767-0000.dtsi与tegra234-p3767.dtsi;而我使用的烧写系统命令为:sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p “-c bootloader/t186ref/cfg/flash_t234_qspi.xml” --showlogs --network usb0 p3509-a02+p3767-0000 internal
我应该如何修改设备树?烧写命令是否需要调整?

Hi 1969288803,

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

For R36.2, we would suggest using overlay dtbo for your custom change.
Or you could just modify them from the decompiled dtb on your board.

自定义的板子

Please just decompiled the /boot/dtb/kernel_XXX.dtb to dts from your board to modify the device tree and assemble it back to dtb to apply the change.

我使用烧写命令:sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p “-c bootloader/t186ref/cfg/flash_t234_qspi.xml” --showlogs --network usb0 p3509-a02-p3767-0000 internal
但是报错了,是否有其他能烧写jetson orin nx的命令,jetson orin nx可以使用flash.sh进行烧写吗?
报错信息:

另外我想问下,是只有35.2.1版本支持jetson orin nx 16gb吗?我现在所使用的模块就是jetson orin nx,从官网上看好像是只有这个版本支持

你的command看起來沒問題,請提供完整flash log
另外比較好奇的是你看起來原本可以成功燒錄R36.2,請問是改了什麼造成燒錄失敗呢?

Orin NX無法使用flash.sh來燒寫,因為你將寫入的裝置是external NVMe而不是internal eMMC.

之後的版本也都是支持的,建議你的可以先試看看R35.4.1

好的,这是我后来又试了一次它显示成功烧录了,但是进不去系统的flash log
flash_3-2_0_20240112-140630.log (21.0 KB)

flash log的部分看起來沒什麼問題
請一併附上你進不去系統時的serial console log讓我們檢查下

也很好奇你一開始是可以flash並且成功開機的,為何現在開不起來呢?

好的,我需要准备串口工具,需要些时间,在原来的35.2.1的版本上,用正常的命令就能烧写成功,且需要烧写的时间比较久,而在现在这个36.2中,烧写时间感觉比较短;总感觉缺少东西,原来我使用的dtb是tegra234-p3767-0000+p3509-a02.dtb 但是在36.2中找不到此文件,且重新编译内核后所产生的文件也没有这个,这是什么原因?所以我现在烧录的也不是这个设备树,而是tegra234-p3768-0000+p3767-0000-nv.dtb;这会不会是造成不开机的原因

R36.2和R35.X在DTB的處理上有些不同
你可以直接decompile板子上的/boot/dtb/kernel_XXX-nv.dtb,修改完後再asseemble回dtb

你可以看一下R36.2的jetson-orin-nano-devkit的board config裡,使用的是tegra234-p3768-0000+p3767-0000-nv.dtb而不是tegra234-p3767-0000+p3509-a02.dtb

你好,我又试了R35.4.1的,烧录成功了,但是开机后屏幕只有亮光没有显示,这是为什么?我烧录的指令与35.2.1所使用的指令一样:sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p “-c bootloader/t186ref/cfg/flash_t234_qspi.xml” --showlogs --network usb0 p3509-a02+p3767-0000 internal

請問你目前是能開機成功的嗎? 還是開機失敗卡在黑屏畫面

因你是使用自定義的板子,可能有部分device tree需要修正來enable顯示屏
麻煩提供目前的serial console log讓我們檢查下

开机应该是成功了,键盘指示灯灯是亮的,但是屏幕没显示;我r35.2.1用的也是一样名字的设备树,可以正常开机,屏幕正常显示;是因为r35.2.1与r35.4.1版本的设备树有所改动嘛

你可以從serial console來確認板子是否有成功開機比較準確

不同版本因為某些功能的修正/增減,確實device tree內容可能不同
建議你based on r35.4.1的device tree再去apply關於你自定義板子的custom patch,不要直接把r35.2.1的device tree/dtb整個直接拿來用

我用的都是r35.4.1自带的设备树,这是debug的信息:
log.txt (43.5 KB)

你指的是你目前用預設的device tree,並未作任何更改在你的自定義板子上嗎?

[   18.940848] CPU:0, Error: dce-fabric@0xde00000, irq=28
[   18.946150] **************************************
[   18.951077] CPU:0, Error:dce-fabric, Errmon:2

Log上看起來你遇到個display的known issue
請問你的板子上是使用DP還是HDMI呢?

請參考以下連結裡的修正看是否有效?
Jetson Orin Nano Display Problem - #9 by WayneWWW
4.2.3. Adaptation to the Carrier Board with HDMI for
the Orin NX/Nano Modules

我有做更改,更改的内容与我原先在r35.2.1中更改的一样,更改内容如下:




我的板子上使用的是HDMI

請參考R35.4.1 release note的部分,apply以下這個patch

你好,这个补丁我不太会使用,是先把文件内容拷贝下来取名为xxx.patch然后进入./bootloader/t186ref/BCT目录中执行: patch -p0 < linux.patch 。是这个样子嘛