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