Hi,
感覺你好像搞錯了方向. 這條目前的問題跟你的PCIe沒有關聯. 你不用說明C0/C4的差異. 因為問題根本不在那裡
這邊先解釋一下flash的機制.
目前Orin AGX上能使用的flash tool有兩種
- flash.sh
- l4t_initrd_flash.sh
不論哪一種燒錄方式, 都是host PC用USB線接著你的Jetson燒錄. 所以你的host PC這時候得當USB host的角色. Jetson需要當USB device.
當你用pin或是按鈕把device切進recovery mode之後. host PC上使用"lsusb"指令能讀到Jetson, 代表Jetson這時候進入的usb device mode.
以上部份是flash.sh跟initrd_flash共同的部份. 接下來講解不同的地方
-
flash.sh的燒錄過程不會有Jetson開進Linux kernel的部份. 基本上就是透過BootRom從host PC端直接寫資料進去Jetson裡面. 這個過程不會在意你的device tree內容是對還是錯的. 就是完全寫進去之後開始進行開機. 這種方法比較簡單但有侷限性. 比方說他只能燒eMMC, 沒辦法燒錄external drive (NVMe/USB)
-
l4t_initrd_flash.sh 是為了能燒錄external drive設計的. 這個tool 會先使用flash.sh讓你的Jetson開進initrd. 之後在initrd這階段偵測到nvme或是usb drive之後再把資料寫入這些SSD.
在initrd 階段跟host之間的連線還是需要usb host/device的角色. 但這時候變成initrd要負責維持usb的功能. initrd基本上就是Linux kernel的作用機制. USB driver在這時候必須得正確執行讓Jetson保持在usb device mode的角色. 而USB driver有沒有辦法正確執行基本上就是device tree有沒有寫對.
Device tree基本上又要搭配你的USB port怎麼設計的. 比方說一個type A usb port本來就沒有OTG的功能.
如果以上有看懂的話, 現在問題是在問你的USB0那個connector是如何設計的. 跟什麼PCIe C0/C4長怎樣完全沒有關聯.