NVIDIA Orin Boot Chain Configuration Support

  • In DRIVE AGX Orin, Drive Update application running on Orin manages SW updates of Orin reliably by maintaining multiple Boot Chains (Boot Chain A, B,C,D). Boot Chain Config module facilitates GPIO based Boot Chain selection and reboots Orin in selected Boot Chain.
  • Boot Chain Config module is decomposed into two sub modules - Boot Chain Config Library Source and Boot Chain Config Selector and they run on Orin and MCU, respectively.
  • Below diagram gives overview of interfaces and positioning of Boot Chain Config modules in the system
Figure 1. Overview of bootchain configuration functionality

On Orin, Sub module Boot Chain Config Library Source offers API to facilitate below features :

  • Select default Boot Chain configuration
  • Select next Boot Chain
  • Get Default Boot Chain configuration
  • Get Active boot Chain configuration
  • Perform reboot of Orin and MCU to boot in selected Boot Chain

Every above listed feature need support of BootChain Config Selector running on MCU to complete operations behind.

Implementation at Orin Side (Orin side section added for completeness of the doc)

Drive Update/user applications intending to use these features shall link to Boot Chain Config Library (libmcu_common_if.so).

Boot Chain Config Library (libmcu_common_if.so) formulates the Request-command, forwards to MCU, and wait for the Response-command. On receipt of the Response-command from MCU, the Boot Chain library processes the response and returns to caller.

The library (libmcu_common_if.so) uses Socket Wrapper library for transmission and reception of commands over UDP protocol.

Below parameters are configurable and are maintained in tacp configuration file. Appropriate changes must be made at MCU if the parameter values are altered

IP address of MCU: AURIX_IP_ADDRESS=10.42.0.146

IP address of Tegra A: TEGRA_A_IP_ADDRESS=10.42.0.28

Server Port on MCU: AURIX_BOOTCHAIN_PORT=5001

VLAN ID : e3550_t194a=eth0.200

Implementation at MCU Side

On MCU, Software Component NV_SWC_OTA component evaluates UDP packet(This SWC will be replaced with BootChain Config specific SWC in near future). If received packet is Boot Chain Request-command, it calls API from Boot Chain Config Selector to further processes the packet and perform appropriate operation.

Boot Chain Config Selector validates Request-command, perform appropriate operation on valid request and trigger Response-command transmission.

APIs with their prototype and description can be found in the header file BtChn_Cfg.h and their implementation are in BtChn_Cfg.c.

Boot Chain Config Selector depended on below modules to perform requested operation

  • NvM (persistent memory) : To store Boot Chain configuration data
  • Customer SWC : To handle reboot/reset request
  • Orin power Control: To get active boot chain (Chain A/B/C/D)

These are the Socket properties for Boot Chain Config

MCU IP Address : 10.42.0.146

Orin-A IP Address : 10.42.0.28

Vlan Id: 200

Port: 5001