Flash nvme on orin nano(8G)

我們自己設計的底板,cpu核心處理器使用的是orin nano(8G)
官網下載工程為:Jetson_Linux_R35.3.1_aarch64.tbz2
當使用燒寫指令“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 ”來燒寫nvme硬盤時,燒寫提示失敗,失敗日志如下:
Copied 400960 bytes from /qspi/internal/adsp-fw_sigheader.bin.encrypt to address 0x03b30000 in flash
[ 220]: l4t_flash_from_kernel: Warning: skip writing B_reserved_on_boot partition as no image is specified
[ 220]: l4t_flash_from_kernel: Warning: skip writing uefi_variables partition as no image is specified
[ 220]: l4t_flash_from_kernel: Warning: skip writing uefi_ftw partition as no image is specified
[ 220]: l4t_flash_from_kernel: Warning: skip writing worm partition as no image is specified
Writing bct_backup.img (parittion: BCT-boot-chain_backup) into /dev/mtd0
Sha1 checksum matched for /qspi/internal/bct_backup.img
Writing /qspi/internal/bct_backup.img (32768 bytes) into /dev/mtd0:66715648
Copied 32768 bytes from /qspi/internal/bct_backup.img to address 0x03fa0000 in flash
[ 220]: l4t_flash_from_kernel: Warning: skip writing reserved_partition partition as no image is specified
Writing gpt_secondary_3_0.bin (parittion: secondary_gpt_backup) into /dev/mtd0
Sha1 checksum matched for /qspi/internal/gpt_secondary_3_0.bin
Writing /qspi/internal/gpt_secondary_3_0.bin (16896 bytes) into /dev/mtd0:66846720
Copied 16896 bytes from /qspi/internal/gpt_secondary_3_0.bin to address 0x03fc0000 in flash
Writing qspi_bootblob_ver.txt (parittion: B_VER) into /dev/mtd0
Sha1 checksum matched for /qspi/internal/qspi_bootblob_ver.txt
Writing /qspi/internal/qspi_bootblob_ver.txt (109 bytes) into /dev/mtd0:66912256
Copied 109 bytes from /qspi/internal/qspi_bootblob_ver.txt to address 0x03fd0000 in flash
Writing qspi_bootblob_ver.txt (parittion: A_VER) into /dev/mtd0
Sha1 checksum matched for /qspi/internal/qspi_bootblob_ver.txt
Writing /qspi/internal/qspi_bootblob_ver.txt (109 bytes) into /dev/mtd0:66977792
Copied 109 bytes from /qspi/internal/qspi_bootblob_ver.txt to address 0x03fe0000 in flash
Writing gpt_secondary_3_0.bin (parittion: secondary_gpt) into /dev/mtd0
Sha1 checksum matched for /qspi/internal/gpt_secondary_3_0.bin
Writing /qspi/internal/gpt_secondary_3_0.bin (16896 bytes) into /dev/mtd0:67091968
Copied 16896 bytes from /qspi/internal/gpt_secondary_3_0.bin to address 0x03ffbe00 in flash
[ 220]: l4t_flash_from_kernel: Successfully flash the qspi
[ 220]: l4t_flash_from_kernel: Flashing success
Error flashing non-qspi storage

Cleaning up…

然後重新上電,查看串口調試信息,出現“Busy Pin”的打印提示,串口打印提示如下:
I> Task: I2C register (0x50001e44)
I> Task: Map CCPLEX_INTERWORLD_SHMEM carveout (0x50001e2c)
I> Task: Program CBB PCIE AMAP regions (0x50019b64)
I> Task: Boot device init (0x50001d74)
I> Boot_device: QSPI_FLASH instance: 0
I> Qspi clock source : pllc_out0
I> QSPI-0l initialized successfully
E> Error in command_complete 18001 int_status
E> Sending CMD_SD_SEND_IF_COND failed
E> Error opening sdcard-0
E> Failed to initialize device 6-0
C> Storage init failed
C> Task 0x0 failed (err: 0x39390706)
E> Top caller module: SDMMC, error module: SDMMC, reason: 0x06, aux_info: 0x07
I> Busy Spin

Hi,

請問你們對自己設計底板之後要對BSP做哪些修改有概念嗎?

p3509-a02+p3767-0000

這個config file是給Orin NX插在Xavier NX DevKit的底板上時用的,除非你們的底板設計和Xavier NX的DevKit一模一樣(當然如果一樣的話你們也沒有自己設計的必要),否則pinmux和device tree都有可能不一樣的情況下,直接刷刷不過也是很正常的。

感謝回復,但把參數p3509-a02+p3767-0000改成jetson-orin-nano-devkit燒寫,能燒寫成功,然後系統能正常啓動。我們按照Orin Nano Developer Kit開發辦來設計的我們自己的底板!然後看官網鏈接orin Nano和Orin NX用的參數一樣的,參考鏈接: Quick Start — Jetson Linux Developer Guide documentation (nvidia.com)

那就是你們一開始的時候用錯config file了而已…
你可以發現jetson-orin-nano-devkit.conf實際上是link到p3768-0000+p3767-0000.conf,裡面指定的kernel dtb是tegra234-p3767-0000-p3768-0000-a0.dtb,也和p3509-a02+p3767-0000.conf裡用的不一樣。

