1mx6memcal - a tool for calibrating DDR on i.MX6 boards. 2 3The mx6memcal board isn't a real board, but a tool for use in bring-up of 4new i.MX6 board designs. 5 6It provides a similar function to the tool from NXP([1]) with a number 7of advantages: 8 91. 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. 122. 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?). 183. It doesn't prompt for parameters, so it's much faster to gather 19 data from multiple boards. 204. Parameters to the calibration process can be chosen through 21 'make menuconfig'. 22 23When booted, the mx6memcal board will run the DDR calibration 24routines and display the result in a form suitable for cut and 25paste into struct mx6_mmdc_calibration. It can also optionally 26produce output in a form usable in a DCD-style .cfg file. 27 28Selections in Kconfig allow most system design settings to be chosen: 29 301. 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). 332. The memory bus width (64 and 32-bit) 343. The number of chip-selects in use 354. The type of DDR (DDR3 or LPDDR2). Note that LPDDR2 support 36 is incomplete as of this writing. 375. 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 396. The On-die termination value for the DRAM lines 407. The DRAM drive strength 418. The RTT_NOM and RTT_WR termination settings 429. RALAT/WALAT latency values 43 44References: 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 50