mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-19 08:28:51 +09:00
136 lines
3.6 KiB
Plaintext
136 lines
3.6 KiB
Plaintext
|
|
|
|
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).
|
|
|
|
|