I’m trying to build the kernel and dtb’s for a Jetson Xavier AGX 16GB system using Diamond’s Stevie base board (NVidia official devkits are unobtainium.) The problem is that when flashing the board, it’s loading stale DTBs and not the ones I built. This causes my econ cameras to fail to initialize.
My build uses the tarball downloads (eg, Jetson_Linux_R32.6.1_aarch64.tbz2, Tegra_Linux_Sample-Root-Filesystem_R32.6.1_aarch64.tbz2)
When I clear out the precompiled DTBs from the files above then do a full kernel build, it doesn’t generate the DTBs that the flash script expects. Even stranger, the flash script expects different DTBs based on whether or not I clear out the precompiled DTBs.
Flash command:
sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1
flash.xml snippet when not purging precompiled DTBs:
<partition name="bpmp-fw-dtb" type="bpmp_fw_dtb" oem_sign="true">
<allocation_policy> sequential </allocation_policy>
<filesystem_type> basic </filesystem_type>
<size> 1048576 </size>
<file_system_attribute> 0 </file_system_attribute>
<allocation_attribute> 8 </allocation_attribute>
<percent_reserved> 0 </percent_reserved>
<filename> tegra194-a02-bpmp-p2888-a04.dtb </filename>
<description> **Required.** Slot A; contains BPMP firmware device tree blob
(DTB). </description>
</partition>
<partition name="bpmp-fw-dtb_b" type="bpmp_fw_dtb" oem_sign="true">
<allocation_policy> sequential </allocation_policy>
<filesystem_type> basic </filesystem_type>
<size> 1048576 </size>
<file_system_attribute> 0 </file_system_attribute>
<allocation_attribute> 8 </allocation_attribute>
<percent_reserved> 0 </percent_reserved>
<filename> tegra194-a02-bpmp-p2888-a04.dtb </filename>
<description> **Required.** Slot B; contains BPMP firmware device tree blob
(DTB). </description>
</partition>
flash.xml snippet when purging precompiled DTBs:
Note: This will fail to flash, as it expects BPFkernel_tegra194-p2888-0001-p2822-0000.dtb
<partition name="bpmp-fw-dtb" type="bpmp_fw_dtb" oem_sign="true">
<allocation_policy> sequential </allocation_policy>
<filesystem_type> basic </filesystem_type>
<size> 1048576 </size>
<file_system_attribute> 0 </file_system_attribute>
<allocation_attribute> 8 </allocation_attribute>
<percent_reserved> 0 </percent_reserved>
<filename> BPFkernel_tegra194-p2888-0001-p2822-0000.dtb </filename>
<description> **Required.** Slot A; contains BPMP firmware device tree blob
(DTB). </description>
</partition>
<partition name="bpmp-fw-dtb_b" type="bpmp_fw_dtb" oem_sign="true">
<allocation_policy> sequential </allocation_policy>
<filesystem_type> basic </filesystem_type>
<size> 1048576 </size>
<file_system_attribute> 0 </file_system_attribute>
<allocation_attribute> 8 </allocation_attribute>
<percent_reserved> 0 </percent_reserved>
<filename> BPFkernel_tegra194-p2888-0001-p2822-0000.dtb </filename>
<description> **Required.** Slot B; contains BPMP firmware device tree blob
(DTB). </description>
</partition>
So… we can see that it wants tegra194-a02-bpmp-p2888-a04.dtb when the precompiled DTBs are not purge, and it wants BPFkernel_tegra194-p2888-0001-p2822-0000.dtb when the DTBs are purged.
My questions are:
1) Why does the flash script expect different DTBs when the precompiled ones are purged?
2) What is the correct DTB file to be loading for the Xavier AGX 16 GB?
3) How does NVidia assure that precompiled trash doesn’t end up in the build output? I’m not going to lie, this build platform looks ultra sketchy.