The behavior of the program memory
depends on the state of the MMEMCFG[PROGE] bit. This bit controls whether the memory
is mapped to CLA space or CPU space.
- MMEMCFG[PROGE] == 0
In this case, the memory is
mapped to the CPU. The CLA is halted and no tasks can be incoming.
- Any CLA fetch is
treated as an illegal opcode condition as described in Section 7.4.4. This condition does not occur, if the proper procedure is
followed to map the program memory.
- CLA reads and writes
cannot occur
- The memory block
behaves as any normal RAM block mapped to CPU memory space.
Priority of accesses are
(highest priority first):
- CPU data write,
program write, debug write
- CPU data read,
program read, debug read
- CPU fetch, program
read
- MMEMCFG[PROGE] == 1
In this case, the memory
block is mapped to CLA space. The CPU can only make debug accesses.
- CLA reads and writes
cannot occur
- CLA fetches are
allowed
- CPU fetches return 0
that is an illegal opcode and causes an ITRAP interrupt.
- CPU data reads and
program reads return 0
- CPU data writes and
program writes are ignored
Priority
of accesses are (highest priority first):
- CLA fetch
- CPU debug write
- CPU debug read
Note: Because the CLA fetch has higher
priority than CPU debug reads, there is a possibility for the CLA to permanently
block debug accesses if the CLA is executing in a loop. This can occur when
initially developing CLA code due to a bug. To avoid this issue, the program memory
returns all 0x0000 for CPU debug reads (ignore writes) when the CLA is running. When
the CLA is halted or idle, then normal CPU debug read and write access can be
performed.