10 10. 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:
| |
| Workaround Either of the following workarounds can be used to overcome the issue. Workaround 1 Place the IVT in RAM instead of Flash. This option is recommended for the best performance, as all interrupts will have 2-5 clocks less latency, and up to 3 clocks of latency jitter will be removed each time the CPU fetches an IVT entry. Example
1 |
|
Workaround 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 =
Example 3
| |||||||||||||||||
Affected Silicon Revisions
|