感謝解答!p3509-a02+p3767-000參數只適用於ORIN NX!

你的結論搞錯了 p3509-a02+p3767-0000 的重點在你的底板設計要跟xavier nx devkit一樣, 這個config可以用在orin nano 跟orin nx這兩個所有款的module.

我重新解釋一下

Orin nano 跟Orin NX module有兩種底板可以使用

  1. Orin nano devkit底板 (只有dp port)
  2. Xavier NX devkit底板 (p3509) (只有hdmi port)

當你使用(1)的底板的時候 不論你是哪種module, 都要用 jetson-orin-nano-devkit.conf燒錄
當你用(2)的時候, 都要用 p3509-a02+p3767-0000 燒錄

所以不管哪種module都可以透過這兩個config燒 差別是在底板的設計.

針對你nvme燒不過這件事情 麻煩附上完整的log. Host端跟UART都附上來

然後重新上電,查看串口調試信息,出現“Busy Pin”的打印提示,串口打印提示如下:
I> Task: I2C register (0x50001e44)
I> Task: Map CCPLEX_INTERWORLD_SHMEM carveout (0x50001e2c)
I> Task: Program CBB PCIE AMAP regions (0x50019b64)
I> Task: Boot device init (0x50001d74)
I> Boot_device: QSPI_FLASH instance: 0
I> Qspi clock source : pllc_out0
I> QSPI-0l initialized successfully
E> Error in command_complete 18001 int_status
E> Sending CMD_SD_SEND_IF_COND failed
E> Error opening sdcard-0
E> Failed to initialize device 6-0
C> Storage init failed
C> Task 0x0 failed (err: 0x39390706)
E> Top caller module: SDMMC, error module: SDMMC, reason: 0x06, aux_info: 0x07
I> Busy Spin

另外 這邊你要抓的log應該是燒錄當下碰到的log. 而不是已經燒失敗之後你才把機器重新上電抓log.

燒寫log:
flash_nvme.log (267.9 KB)
燒寫時的串口打印log:
uart_log.log (90.2 KB)

請問你們的nvme用pcie哪一個controller?

pcie2控制器, 部分引脚如下圖:

PCIe controller C7 對應到的是pcie@141e0000

現在這個問題的原因是Orin nano devkit的配置上這個controller是有打開的. 但是p3509上沒開
PCIe controller沒開, nvme自然會找不到

所以麻煩去device tree把設定打開.

https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/HR/JetsonModuleAdaptationAndBringUp/JetsonOrinNxNanoSeries.html#enabling-pcie-in-a-customer-carrier-board-design

您好,改完device tree仍然有問題,這個pcie的設備樹改完之後,改完之後的操作:
(1)./apply_binaries.sh
(2)./tools/l4t_flash_prerequisites.sh
(3)./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 > flash_nvme.log
其中設備樹如下:
tegra234-soc-pcie.dtsi (50.6 KB)

燒寫日志:
flash_nvme.log (267.4 KB)
燒寫時候的串口打印日志:
uart_log.log (94.9 KB)

Hi,

Device tree部份還是沒有改對. 看你要不要直接把orin nano devkit的設定直接複製過來…
還有, 141e0000.pcie_ep這個不用打開. 這個是給pcie endpoint mode用的

1734 [    4.944283] tegra194-pcie 141e0000.pcie_ep: Failed to find PHY entries: -22^M
1735 [    4.945713] tegra194-pcie 141e0000.pcie_ep: Failed to parse device tree: -22^M
1736 [    4.952801] tegra194-pcie: probe of 141e0000.pcie_ep failed with error -22^M
1737 [    4.959881] tegra194-pcie 14100000.pcie: Adding to iommu group 10^M
1738 [    4.972183] tegra194-pcie 14100000.pcie: Using GICv2m MSI allocator^M
1739 [    4.973872] tegra194-pcie 14160000.pcie: Adding to iommu group 11^M
1740 [    4.984352] tegra194-pcie 14160000.pcie: Using GICv2m MSI allocator^M
1741 [    4.985091] tegra194-pcie 141e0000.pcie: Adding to iommu group 9^M
1742 [    4.990380] tegra194-pcie 141e0000.pcie: Failed to find PHY entries: -22^M
1743 [    4.996908] tegra194-pcie 141e0000.pcie: Failed to parse device tree: -22^M
1744 [    5.003757] tegra194-pcie: probe of 141e0000.pcie failed with error -22^M

orin nano devit 的pcie設備樹是哪個文件,在jetson-orin-nano-devkit.conf文件裏面找到的設備樹並沒有pcie相關的配置

請問你是第一次碰device tree相關的東西嗎?

orin nano的產品第一次用,配置過其他廠商cpu處理器的設備樹

在jetson-orin-nano-devkit.conf文件裏面找到的設備樹並沒有pcie相關的配置

這件事情一定是錯的, 因為你用這個conf燒錄之後那個對應的pcie有開.
有幾種可能

  1. 你找錯dtb/dts
  2. 你找對dts, 但你需要trace code找到pcie相關的設定在哪.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.