Hi!
I'm trying to bring up a custom imx6q board using JTAG, because it has only NAND for booting and no SD connector attached. The design has imx6q and two DDR3 chips (MT41J256M16HA-125:E) populated. First of all I try to use the DDR stress test tool v2.40 to test and calibrate DDR3 memory. The test I took from here:
i.MX6/7 DDR Stress Test Tool V2.40
It starts, I can choose options but then it hangs. I don't know why and where in the code. I don't the sources.
============================================
DDR Stress Test (2.4.0)
Build: Dec 11 2015, 11:09:30
Freescale Semiconductor, Inc.
============================================
============================================
Chip ID
CHIP ID = i.MX6 Dual/Quad (0x63)
Internal Revision = TO1.5
============================================
============================================
Boot Configuration
SRC_SBMR1(0x020d8004) = 0x00003050
SRC_SBMR2(0x020d801c) = 0x22000001
============================================
What ARM core speed would you like to run?
Type 1 for 800MHz, 2 for 1GHz, 3 for 1.2GHz
ARM Clock set to 1GHz
============================================
DDR configuration
BOOT_CFG3[5-4]: 0x00, Single DDR channel.
DDR type is DDR3
Data width: 32, bank num: 8
Row size: 14, col size: 10
No chip select is enabled
Density per chip select: 512MB
============================================
Current Tempareture: 31
============================================
Please select the DDR density per chip select (in bytes) on the board
Type 0 for 2GB; 1 for 1GB; 2 for 512MB; 3 for 256MB; 4 for 128MB; 5 for 64MB; 6 for 32MB
For maximum supported density (4GB), we can only access up to 3.75GB. Type 7 to select this
DDR density selected (MB): 512
Would do you want run DDR Calibration? Type 'y' to run and 'n' to skip
Calibration will run at DDR frequency 528MHz. Type 'y' to continue.
If you want to run at other DDR frequency. Type 'n'
Enter the DDR frequency for calibration [350MHz to 528MHz]:
350
The freq you entered was: 350
Please enter the MR1 value on the initilization script
This will be re-programmed into MR1 after write leveling calibration
Enter as a 4-digit HEX value, example 0004, then hit enter
0004DDR Freq: 352 MHz
ddr_mr1=0x00000004
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) = 0x00010001
MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x00010001
Write DQS delay result:
Write DQS0 delay: 1/256 CK
Write DQS1 delay: 1/256 CK
Write DQS2 delay: 1/256 CK
Write DQS3 delay: 1/256 CK
Please suggest what to do next
Hi Maxim
one can attach jtag debugger as described in i.MX6 System Development User’s Guide
Chapter 7 Configuring JTAG Tools, use board scripts from ddr test link,
update script with own init ddr codes. Then try read/write from some memory address,
observing ddr signals with oscilloscope.
Best regards
igor
Hi Igor!
I don't like the message that "No chip select is enabled" in the stress tool. I'm pretty sure the problem lies here. Where should it be enabled?
By the way I tried to request the sources of the DDR3 stress tool with Avnet representative, but NXP refused to. Will try to figure out what is wrong myself
Hi Maxim
suggest also try older version
i.MX6 DDR Stress Test Tool V1.0.3
then run simple read/write test with jtag and check if board
hangs. Recommended to check Chapter 8 Avoiding Board Bring-up Problems
i.MX6 System Development User’s Guide
http://cache.freescale.com/files/32bit/doc/user_guide/IMX6DQ6SDLHDG.pdf
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor!
Thank you for your help!
1.0.3 works even worse because it hangs right here:
******************************
DDR Stress Test (1.0.3) for MX6DQ
Build: Sep 18 2014, 11:11:44
Freescale Semiconductor, Inc.
******************************
=======DDR configuration==========
BOOT_CFG3[5-4]: 0x00, Single DDR channel.
DDR type is DDR3
Data width: 32, bank num: 8
Row size: 14, col size: 10
No chip select is enabled
Density per chip select: 512MB
==================================
What ARM core speed would you like to run?
Type 0 for 650MHz, 1 for 800MHz, 2 for 1GHz, 3 for 1.2GHz
ARM set to 1GHz
Please select the DDR density per chip select (in bytes) on the board
Type 0 for 2GB; 1 for 1GB; 2 for 512MB; 3 for 256MB; 4 for 128MB; 5 for 64MB; 6 for 32MB
For maximum supported density (4GB), we can only access up to 3.75GB. Type 9 to select this
DDR density selected (MB): 64
Calibration will run at DDR frequency 528MHz. Type 'y' to continue.
If you want to run at other DDR frequency. Type 'n'
please tell how to do simple memory read/writes with JTAG
I can see that when I run tests the tool reports:
BOOT_CFG3[5-4]: 0x00, Single DDR channel.
DDR type is DDR3
Data width: 32, bank num: 8
Row size: 14, col size: 10
No chip select is enabled
Density per chip select: 512MB
while I saw other logs where CS0 used:
Chip select CSD0 is used
How can I enable CS0?