Jetson Bring-Up First Steps

Hello,

I am adapting a Jetson AGX Orin module (P3701-0005) for a custom carrier board. Updating the devicetree has been particularly challenging, and I am seeking guidance on how exactly I am supposed to interact with or add nodes in the DTS for the Jetson Linux kernel.

The primary resource I’ve used for guidance so far is the Jetson AGX Orin Platform Adaptation and Bring-Up guide. The instructions here contain several sections which say that the devicetree must be modified; for example, Ethernet Controller Configuration for RGMII. For reference, this section says:

Which specific file(s) should I be modifying to make these changes?

My current method is to put these modifications in a DT overlay, compile it, copy the compiled .dtbo file into Linux_for_Tegra/kernel/dtb/, and add the .dtbo file to the OVERLAY_DTB_FILE variable in my board’s flash configuration. I have had success doing this with certain other devices’ DT entries (such as an I2C bus), but for an example like the one above, I don’t know where certain references should be coming from in the DTS, like tegra_main_gpio. I believe unknown references like this are causing me problems, sometimes preventing the kernel from booting due to an “invalid header,” or sometimes showing as garbage values when I check /proc/device-tree. I have been tinkering with the DTS for a while, and this is just one example of a problem I have faced due to a lack of understanding what exactly to do with the development guide’s instructions. (As a side note, shouldn’t the ‘$’ characters be ‘&’?)

Some other methods I have considered are:

  • Creating a complete custom devicetree integrating the Jetson module with the custom carrier board (instead of using DTB_FILE=tegra234-p3737-0000+p3701-0005-nv.dtb).
  • Decompiling the actual devicetree blob being used, adding the modifications directly into the DTS, then recompiling and replacing the original file.

Any guidance on this or general advice on the first steps to take in the bring-up process would be very appreciated.

Hi,

Try to do the thing step by step. Lots of new users would like to “modify everything all at once”. That would lead to crash and you would not know what causes that because you modified too much things.

First, clarify which dtb is in use on your board. You could start from telling which flash command you are using to flash your board.

That’s good advice.

My flash configuration is targeting DTB_FILE=tegra234-p3737-0000+p3701-0005-nv.dtb. I have found varying levels of success in modifying the devicetree by:

  • Including a custom overlay (.dtbo) in the OVERLAY_DTB_FILE variable,
  • and by directly modifying one of the source files in Linux_for_Tegra/source/hardware/nvidia/t23x/nv-public included by tegra234-p3737-0000+p3701-0005-nv.dts. Specifically, I have modified Linux_for_Tegra/source/hardware/nvidia/t23x/nv-public/nv-soc/tegra234-overlay.dtsi so that I can have access to the aliases and symbols defined in the source DT.

If you have time, would you be able to give a more comprehensive response? I am uncertain about whether I am following best practices for the bring-up process.

Overlay dtbo files are not going to 100% take effect. They only take effect when certain conditions got met.

Directly modifying tegra234-p3737-0000+p3701-0005-nv.dts will make it definitely take effect.

It all depend on what you want to do here.

After you have new device tree, you could put it to your Linux_for_Tegra/kernel/dtb directory and do flash.

You could check whether your change is taking effect on the board by checking /proc/device-tree when it boots up.

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