MCU Communication Coordinator Daemon

This is the MCU communication coordinator (MCC) daemon sample application.

Note: It is a sample implementation and uses Socket APIs for communication with MCU. Because the MCC Daemon and libraries are sample implementation, users of NVIDIA DRIVE® OS is expected to implement safety and security provisions for it based on the chosen medium of communication.

Functionalities

These are the functionalities of the MCU communication coordinator daemon process (MCC daemon):
  • Relays the messages and responses among IST Client, DRIVE Update, and Common IF clients on NVIDIA DRIVE Orin™ SoC and MCU.
  • Communicates with clients on NVIDIA DRIVE Orin™ SoC using NvSciIpc.
  • Communicates with the MCU side using UDP socket communication.
Figure 1. Overview of NVIDIA Orin MCU Communication

Design Aspects

Implementation on NVIDIA DRIVE Orin™ SoC

IST Client, DRIVE Update, and Common IF clients can send a message to the MCC daemon over their respective NvSciIpc channels, and the daemon relays the message over the corresponding UDP socket. For DRIVE Update and Common IF client messages, it waits for a response from the UDP socket. Upon receipt of the response, the daemon writes it to the corresponding NvSciIpc channel.

Another thread of the MCC daemon is dedicated to waiting for messages on UDP socket for any communication from IST Manager on MCU. Once received, it writes the message to NvSciIpc channel corresponding to IST Client.

In case of timeout or errors, fixed number of retries are done.

The following are the configuration parameters:
  • UDP socket parameters taken from the tacp.cfg file:
    • AURIX_IP_ADDRESS=10.42.0.146
    • AURIX_SERVER_PORT=5000
    • AURIX_BOOTCHAIN_PORT=5001
    • CLIENT_IP_ADDRESS=10.42.0.28
  • Default timeout: 1 second
  • Default number of retries during init time: 120
  • Default number of retries during the runtime: 5
    • Note that clients should wait for more than 5 * 1 seconds to assume request might have failed. For example, 7 retries with 1 second timeout.
  • NvSciIpc channels:
    • For IST: nvmcc_ist_ipc_0, nvmcc_ist_ipc_1
    • For DU: nvmcc_du_ipc_0, nvmcc_du_ipc_1
    • For Common IF: nvmcc_cif_ipc_0, nvmcc_cif_ipc_1
    • As a convention: The daemon should open <nvsciipc_ep_name>_0 endpoint and clients should open corresponding <nvsciipc_ep_name>_1 endpoint.

Linux-Specific Settings

Ensure that NvSciIpc and socket (tacp) services are marked as dependency before launching the MCC daemon.

Source Path

<PDK>/samples/mcc_daemon