*** Please note that this reply is generated by LLM automatically ***
I understand your question. You’re designing a custom carrier board for the Jetson AGX Orin module, and your design is evolving, leading to changes in the pinmux and device tree. You want to know if it’s possible to use a board ID from a Microcontroller Unit (MCU) to select different pinmux and GPIO configurations or Device Tree Binary (DTB) files, so that a single software package can run on different baseboards and share the same Over-The-Air (OTA) and Machine Firmware Image (MFI) packages.
Short answer: Yes, it is possible to achieve this goal.
Long answer:
For the Device Tree Binary (DTB) selection, you can modify the UEFI code or extlinux.conf to select different device trees based on the board ID. This is a common approach to support multiple hardware configurations with a single software package.
For the pinmux and GPIO configurations, you can use the compatible property in the device tree overlay to specify the supported Jetson platforms and their corresponding pinmux configurations. The compatible property is used to identify the combination of Jetson module and carrier board that the overlay supports.
To dynamically select different pinmux and GPIO configurations based on the board ID, you can use the following approaches:
- Update the MB1 pinmux BCT: You can update the MB1 pinmux BCT to configure the pinmux settings for each board ID. This requires modifying the T23x BCT Deployment Guide and generating the correct .dtsi files from the Jetson AGX Orin pinmux spreadsheet.
- Dynamically make pinmux changes: You can use the GPIO tools to dynamically change the pin settings if the pin meets certain conditions (e.g., part of the 40-pin header, not configured as an SFIO pin by the MB1 BCT, and configured to be bidirectional by the MB1 BCT).
To achieve compatibility and share the same OTA and MFI packages across different baseboards, you can:
- Use a single software package: Create a single software package that includes all the necessary device tree overlays and pinmux configurations for each supported board ID.
- Use a board ID-based selection mechanism: Implement a mechanism to select the correct device tree overlay and pinmux configuration based on the board ID read from the MCU.
By using these approaches, you can create a flexible and scalable solution that supports multiple hardware configurations with a single software package, while also sharing the same OTA and MFI packages across different baseboards.
Comparison with other approaches:
While modifying the UEFI code or extlinux.conf can be used to select different device trees, it may not be the most efficient approach for selecting pinmux and GPIO configurations. Using the compatible property in the device tree overlay and dynamically selecting pinmux configurations based on the board ID provides a more flexible and scalable solution.
In summary, using a combination of device tree overlays, pinmux configurations, and a board ID-based selection mechanism, you can achieve compatibility and share the same OTA and MFI packages across different baseboards, while also supporting multiple hardware configurations with a single software package.
*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***