I am using i.MX257 processor with 256 MB(2X128MB) MDDR from Hynix “H5MS1G62BFR”. I have 25 boards that work without any issue. The board is configured to boot from SD Card.
Recently I have changed the MDDR in few board to NT6DM64M16BD-T1 from Nanya and in few other to MT46H64M16LF-6 from Micron. Though the specifications of all the three MDDR are the same the MDDRs from Nanya and Micron are not functioning.
All the three MDDRs can be operated at a maximum of 200MHz. I am operating at 133MHz because of the processor limitations.
Visual Debugging and Inspection:-
I am using U-boot 2009.08 release. All the voltages to the processor are fine. The clko pin of the processor provide 8.19KHz. In dcdheader.S, when I change the clock to the memory to 100MHz, I see the same frequency while probing the sdclk(memory clock) line. But changing the same in lowlevel_init.S, I do not find any change in the frequency. Does this mean my U-boot is not booting after relocating to the MDDR? Why is this happening ?
Results when running in ATK mode:-
BOOT_MODE[1:0] were configured as “11”. The running ATK program provided by Freescale, I was able to download my u boot to 0X80004000 and also flash my SD card. Does this mean that I was able to write to my MDDR and read from the same ? If yes then why is my U-boot not booting up?
Debugging through JTAG interface:-
Using Amontec JTAG with OpenOCD I tested the MDDR. Surprisingly I was able to access all the memory locations. Using “runAllMemTests “ command I was able to test my entire 256MB of RAM.
The timing parameters were the same as I used in my U-boot(dcdheader.S). So there is no issues in assembling and soldering, then why is my U-boot is not booting ?
Also I used gdb to debug the U-boot; being new to gdb I followed the steps mentioned in http://www.denx.de/wiki/view/DULG/DebuggingUBoot. I could not locate where is “cpu_init.c” to insert a breakpoint, so I continued to which the JTAG prompt threw “memory read caused data abort (address: 0x80f00500, size: 0x4, count: 0x1) “ . On checking the map file I found that this address points to cpu/arm926ejs/start.o.
The above mentioned results is common for both Nanya and Micron MDDRs. But I do not see this issue in Hynix. Also in few boards I replaced the Nanya and Micron with the older re-balled Hynix; even those boards are booting up.
The source code of u-boot is similar to http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git/tree/?h=imx_v2009.08
Please let me know if my steps in debugging are wrong, is there something more I need to do to get these MDDRs working. Why am I able to access the RAM in JTAG. Is this issue related to PCB routing, or the U-boot, or these MDDRs or the Memory controller in i.MX257.