Blame view
doc/README.mpc83xx.ddrecc
4.55 KB
dc9e499c6 Support for DDR w... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Overview ======== The overall usage pattern for ECC diagnostic commands is the following: * (injecting errors is initially disabled) * define inject mask (which tells the DDR controller what type of errors we'll be injecting: single/multiple bit etc.) * enable injecting errors - from now on the controller injects errors as indicated in the inject mask 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 |
47e8bc846 mpc83xx: Correct ... |
18 19 20 21 |
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. |
d326f4a24 Add command for h... |
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
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 |
47e8bc846 mpc83xx: Correct ... |
42 |
=> ecc testdw 200000 10 |
d326f4a24 Add command for h... |
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
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. |
47e8bc846 mpc83xx: Correct ... |
62 |
4. Make sure used memory region got re-initialized with 0x0123456789abcdef |
d326f4a24 Add command for h... |
63 64 |
=> md 200000 |
47e8bc846 mpc83xx: Correct ... |
65 66 67 68 69 70 71 72 |
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.... |
d326f4a24 Add command for h... |
73 74 |
00200080: deadbeef deadbeef deadbeef deadbeef ................ 00200090: deadbeef deadbeef deadbeef deadbeef ................ |
d326f4a24 Add command for h... |
75 76 77 78 |
Injecting Multiple-Bit Errors ----------------------------- 1. Set more than 1 bit in Data Path Error Inject Mask |
47e8bc846 mpc83xx: Correct ... |
79 80 |
=> ecc injectdatahi 1 => ecc injectdatalo 1 |
d326f4a24 Add command for h... |
81 82 |
2. Run test over some memory region |
47e8bc846 mpc83xx: Correct ... |
83 |
=> ecc testword 200000 1 |
d326f4a24 Add command for h... |
84 85 86 87 88 |
3. Check ECC status => ecc status ... |
47e8bc846 mpc83xx: Correct ... |
89 |
Memory Data Path Error Injection Mask High/Low: 00000001 00000001 |
d326f4a24 Add command for h... |
90 91 |
... Memory Error Detect: |
47e8bc846 mpc83xx: Correct ... |
92 |
Multiple Memory Errors: 0 |
d326f4a24 Add command for h... |
93 94 95 |
Multiple-Bit Error: 1 Single-Bit Error: 0 ... |
47e8bc846 mpc83xx: Correct ... |
96 |
The Multiple Memory Errors flags not set and Multiple-Bit Error flags are set. |
d326f4a24 Add command for h... |
97 |
|
47e8bc846 mpc83xx: Correct ... |
98 |
4. Make sure used memory region got re-initialized with 0x0123456789abcdef |
d326f4a24 Add command for h... |
99 100 |
=> md 200000 |
47e8bc846 mpc83xx: Correct ... |
101 102 103 104 105 106 107 108 |
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.... |
d326f4a24 Add command for h... |
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
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 |
47e8bc846 mpc83xx: Correct ... |
137 |
Single Bit Error Counter: 199 |
d326f4a24 Add command for h... |
138 139 140 141 142 143 144 145 146 147 148 |
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). |