I have a Jetson Xavier NX SoC that I want to use with a new carrier board developed in house. I am a bit confused about how the carrier board is identified by the bootloader and consequently loads the correct device tree.
Any assistance in the following would be greatly appreciated!
- In a device tree structure, the “compatibility” node is used to match up hardware with drivers/modules. However, the device tree root node “compatibility” is for the entire carrier board. What is this being matched with?
- I read in an embedded linux book that “machines” are defined by DT_MACHINE_START and DT_MACHINE_END macros in the kernel source, and this is what is compared against with the root node compatibility string. But using the devkit device tree as an example I cannot find a macro for the SoC + devkit (eg “nvidia,p3449-0000+p3668-0000”)
- Is the carrier board eeprom involved in something? I can see in the cboot source that the only eeprom it seems to care about is one labeled “cvm” ie the eeprom on the SoC
- I am not using extlinux.conf to load my device tree, so the only device tree I want to be using is flashed to the kernel-dtb partition. In this case, does it even matter what the root node “compatibility” field is, since there is only one to load?