3.3.1.4 Migrating C28 and CLA to Different C29
CPUs
A different CCS project is
needed.
In the C28+CLA implementation,
CLA tasks could be triggered by hardware or software, and on task completion, an
interrupt may be sent to the C28.
To implement this in this
scenario, you would need IPC between two C29 CPUs. IPC, however, has a maximum
of four interrupts in either direction, whereas, there could be eight CLA tasks.
Hence, it would make sense to use one IPC interrupt in either direction, along
with a command specifier to indicate the task that needs to be run or the task
that completed. This requires additional code that parses the IPC interrupt and
triggers the ISR.
So, for software task triggers,
you would map them to an IPC interrupt , then the receiving C29 CPU would run
the IPC ISR, and trigger a software interrupt through its PIPE (by writing to
PIPE registers) to run the desired ISR.
For hardware task triggers, the
C29 CPU's PIPE would be setup to trigger from the desired peripheral.
For task completion interrupts,
you would map it to an IPC interrupt, then the receiving C29 CPU would run the
IPC ISR, and trigger a software interrupt through its PIPE to run the desired
ISR.
If a background task was present
in the C28+CLA implementation, it can be easily implemented in the C29 CPU as a
background loop (idle loop).
CLA registers offer a lot of
functionality to users, like being able to know which task is running, and being
able to stop a task by writing to a specific bit in a register. When migrating,
suitable source code updates may be needed given the absence of these registers
and corresponding functionality.