Eric Nelson | 4c64479 | 2017-12-11 13:52:11 -0200 | [diff] [blame] | 1 | mx6memcal - a tool for calibrating DDR on i.MX6 boards. |
| 2 | |
| 3 | The mx6memcal board isn't a real board, but a tool for use in bring-up of |
| 4 | new i.MX6 board designs. |
| 5 | |
| 6 | It provides a similar function to the tool from NXP([1]) with a number |
| 7 | of advantages: |
| 8 | |
| 9 | 1. It's open-source, so it's easier to change if needed. |
| 10 | Typical reasons for needing to change include the use of alternate |
| 11 | UARTs and PMIC initialization. |
| 12 | 2. It produces an image that's directly loadable with imx_usb [2] or |
| 13 | SB_LOADER.exe [3]. |
| 14 | The NXP tool requires either a cumbersome JTAG connection that |
| 15 | makes running the DDR very slow or a working U-Boot image that |
| 16 | suffers from a chicken-and-egg problem (i.e. where do you get the |
| 17 | DDR parameters for U-Boot?). |
| 18 | 3. It doesn't prompt for parameters, so it's much faster to gather |
| 19 | data from multiple boards. |
| 20 | 4. Parameters to the calibration process can be chosen through |
| 21 | 'make menuconfig'. |
| 22 | |
| 23 | When booted, the mx6memcal board will run the DDR calibration |
| 24 | routines and display the result in a form suitable for cut and |
| 25 | paste into struct mx6_mmdc_calibration. It can also optionally |
| 26 | produce output in a form usable in a DCD-style .cfg file. |
| 27 | |
| 28 | Selections in Kconfig allow most system design settings to be chosen: |
| 29 | |
| 30 | 1. The UART number and pad configuration for the UART. Options |
| 31 | include support for the most frequent reference designs on |
| 32 | i.MX6DQ/SDL (SABRE Lite and SABRESD designs). |
| 33 | 2. The memory bus width (64 and 32-bit) |
| 34 | 3. The number of chip-selects in use |
| 35 | 4. The type of DDR (DDR3 or LPDDR2). Note that LPDDR2 support |
| 36 | is incomplete as of this writing. |
| 37 | 5. The type of DDR chips in use. This selection allows re-use of common |
| 38 | parts and four DDR3 and two LPDDR2 parts are currently defined |
| 39 | 6. The On-die termination value for the DRAM lines |
| 40 | 7. The DRAM drive strength |
| 41 | 8. The RTT_NOM and RTT_WR termination settings |
| 42 | 9. RALAT/WALAT latency values |
| 43 | |
| 44 | References: |
| 45 | [1] - NXP DDR Stress Test Tool - https://community.nxp.com/docs/DOC-105652 |
| 46 | [2] - Boundary Devices imx_usb_loader |
| 47 | https://github.com/boundarydevices/imx_usb_loader |
| 48 | [3] - Use of SB_Loader.exe |
| 49 | https://boundarydevices.com/windows-users-and-unbricking |