The VIM aggregates device interrupts and sends them to the R5F CPU(s). It can be used in either split or lockstep configuration. In split, it has two independent interrupt cores, one per CPU. In lockstep, CPU1 acts as a diagnostic on CPU0; only CPU0’s outputs are used but all outputs are compared to CPU1 to provide diagnostic coverage.
The VIM module supports the following features:
- 512 interrupt inputs per R5F core
- Each interrupt has its own 4-bit programmable priority
- Defined via the R5FSS_VIM_PRI_INT_j register
- The VIM provides support for priority interruption of interrupts
- Each interrupt has its own enable mask
- Interrupt enable is done via the
R5FSS_VIM_INTR_EN_SET_j register
- Interrupt disable is done via the
R5FSS_VIM_INTR_EN_CLR_j register
- Each interrupt can be programmed as either an IRQ or FIQ
- Defined via the R5FSS_VIM_INTMAP_j register
- Each interrupt has its own programmable 32-bit vector address associated with it
- Defined via the R5FSS_VIM_VEC_INT_j register
- Protected with SECDED
- One IRQn and one FIQn output per core
- Vectored interrupt interface
- Compatible with R5F VIC port
- Default vector provided when a double-bit error is detected
- Split or lockstep capable
- In lockstep mode, only interrupts connected to VIM interrupt core 0 are available
- Software interrupt generation