Flashing Custom DTB onto NVME for Nvidia Jetson Orin Nano Dev Board

Issue Overview

Users are experiencing difficulties when attempting to flash a custom Device Tree Blob (DTB) onto the NVME storage of the Nvidia Jetson Orin Nano Development Board. The main challenge is ensuring that the modified device tree is correctly compiled, placed in the appropriate location, and flashed onto the device. Users have reported that their custom modifications are not being applied, even after following the compilation and flashing instructions provided in the documentation.

Possible Causes

  1. Incorrect DTB file location: The custom DTB file may not be placed in the correct directory for the flashing process to recognize it.

  2. Outdated flashing prerequisites: Running the flashing prerequisites script after copying the custom DTB can overwrite the modifications.

  3. Mismatched device tree file: The device tree file being modified may not match the specific model of the Orin Nano Dev Board in use.

  4. Compilation errors: Errors during the compilation process of the custom device tree may result in an incomplete or incorrect DTB file.

  5. Flashing process issues: Problems during the flashing process itself may prevent the custom DTB from being properly written to the NVME storage.

Troubleshooting Steps, Solutions & Fixes

  1. Verify the correct DTB file:

    • Check the device model by examining the dmesg output:
      dmesg | grep "DTS File Name"
      
    • Ensure you’re modifying the correct device tree file for your specific model.
  2. Compile the custom DTB:

    • Follow the instructions for compiling a custom BSP (Board Support Package) as outlined in the Ridgerun documentation.
    • Make your modifications to the appropriate .dtsi file, for example:
      <kernel_src>/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-vps.dtsi
      
    • Include your custom .dtsi file in the main device tree file.
  3. Place the custom DTB in the correct location:

    • After compilation, copy the custom DTB to the correct location:
      cp /Linux_for_Tegra/sources/kernel_out/arch/arm64/boot/dts/nvidia/tegra234-p3767-XXXX-p3768-0000-a0.dtb Linux_for_Tegra/kernel/dtb
      
    • Replace "XXXX" with your specific model number (e.g., 0003).
  4. Flash the custom DTB:

    • Run the flashing prerequisites script:
      sudo ./tools/l4t_flash_prerequisites.sh
      
    • Apply the binaries:
      sudo ./apply_binaries.sh
      
    • Copy your custom DTB to the correct location:
      cp /Linux_for_Tegra/sources/kernel_out/arch/arm64/boot/dts/nvidia/tegra234-p3767-XXXX-p3768-0000-a0.dtb Linux_for_Tegra/kernel/dtb
      
    • Perform the flashing process as per the Nvidia documentation.
  5. Verify the custom DTB is in use:

    • After flashing and booting the device, check the dmesg output again:
      dmesg | grep "DTS File Name"
      
    • Confirm that the output shows your custom DTB file.
  6. Troubleshoot PPS (Pulse Per Second) issues:
    If you’re specifically adding PPS functionality:

    • Verify that the necessary configurations are present in the kernel config file:
      grep CONFIG_PPS /path/to/tegra_defconfig
      
    • Ensure the output includes:
      CONFIG_PPS_DEBUG=y
      CONFIG_PPS_CLIENT_GPIO=y
      
    • If PPS is not registering, check for error messages in dmesg related to PPS initialization.
  7. Review and update device tree includes:

    • Ensure that your custom .dtsi file is included in the appropriate device tree files:
      git diff hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0.dtsi
      
    • Verify that the include statement for your custom .dtsi file is present.

By following these steps, you should be able to successfully flash your custom DTB onto the NVME storage of your Nvidia Jetson Orin Nano Dev Board. If issues persist, consider reaching out to Nvidia support or consulting the official Jetson forums for further assistance.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *