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.
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