A LINK is a unique collection of ownerships and
access permissions tagged together by ID which is used for resource allocation and
sharing. Link ID binds CPU resources like stack, memory regions, peripheral instance
accesses, interrupt source and vectors, DMA channels and permissions, and more. This
prevents resources from being accessed from a hacker (or erroneous code) running
from another Link. Of particular interest to this chapter is the access provided by
a LINK to particular interrupt sources and vectors.
The following provides the types of links utilized for interrupt operation.
- Owner link: every interrupt line and associated
interrupt vector has an owner link.
- This link has related
resources of the source events like peripheral, GPIO or error
mechanism.
- Owner link has access to
memory, DMA or other resources needed to service the specific
event.
- Owner link has access to
control and status register to read flag, enable/disable an interrupt
line, clear the flag or force the flag high. As well has permissions to
read and clear the overflow flag.
- The Current Link ID
provided by the CPU is compared against owner link for Interrupt
operational registers.
- Boot link: boot link handles device boot and
initialization including that of interrupts.
- User Boot Link: User boot
links do not have special privileges to access PIPE or interrupt
registers.
- Secure root Link: This is the root of trust for
security code of the device and shall have access to PIPE configuration
registers and vector table. Configuration registers hold information like the
owner link, caller link, priority, vector address of the interrupt line.
- Caller Link: Caller links are used to share
common code libraries across multiple links.
- The owner link of an
interrupt line (like RTINTn) can call a common code function (from
another link) in an ISR. In such a case, it is checked whether the
caller link is the owner link.
- Configuration registers
like priority can only be updated by the “secure root link”. In this
case, the owner link can be the caller link of a “Secure Root Link”
function.