uboot/doc/README.mpc83xx.ddrecc
<<
>>
Prefs
   1Overview
   2========
   3
   4The overall usage pattern for ECC diagnostic commands is the following:
   5
   6  * (injecting errors is initially disabled)
   7
   8  * define inject mask (which tells the DDR controller what type of errors
   9    we'll be injecting: single/multiple bit etc.)
  10
  11  * enable injecting errors - from now on the controller injects errors as
  12    indicated in the inject mask
  13
  14IMPORTANT NOTICE: enabling injecting multiple-bit errors is potentially
  15dangerous as such errors are NOT corrected by the controller. Therefore caution
  16should be taken when enabling the injection of multiple-bit errors: it is only
  17safe when used on a carefully selected memory area and used under control of
  18the 'ecc testdw' 'ecc testword' command (see example 'Injecting Multiple-Bit
  19Errors' below). In particular, when you simply set the multiple-bit errors in
  20inject mask and enable injection, U-Boot is very likely to hang quickly as the
  21errors will be injected when it accesses its code, data etc.
  22
  23
  24Use cases for DDR 'ecc' command:
  25================================
  26
  27Before executing particular tests reset target board or clear status registers:
  28
  29=> ecc captureclear
  30=> ecc errdetectclr all
  31=> ecc sbecnt 0
  32
  33
  34Injecting Single-Bit Errors
  35---------------------------
  36
  371. Set 1 bit in Data Path Error Inject Mask
  38
  39=> ecc injectdatahi 1
  40
  412. Run test over some memory region
  42
  43=> ecc testdw 200000 10
  44
  453. Check ECC status
  46
  47=> ecc status
  48...
  49Memory Data Path Error Injection Mask High/Low: 00000001 00000000
  50...
  51Memory Single-Bit Error Management (0..255):
  52  Single-Bit Error Threshold: 255
  53  Single Bit Error Counter: 16
  54...
  55Memory Error Detect:
  56  Multiple Memory Errors: 0
  57  Multiple-Bit Error: 0
  58  Single-Bit Error: 0
  59...
  60
  6116 errors were generated, Single-Bit Error flag was not set as Single Bit Error
  62Counter did not reach  Single-Bit Error Threshold.
  63
  644. Make sure used memory region got re-initialized with 0x0123456789abcdef
  65
  66=> md 200000
  6700200000: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
  6800200010: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
  6900200020: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
  7000200030: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
  7100200040: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
  7200200050: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
  7300200060: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
  7400200070: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
  7500200080: deadbeef deadbeef deadbeef deadbeef    ................
  7600200090: deadbeef deadbeef deadbeef deadbeef    ................
  77
  78Injecting Multiple-Bit Errors
  79-----------------------------
  80
  811. Set more than 1 bit in Data Path Error Inject Mask
  82
  83=> ecc injectdatahi 1
  84=> ecc injectdatalo 1
  85
  862. Run test over some memory region
  87
  88=> ecc testword 200000 1
  89
  903. Check ECC status
  91
  92=> ecc status
  93...
  94Memory Data Path Error Injection Mask High/Low: 00000001 00000001
  95...
  96Memory Error Detect:
  97  Multiple Memory Errors: 0
  98  Multiple-Bit Error: 1
  99  Single-Bit Error: 0
 100...
 101
 102The Multiple Memory Errors flags not set and Multiple-Bit Error flags are set.
 103
 1044. Make sure used memory region got re-initialized with 0x0123456789abcdef
 105
 106=> md 200000
 10700200000: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
 10800200010: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
 10900200020: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
 11000200030: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
 11100200040: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
 11200200050: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
 11300200060: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
 11400200070: 01234567 89abcdef 01234567 89abcdef    .#Eg.....#Eg....
 11500200080: deadbeef deadbeef deadbeef deadbeef    ................
 11600200090: deadbeef deadbeef deadbeef deadbeef    ................
 117
 118
 119Test Single-Bit Error Counter and Threshold
 120-------------------------------------------
 121
 1221. Set 1 bit in Data Path Error Inject Mask
 123
 124=> ecc injectdatahi 1
 125
 1262. Enable error injection
 127
 128=> ecc inject en
 129
 1303. Let u-boot run for a with Single-Bit error injection enabled
 131
 1324. Disable error injection
 133
 134=> ecc inject dis
 135
 1364. Check status
 137
 138=> ecc status
 139
 140...
 141Memory Single-Bit Error Management (0..255):
 142  Single-Bit Error Threshold: 255
 143  Single Bit Error Counter: 199
 144
 145Memory Error Detect:
 146  Multiple Memory Errors: 1
 147  Multiple-Bit Error: 0
 148  Single-Bit Error: 1
 149...
 150
 151Observe that Single-Bit Error is 'on' which means that Single-Bit Error Counter
 152reached Single-Bit Error Threshold. Multiple Memory Errors bit is also 'on', that
 153is Counter reached Threshold more than one time (it wraps back after reaching
 154Threshold).
 155