Hi Igor
One more symptom when I tested the DDR.
When the board doesn't turn on/off/on quickly within 3 seconds, the board is stuck although it goes into the serial boot mode automatically.
At the serial boot mode for DDR test, the freescale DDR Test tool shows the error like below when I tried to load the "init Script".
"ERROR: Write dcd failed."
By the way, I also tested the internal oscillator instead of the external 32.768KHz followed by the errata. But, it doesn't help fix the boot issue.
In addition, I extend the POR_B manually up to around 1 seconds and release it to run the IMX. This doesn't help either.
This is the result of the calibration when the board goes into the serial boot mode normally.
============================================
Chip ID
CHIP ID = i.MX6 Dual/Quad (0x63)
Internal Revision = TO1.5
============================================
============================================
Boot Configuration
SRC_SBMR1(0x020d8004) = 0x00002060
SRC_SBMR2(0x020d801c) = 0x21000011
============================================
ARM Clock set to 1GHz
============================================
DDR configuration
BOOT_CFG3[5-4]: 0x00, Single DDR channel.
DDR type is DDR3
Data width: 64, bank num: 8
Row size: 14, col size: 10
Chip select CSD0 is used
Density per chip select: 1024MB
============================================
Current Temperature: 62
============================================
DDR Freq: 528 MHz
ddr_mr1=0x00000001
Start write leveling calibration...
running Write level HW calibration
Write leveling calibration completed, update the following registers in your initialization script
MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x00080013
MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x002B001E
MMDC_MPWLDECTRL0 ch1 (0x021b480c) = 0x000D0025
MMDC_MPWLDECTRL1 ch1 (0x021b4810) = 0x00000000
Write DQS delay result:
Write DQS0 delay: 19/256 CK
Write DQS1 delay: 8/256 CK
Write DQS2 delay: 30/256 CK
Write DQS3 delay: 43/256 CK
Write DQS4 delay: 37/256 CK
Write DQS5 delay: 13/256 CK
Write DQS6 delay: 0/256 CK
Write DQS7 delay: 0/256 CK
Starting DQS gating calibration
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BYTE 0:
Start: HC=0x02 ABS=0x18
End: HC=0x05 ABS=0x4C
Mean: HC=0x03 ABS=0x71
End-0.5*tCK: HC=0x04 ABS=0x4C
Final: HC=0x04 ABS=0x4C
BYTE 1:
Start: HC=0x02 ABS=0x10
End: HC=0x05 ABS=0x3C
Mean: HC=0x03 ABS=0x65
End-0.5*tCK: HC=0x04 ABS=0x3C
Final: HC=0x04 ABS=0x3C
BYTE 2:
Start: HC=0x03 ABS=0x10
End: HC=0x05 ABS=0x48
Mean: HC=0x04 ABS=0x2C
End-0.5*tCK: HC=0x04 ABS=0x48
Final: HC=0x04 ABS=0x48
BYTE 3:
Start: HC=0x03 ABS=0x0C
End: HC=0x05 ABS=0x4C
Mean: HC=0x04 ABS=0x2C
End-0.5*tCK: HC=0x04 ABS=0x4C
Final: HC=0x04 ABS=0x4C
BYTE 4:
Start: HC=0x03 ABS=0x00
End: HC=0x05 ABS=0x48
Mean: HC=0x04 ABS=0x24
End-0.5*tCK: HC=0x04 ABS=0x48
Final: HC=0x04 ABS=0x48
BYTE 5:
Start: HC=0x02 ABS=0x10
End: HC=0x05 ABS=0x3C
Mean: HC=0x03 ABS=0x65
End-0.5*tCK: HC=0x04 ABS=0x3C
Final: HC=0x04 ABS=0x3C
BYTE 6:
Start: HC=0x02 ABS=0x64
End: HC=0x05 ABS=0x0C
Mean: HC=0x03 ABS=0x77
End-0.5*tCK: HC=0x04 ABS=0x0C
Final: HC=0x04 ABS=0x0C
BYTE 7:
Start: HC=0x03 ABS=0x00
End: HC=0x05 ABS=0x34
Mean: HC=0x04 ABS=0x1A
End-0.5*tCK: HC=0x04 ABS=0x34
Final: HC=0x04 ABS=0x34
DQS calibration MMDC0 MPDGCTRL0 = 0x443C044C, MPDGCTRL1 = 0x044C0448
DQS calibration MMDC1 MPDGCTRL0 = 0x443C0448, MPDGCTRL1 = 0x0434040C
Note: Array result[] holds the DRAM test result of each byte.
0: test pass. 1: test fail
4 bits respresent the result of 1 byte.
result 00000001:byte 0 fail.
result 00000011:byte 0, 1 fail.
Starting Read calibration...
ABS_OFFSET=0x00000000 result[00]=0x11111111
ABS_OFFSET=0x04040404 result[01]=0x11111111
ABS_OFFSET=0x08080808 result[02]=0x11111111
ABS_OFFSET=0x0C0C0C0C result[03]=0x11011111
ABS_OFFSET=0x10101010 result[04]=0x00011011
ABS_OFFSET=0x14141414 result[05]=0x00010011
ABS_OFFSET=0x18181818 result[06]=0x00010001
ABS_OFFSET=0x1C1C1C1C result[07]=0x00010000
ABS_OFFSET=0x20202020 result[08]=0x00000000
ABS_OFFSET=0x24242424 result[09]=0x00000000
ABS_OFFSET=0x28282828 result[0A]=0x00000000
ABS_OFFSET=0x2C2C2C2C result[0B]=0x00000000
ABS_OFFSET=0x30303030 result[0C]=0x00000000
ABS_OFFSET=0x34343434 result[0D]=0x00000000
ABS_OFFSET=0x38383838 result[0E]=0x00000000
ABS_OFFSET=0x3C3C3C3C result[0F]=0x00000000
ABS_OFFSET=0x40404040 result[10]=0x00000000
ABS_OFFSET=0x44444444 result[11]=0x00000000
ABS_OFFSET=0x48484848 result[12]=0x00000000
ABS_OFFSET=0x4C4C4C4C result[13]=0x00000100
ABS_OFFSET=0x50505050 result[14]=0x01100100
ABS_OFFSET=0x54545454 result[15]=0x11101110
ABS_OFFSET=0x58585858 result[16]=0x11101110
ABS_OFFSET=0x5C5C5C5C result[17]=0x11111111
ABS_OFFSET=0x60606060 result[18]=0x11111111
ABS_OFFSET=0x64646464 result[19]=0x11111111
ABS_OFFSET=0x68686868 result[1A]=0x11111111
ABS_OFFSET=0x6C6C6C6C result[1B]=0x11111111
ABS_OFFSET=0x70707070 result[1C]=0x11111111
ABS_OFFSET=0x74747474 result[1D]=0x11111111
ABS_OFFSET=0x78787878 result[1E]=0x11111111
ABS_OFFSET=0x7C7C7C7C result[1F]=0x11111111
Byte 0: (0x1c - 0x58), middle value:0x3a
Byte 1: (0x18 - 0x50), middle value:0x34
Byte 2: (0x10 - 0x48), middle value:0x2c
Byte 3: (0x14 - 0x50), middle value:0x32
Byte 4: (0x20 - 0x58), middle value:0x3c
Byte 5: (0x0c - 0x4c), middle value:0x2c
Byte 6: (0x10 - 0x4c), middle value:0x2e
Byte 7: (0x10 - 0x50), middle value:0x30
MMDC0 MPRDDLCTL = 0x322C343A, MMDC1 MPRDDLCTL = 0x302E2C3C
Starting Write calibration...
ABS_OFFSET=0x00000000 result[00]=0x11111111
ABS_OFFSET=0x04040404 result[01]=0x10111111
ABS_OFFSET=0x08080808 result[02]=0x10110110
ABS_OFFSET=0x0C0C0C0C result[03]=0x10100010
ABS_OFFSET=0x10101010 result[04]=0x00100000
ABS_OFFSET=0x14141414 result[05]=0x00000000
ABS_OFFSET=0x18181818 result[06]=0x00000000
ABS_OFFSET=0x1C1C1C1C result[07]=0x00000000
ABS_OFFSET=0x20202020 result[08]=0x00000000
ABS_OFFSET=0x24242424 result[09]=0x00000000
ABS_OFFSET=0x28282828 result[0A]=0x00000000
ABS_OFFSET=0x2C2C2C2C result[0B]=0x00000000
ABS_OFFSET=0x30303030 result[0C]=0x00000000
ABS_OFFSET=0x34343434 result[0D]=0x00000000
ABS_OFFSET=0x38383838 result[0E]=0x00000000
ABS_OFFSET=0x3C3C3C3C result[0F]=0x00000000
ABS_OFFSET=0x40404040 result[10]=0x00000000
ABS_OFFSET=0x44444444 result[11]=0x00000000
ABS_OFFSET=0x48484848 result[12]=0x01000000
ABS_OFFSET=0x4C4C4C4C result[13]=0x01000000
ABS_OFFSET=0x50505050 result[14]=0x01000001
ABS_OFFSET=0x54545454 result[15]=0x01000011
ABS_OFFSET=0x58585858 result[16]=0x01000011
ABS_OFFSET=0x5C5C5C5C result[17]=0x11000011
ABS_OFFSET=0x60606060 result[18]=0x11000011
ABS_OFFSET=0x64646464 result[19]=0x11011111
ABS_OFFSET=0x68686868 result[1A]=0x11111111
ABS_OFFSET=0x6C6C6C6C result[1B]=0x11111111
ABS_OFFSET=0x70707070 result[1C]=0x11111111
ABS_OFFSET=0x74747474 result[1D]=0x11111111
ABS_OFFSET=0x78787878 result[1E]=0x11111111
ABS_OFFSET=0x7C7C7C7C result[1F]=0x11111111
Byte 0: (0x08 - 0x4c), middle value:0x2a
Byte 1: (0x10 - 0x50), middle value:0x30
Byte 2: (0x0c - 0x60), middle value:0x36
Byte 3: (0x08 - 0x60), middle value:0x34
Byte 4:
Byte 5: (0x14 - 0x64), middle value:0x3c
Byte 6: (0x04 - 0x44), middle value:0x24
Byte 7: (0x10 - 0x58), middle value:0x34
MMDC0 MPWRDLCTL = 0x3436302A,MMDC1 MPWRDLCTL = 0x34243C36
MMDC registers updated from calibration
Write leveling calibration
MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x00080013
MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x002B001E
MMDC_MPWLDECTRL0 ch1 (0x021b480c) = 0x000D0025
MMDC_MPWLDECTRL1 ch1 (0x021b4810) = 0x00000000
Read DQS Gating calibration
MPDGCTRL0 PHY0 (0x021b083c) = 0x443C044C
MPDGCTRL1 PHY0 (0x021b0840) = 0x044C0448
MPDGCTRL0 PHY1 (0x021b483c) = 0x443C0448
MPDGCTRL1 PHY1 (0x021b4840) = 0x0434040C
Read calibration
MPRDDLCTL PHY0 (0x021b0848) = 0x322C343A
MPRDDLCTL PHY1 (0x021b4848) = 0x302E2C3C
Write calibration
MPWRDLCTL PHY0 (0x021b0850) = 0x3436302A
MPWRDLCTL PHY1 (0x021b4850) = 0x34243C36
Success: DDR calibration completed!!!