Part Number: AM6546
Hi,
I have been trying to test ECC mechanism for external memory for safety certification purposes. To have a wider coverage, we would like to run this test at runtime on A53 cores on VxWorks RTOS. Below I gave my findings, current test scenerio and questions I have.
According to, your safety manual (SPRUIJ5) ECC sanity test should be run on R5F (safety) cores and I designed and implemented as adviced application report (SPRACM1). It works on happy path like:
"Start-> Enable ECC W/O poisoning -> Prime DDR -> Check if there is failure -> restart -> Enable ECC with 1bit poisoning -> Check given address is corrected -> restart -> Enable ECC with 2bit poisoning -> Check interrrupt is called -> restart -> Enable ECC W/O poisoning -> continue with other applicatons."
Beside that My foundings regarding Qasi Dynamic Group 3 rules are like below:
- “Quasi-Dynamic Group 3” Register Rules
-- No Outstanding DDR Commands:
--- No AXI port has outstanding address or data beats
--- No reads, no writes, no refresh-triggered accesses
-- No Refresh in Progress:
---Group-3 registers must not be written while a refresh is active.
-- ALL AXI Ports Must Be QUIESCENT:
--- R5F must NOT be executing from DDR
--- A53 must NOT be running or accessing DDR
--- DMA engines must NOT be reading/writing DDR
--- No cached store-misses targeting DDR
--- Why? -> Because ECCCFG1 write affects the NEXT ACCESS, so all masters must be silent.
-- Writes must COMPLETE before access resumes:
--- Then one and only one DDR access should follow when doing a forced ECC error.
-- You MUST restore original value
--- Because Group-3 register changes are persistent until rewritten.
-- NO reset or retraining is required
--- This is why TI uses these registers for ASO in-field diagnostic injection.
According to these:
1- Is my current test scenerio correct?
2- Is it possible or practical leaving the 1 bit poisoning active after completion of ECC test at runtime? What would happened in worse case?
3- How does poisoning mechanism work? Is that possible to apply different patterns? Is it possible to change poison address at runtime? How is it decided which bit will be altered?
4- Is it possible to change ECC config register at runtime? Can we initialize / run ECC 1 bit poisoning test periodically on A53 cores?
Thanks in advance.
Kind regards,
Hamdi Ertan Yasar