Other Parts Discussed in Thread: TMS320F28377D, CONTROLSUITE
We’re trying to verify that ECC RAM is working correctly at runtime for a TMS320F28377D. Tentatively, we were planning to test the single bit correction as follows:
- Set a word of memory to a known value
- Change the memory mapping of ECC RAM from Functional Mode to Data or ECC Mode using the DxTEST register
- Flip a single bit
- Change the memory mapping back to Functional Mode
- Read the word of memory and verify its set to the correct value
- Check the CERRCNT register and verify it incremented
- Check the CERRFLG register and verify DMARDERR is set
- Check the CCPUREADDR register and verify it is set to the correct address
We’ve successfully completed steps 1 – 5, however we’re having trouble with steps 6 – 8. Looking at the memory mapping for those registers, all 3 values always remain 0.
We were also planning to test the 2 bit error detection (similar to steps 1 – 4). After injecting an error, we were planning to:
- Check the UCERRFLG register and verify DMARDERR is set
- Check the UCDMAREADDR register and verify it is set to the correct address
- Check the NMIFLG register and verify RAMUNCERR is set (Not sure if this will work since we’ve disabled Non-Maskable interrupts)
These 3 values also remain 0. In fact, we’ve never seen any of the MemoryErrorRegs (0x0005_F500 – 0x0005_F53F) set to anything other than 0. It’s also worth noting, the MemoryErrorRegs don’t appear in the Registers tab of the debugger (CCS 6.1.0.000104).
Appreciate any suggestions you may have for us