123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- Use cases for DDR 'ecc' command:
- ================================
- Before executing particular tests reset target board or clear status registers:
- => ecc captureclear
- => ecc errdetectclr all
- => ecc sbecnt 0
- Injecting Single-Bit Errors
- ---------------------------
- 1. Set 1 bit in Data Path Error Inject Mask
- => ecc injectdatahi 1
- 2. Run test over some memory region
- => ecc test 200000 10
- 3. Check ECC status
- => ecc status
- ...
- Memory Data Path Error Injection Mask High/Low: 00000001 00000000
- ...
- Memory Single-Bit Error Management (0..255):
- Single-Bit Error Threshold: 255
- Single Bit Error Counter: 16
- ...
- Memory Error Detect:
- Multiple Memory Errors: 0
- Multiple-Bit Error: 0
- Single-Bit Error: 0
- ...
- 16 errors were generated, Single-Bit Error flag was not set as Single Bit Error
- Counter did not reach Single-Bit Error Threshold.
- 4. Make sure used memory region got re-initialized with 0xcafecafe pattern
- => md 200000
- 00200000: cafecafe cafecafe cafecafe cafecafe ................
- 00200010: cafecafe cafecafe cafecafe cafecafe ................
- 00200020: cafecafe cafecafe cafecafe cafecafe ................
- 00200030: cafecafe cafecafe cafecafe cafecafe ................
- 00200040: cafecafe cafecafe cafecafe cafecafe ................
- 00200050: cafecafe cafecafe cafecafe cafecafe ................
- 00200060: cafecafe cafecafe cafecafe cafecafe ................
- 00200070: cafecafe cafecafe cafecafe cafecafe ................
- 00200080: deadbeef deadbeef deadbeef deadbeef ................
- 00200090: deadbeef deadbeef deadbeef deadbeef ................
- Injecting Multiple-Bit Errors
- -----------------------------
- 1. Set more than 1 bit in Data Path Error Inject Mask
- => ecc injectdatahi 5
- 2. Run test over some memory region
- => ecc test 200000 10
- 3. Check ECC status
- => ecc status
- ...
- Memory Data Path Error Injection Mask High/Low: 00000005 00000000
- ...
- Memory Error Detect:
- Multiple Memory Errors: 1
- Multiple-Bit Error: 1
- Single-Bit Error: 0
- ...
- Observe that both Multiple Memory Errors and Multiple-Bit Error flags are set.
- 4. Make sure used memory region got re-initialized with 0xcafecafe pattern
- => md 200000
- 00200000: cafecafe cafecafe cafecafe cafecafe ................
- 00200010: cafecafe cafecafe cafecafe cafecafe ................
- 00200020: cafecafe cafecafe cafecafe cafecafe ................
- 00200030: cafecafe cafecafe cafecafe cafecafe ................
- 00200040: cafecafe cafecafe cafecafe cafecafe ................
- 00200050: cafecafe cafecafe cafecafe cafecafe ................
- 00200060: cafecafe cafecafe cafecafe cafecafe ................
- 00200070: cafecafe cafecafe cafecafe cafecafe ................
- 00200080: deadbeef deadbeef deadbeef deadbeef ................
- 00200090: deadbeef deadbeef deadbeef deadbeef ................
- Test Single-Bit Error Counter and Threshold
- -------------------------------------------
- 1. Set 1 bit in Data Path Error Inject Mask
- => ecc injectdatahi 1
- 2. Enable error injection
- => ecc inject en
- 3. Let u-boot run for a with Single-Bit error injection enabled
- 4. Disable error injection
- => ecc inject dis
- 4. Check status
- => ecc status
- ...
- Memory Single-Bit Error Management (0..255):
- Single-Bit Error Threshold: 255
- Single Bit Error Counter: 60
- Memory Error Detect:
- Multiple Memory Errors: 1
- Multiple-Bit Error: 0
- Single-Bit Error: 1
- ...
- Observe that Single-Bit Error is 'on' which means that Single-Bit Error Counter
- reached Single-Bit Error Threshold. Multiple Memory Errors bit is also 'on', that
- is Counter reached Threshold more than one time (it wraps back after reaching
- Threshold).
|