Module Operation
500
SPNU563A – March 2018
Copyright © 2018, Texas Instruments Incorporated
CPU Compare Module for Cortex-R5F (CCM-R5F)
13.2.1 CPU/VIM Output Compare Diagnostic
CPU / VIM Output Compare Diagnostic can run in one of the following four operating modes:
1. Active compare lockstep mode
2. Self-test
3. Error forcing
4. Self-test error forcing
The operating mode can be selected by writing a dedicated key to the key register (MKEYx) of the
corresponding diagnostic.
NOTE:
MKEY1 and MKEY2 are used to select the operating mode for the CPU Output Compare
Diagnostic and VIM Output Compare Diagnostic, respectively.
13.2.1.1 Active Compare lockstep Mode
This is the default mode on start-up. In lockstep mode, the bus output signals of both CPUs and VIMs are
compared. A difference in the CPU compare bus outputs is indicated by signaling an error to the ESM,
which sets the error flag "CCM-R5F - CPU compare" and "CCM-R5F - VIM compare", respectively.
•
CPU types of output signals to be compared:
–
Global signals
–
Interrupt signals
–
All L1 cache interface signals
–
All cache coherency signals
–
All L1 TCM interface signals
–
All L2 AXI interface signals
–
ETM interface signals
–
FPU signals
–
All ACP interface signals
–
All AXI Peripheral port interface signals
–
All AHB Peripheral port interface signals
–
All status and control signals
•
VIM output signals to be compared:
–
nFIQ
–
nIRQ
–
IRQADDRV
–
IRQVECTADDR
NOTE:
The CPU compare error asserts “CCM-R5F self-test error” flag as well. By doing this, the
CPU compare error has two paths (“CCM-R5F - CPU compare” and “CCM-R5F self-test
error” flag) to the ESM, so that even if one of the paths fails, the error is still propagated to
the ESM. This is also true for "CCM-R5F - VIM compare" error flag.
Not all internal registers of the Cortex-R5F CPU have fixed values upon reset. To avoid an erroneous
CCM-R5F compare error, the application software needs to ensure that the CPU registers of both CPUs
are initialized with the same values before the registers are used, including function calls where the
register values are pushed onto the stack.