Jetson Sensor Processing Engine (SPE) Developer Guide

r36.4.3 Release

IVC (app/ivc-echo-task.c)

Inter VM Communication (IVC) provides interface to communicate between chip processors through a shared-memory channel. It uses Hardware Synchronization Primitives (HSP) for interprocessor synchronization through doorbell mechanism. The assertion of the doorbell signal indicates that the destination processor requires attention, typically because the source processor posted a message in memory.

This application demonstrates the communication between CCPLEX and AON through a data_channel created by AON Echo driver where the data is sent from CCPLEX to AON and it's echoed back from AON to CCPLEX.

AGX Orin and Orin Nano

  1. The current IVC channel are described in the device tree repository. You must run source_sync.sh to get the dtsi file. After running source_sync.sh, the file is located at AGX Orin: Linux_for_Tegra/source/hardware/nvidia/t23x/nv-public/nv-platform/tegra234-p3737-0000+p3701-xxxx-nv-common.dtsi Orin Nano: Linux_for_Tegra/source/hardware/nvidia/t23x/nv-public/nv-platform/tegra234-p3768-0000+p3767-xxxx-nv-common.dtsi
  2. To add/remove or enable/disable the channels in linux kernel, you must update the device tree entries in the above dtsi file. The following code shows how to enable the IVC echo channel:
    bus@0 {
    + aon_echo {
    + status = "okay";
    + };
    +
  3. Compile the device tree and copy the dtb file to Linux_for_Tegra/dtb/ directory.
  4. Rebuild the device tree and reflash the board by referencing the instructions in the Building the Kernel section of the Linux Developer Guide.
  5. Build the SPE application, and copy the output to ${L4T}/bootloader/spe_t234.bin.

How to test

From the Linux kernel side, the /sys/devices/platform/bus@0/bus@0:aon_echo/data_channel node is used to communicate with AON after enabling echo channel as mentioned above. Messages sent to AON through this channel are echoed back to CCPLEX.

ubuntu@jetson:~$ sudo su -c 'echo tegra > /sys/devices/platform/bus@0/bus@0:aon_echo/data_channel'
ubuntu@jetson:~$ cat /sys/devices/platform/bus@0/bus@0:aon_echo/data_channel
tegra
ubuntu@jetson:~$

Sources

The echo channel ivc code in the current firmware resides at:

rt-aux-cpu-demo-fsp/app/ivc-echo-task.c
rt-aux-cpu-demo-fsp/drivers/ivc-channels.c

And the channel descriptions are at:

rt-aux-cpu-demo-fsp/platform/ivc-channel-ids.c
rt-aux-cpu-demo-fsp/soc/t23x/include/ivc-config.h