This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LS3137: checkRAMECC: Writing to ECC memory location

Part Number: TMS570LS3137
Other Parts Discussed in Thread: HALCOGEN

Hello,

This question is related to below set of instructions in checkRAMECC() in sys_selftest.c file generated by HALCOGEN version 4.7:

/* Force a single bit error in both the banks */
_coreDisableRamEcc_();
tcramA1bitError ^= 1U;
tcramB1bitError ^= 1U;
_coreEnableRamEcc_();

When toggling BIT-0 of RAM ECC location 0x08400000 i code see other bits of the ECC location also changing: Below is the observed behaviour:

1. Just before toggling, i could see 0x0C0C0C0C data at 0x08400000 in memory browser.

2. after toggling bit-0, i see the value at 0x08400000 as 0x0D0D0D0D. 

Why BIT-8, BIT-16 and BIT-24 are also changing? Can you please help me to understand this behaviour and please provide me some documentation related to this behaviour.

Thanks in advance.

Below is a snippet from SPNU499C document:

6.1.2 Main Features
The main features of the tightly-coupled RAM interface module are:
• Controls read/write accesses to the data RAM
• Decodes addresses within the memory region allocated for the RAM
• Supports read and write accesses in 64-bit, 32-bit, 16-bit or 8-bit access sizes
– Does not support bit-wise operations

Regards,

Kalyan

  • Hell Kalyan,

    The RAM for LS3137 is from 0x0800_0000 to 0x0803_FFFF, and RAM ECC is from 0x0840_0000 to 0x0843_FFFF.

    The 8-bit ECC of 64-bit data at 0x0800_0000 is written to all the 8-bytes starting from 0x0840_00000

    The 8-bit ECC of 64-bit data at 0x0800_0008 is written to all the 8-bytes starting from 0x0840_00008