Can't use the l4t_initrd_flash.sh to flash the orin(custom board) with r36.4.3

Hi everyone

I am trying use the cmd “sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_t234_nvme.xml -p “-c bootloader/generic/cfg/flash_t234_qspi_sdmmc.xml” --showlogs --network usb0 jetson-agx-orin-devkit internal“ to flash the nvme

but when get the setp 3 : Start the flashing process,here is the error log

Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Timeout
Device failed to boot to the initrd flash kernel. Please retrive the serial log during flashing to debug further.
Cleaning up...

and here is the dmesg log and flash log

flash_initrd.log (9.5 KB)

dmesg_initrd.log (39.5 KB)

need anyone help me .Thanks

The log looks like typical USB device mode not detect on your custom board.

Please configure device tree of USB part to match your hardware design. Also, your hardware design shall support usb device mode.

Document in below

Hi WayneWWW

I can use the “sudo ./flash.sh jetson-agx-orin-devkit internal” to success boot the orin.And what exactly do you mean by “typical USB device mode”? Is that Debug USB 3.0?

and attach the dtb on board

extracted_proc.txt (349.3 KB)

and here is the hardware design

Debug USB 3.0 (flash port)

use USB2_0 and USB3_1

Hi,

I have explanation in Chinese on another post. Please read if it is okay for you.

Thanks

I have solved it by modify this

		usb@3550000 {
			status = "okay";

			phys = <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
					// <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
					// <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-0}>,
			       <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>;
			phy-names = "usb2-0" , "usb3-1";
		};

and the last question need help how to skip the system_image generate like “flash.sh -r“ when use l4t_initrd_flash.sh.

I am not quite sure what did you change in above… isn’t that the default setting already?

the change is here

你好,WayneWW

这是我们的原理图设计

经过我们这些天的测试

我发现会当usb2.2所连接的usb_hub没有接入负载设备时,initrd无法进行下去,console log会卡在

但是当使用负载设备接入的时候就能正常烧录完成,但是这个情况下,烧录口也是只有device mode ,没法自动切换成host的(注:我们没有采用cypress,而是使用的TUSB321AIRWBR,并没有接入id和vbus-detect引脚) 所以,本质我们是没有能够自动控制type-c进行切换的,
那么我有两个困惑:
1.使用initrd烧录的时候是驱动xusb强制写入切换的吗?
2.在没有id和vbud-detect接入的时候,也是能够实现initrd烧录和手动切换role的吗?

希望能够解答,谢谢

Hi,

但是当使用负载设备接入的时候就能正常烧录完成

聽起來好像硬體部份跟device tree還是沒有對上. 照理你usb2-2的東西接不接跟usb2-0 port的device mode沒有關聯. 好像變成有點隨機行為導致usb跑進device mode然後你們把這個狀況當成問題已解決

理論上你沒有做id/vbus-detect或是採用任何type C solution的狀況下, 那個port的device mode是沒辦法正確執行的.

是的,我也觉得usb2-2不应该影响到usb2-0,目前唯一的硬件关联点是,j13(type-c连接器)和usb2-2连接的usb_hub通用一个5v电源.
请问如果想要实现这个type-c的otg(initrd一定依赖otg的情况下)是一定需要id和vbud-detect这两个引脚的对吗?

不確定我有沒有看錯connector, 你的type C那個load switch是透過GPIO做控制的嗎?


你是说这个脚吗,是gpio22控制的,但是目前软件没做控制,默认高电平

因為你的vbus-supply使用的這個0xf9 regulator其實是 always-on, 沒有受到gpio22的控制. 你得寫一個透過gpio 22控制的regulator然後給vbus-supply使用

类似于这样吗

	vdd_5v0_vbus_en1: regulator-vdd-5v0-vbus-en1 {
			compatible = "regulator-fixed";
			regulator-name = "VDD_5V0_VBUS-EN1";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio TEGRA234_MAIN_GPIO(Z, 1) GPIO_ACTIVE_HIGH>;
			enable-active-high;
	};

				usb2-0{
					mode = "otg";
					vbus-supply = <&vdd_5v0_vbus_en1>;
					status = "okay";

				};


这样写就不用引入id和vbus-detect了吗

你要不要直接把mode改成device? 你這個設計基本上不可能執行otg的功能. OTG代表能在host/device之間切換.

我們頂多只能看看讓你能正常燒錄而已. 完全OTG功能基本上不可能滿足

不行,

这样改完后usb2-2插不插东西,都没法用initrd烧录了

usb-role-switch還是得在那裡

這邊說明一下, 如果你要給device tree, 請你就提供最後dtb 轉回dts的結果

現在這種都是註解的code說實話真的沒有辦法知道你最後的dts長怎樣…

好的,对了role-switch-default-mode = “peripheral”;这个还要吗

請問你們是跟其他post的詢問有一起cowork嗎?
我好像在這一篇沒提到這件事情. 照理是有加沒加都沒有影響.