26. Module: CPU
|
If a Prefetch Branch Unit (PBU) cache invalidation request is
issued and immediately followed by the CPU reading an IVT entry
from Flash for exception processing, the CPU may enter a
perpetually stalled state. The CPU will only recover in response
to a hardware reset (Watchdog Timeout, MCLR, POR, etc.). Cache
invalidation requests capable of triggering this erratum have
three possible sources:
| |
| Work around Either of the following workarounds can be used to overcome the issue. Work around 1 Place the IVT in RAM instead of Flash. This option is recommended for best performance, as all interrupts will have 2 to 5 fewer clock cycles of latency, and up to 3 clocks of latency jitter will be removed each time the CPU fetches an IVT entry. Example
1 Work around 2 Temporarily block all IVT vector fetches while triggering cache invalidation events. This option suspends interrupts but continues to allow traps to be detected and immediately serviced by a common handler routine. Example
2 |
| Since this workaround blocks interrupts, and RTSP code often sets
NVMCON[WR] many times before executing from any of the
erased/reprogrammed address ranges, it is suggested that the
CHECON[CHECOH] bit be cleared at Reset/code initialization. In such
cases, this workaround would only need to be applied to manual cache
invalidation and BOOTSWP events, not to NVMCONbits.WR = 1 operations.
After all RTSP operations are complete, one manually triggered cache
invalidation can be performed if there is any chance that stale
instructions remain in the cache from before starting the RTSP
session. Example 3 | |||||||||||||||||
Affected Silicon Revisions
|
