This section describes the hardware support
options for IPC communication between the two CPUs. These options can be used independently
or in combination. All flag definitions and data formats are entirely user-defined.
- The flag system supports event-based
communication via interrupts and register polling.
- CPUx can raise an IPC event by
writing to any of the 32 bits of the IPCSET register. This sets the corresponding bits
in the CPUx IPCFLG register and CPUy IPCSTS register.
- CPUy can signal the response to the
event by setting the appropriate bit in the IPCACK register. This clears the
corresponding bits in the CPUx IPCFLG register and the CPUy IPCSTS register.
- If CPUx needs to cancel an event,
CPUx can set the appropriate bit in the IPCCLR register. This has the same effect as
CPUy writing to IPCACK.
- Flag 0 (set using IPCSET[0]) fires an interrupt to the remote CPU. The remote CPU
must configure the PIPE module properly to receive an IPC interrupt. Flags 1–31 (set
using IPCSET[31:1]) do not produce interrupts. Multiple flags can be set,
acknowledged, and cleared simultaneously.
- The command registers support sending
several distinct pieces of information and are named COM, ADDR, DATA, and REPLY for
convenience only and can hold whatever data the application needs.
- CPUx can write data to the
IPCSENDCOM, IPCSENDADDR, and IPCSENDDATA registers. CPUy receives these in the
IPCRECVCOM, IPCRECVADDR, and IPCRECVDATA registers.
- CPUy can respond by writing to the
IPCLOCALREPLY
register. CPUx receives this data in the IPCREMOTEREPLY
register.