|
@@ -15,10 +15,10 @@ IMPORTANT NOTICE: enabling injecting multiple-bit errors is potentially
|
|
|
dangerous as such errors are NOT corrected by the controller. Therefore caution
|
|
|
should be taken when enabling the injection of multiple-bit errors: it is only
|
|
|
safe when used on a carefully selected memory area and used under control of
|
|
|
-the 'ecc test' command (see example 'Injecting Multiple-Bit Errors' below). In
|
|
|
-particular, when you simply set the multiple-bit errors in inject mask and
|
|
|
-enable injection, U-Boot is very likely to hang quickly as the errors will be
|
|
|
-injected when it accesses its code, data etc.
|
|
|
+the 'ecc testdw' 'ecc testword' command (see example 'Injecting Multiple-Bit
|
|
|
+Errors' below). In particular, when you simply set the multiple-bit errors in
|
|
|
+inject mask and enable injection, U-Boot is very likely to hang quickly as the
|
|
|
+errors will be injected when it accesses its code, data etc.
|
|
|
|
|
|
|
|
|
Use cases for DDR 'ecc' command:
|
|
@@ -40,7 +40,7 @@ Injecting Single-Bit Errors
|
|
|
|
|
|
2. Run test over some memory region
|
|
|
|
|
|
-=> ecc test 200000 10
|
|
|
+=> ecc testdw 200000 10
|
|
|
|
|
|
3. Check ECC status
|
|
|
|
|
@@ -61,57 +61,57 @@ Memory Error Detect:
|
|
|
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
|
|
|
+4. Make sure used memory region got re-initialized with 0x0123456789abcdef
|
|
|
|
|
|
=> 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 ................
|
|
|
+00200000: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200010: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200020: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200030: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200040: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200050: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200060: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200070: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
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
|
|
|
+=> ecc injectdatahi 1
|
|
|
+=> ecc injectdatalo 1
|
|
|
|
|
|
2. Run test over some memory region
|
|
|
|
|
|
-=> ecc test 200000 10
|
|
|
+=> ecc testword 200000 1
|
|
|
|
|
|
3. Check ECC status
|
|
|
|
|
|
=> ecc status
|
|
|
...
|
|
|
-Memory Data Path Error Injection Mask High/Low: 00000005 00000000
|
|
|
+Memory Data Path Error Injection Mask High/Low: 00000001 00000001
|
|
|
...
|
|
|
Memory Error Detect:
|
|
|
- Multiple Memory Errors: 1
|
|
|
+ Multiple Memory Errors: 0
|
|
|
Multiple-Bit Error: 1
|
|
|
Single-Bit Error: 0
|
|
|
...
|
|
|
|
|
|
-Observe that both Multiple Memory Errors and Multiple-Bit Error flags are set.
|
|
|
+The Multiple Memory Errors flags not set and Multiple-Bit Error flags are set.
|
|
|
|
|
|
-4. Make sure used memory region got re-initialized with 0xcafecafe pattern
|
|
|
+4. Make sure used memory region got re-initialized with 0x0123456789abcdef
|
|
|
|
|
|
=> 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 ................
|
|
|
+00200000: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200010: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200020: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200030: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200040: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200050: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200060: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
+00200070: 01234567 89abcdef 01234567 89abcdef .#Eg.....#Eg....
|
|
|
00200080: deadbeef deadbeef deadbeef deadbeef ................
|
|
|
00200090: deadbeef deadbeef deadbeef deadbeef ................
|
|
|
|
|
@@ -140,7 +140,7 @@ Test Single-Bit Error Counter and Threshold
|
|
|
...
|
|
|
Memory Single-Bit Error Management (0..255):
|
|
|
Single-Bit Error Threshold: 255
|
|
|
- Single Bit Error Counter: 60
|
|
|
+ Single Bit Error Counter: 199
|
|
|
|
|
|
Memory Error Detect:
|
|
|
Multiple Memory Errors: 1
|