Hello Community,
I'm trying to get the DDR3 Memory working with an AM3356 on a custom curcuit board and I am encountering a strange effect: programming the EMIF via XDS200 --> DDR3 RAM works fine . Doing the same inside the bootloader --> DDR3 RAM does not work.
In detail:
1. I did my configuration as described here: http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_Tuning_the_DDR3_Timings_on_BeagleBoneBlack#Tuning_the_DDR3_Timings
2. I determined the timing values for the EMIF as described above and put them into the GEL file. After this the DDR3 Ram was running and the Memory test of the GEL-Script completed successfully.
3. I executed the software leveling procedure and the RAM was running stable. The memory test of the GEL-Skript and the galopping pattern memory test inside my bootloader application was completing succesfully.
4. Now I decided to turn the GEL initilization functions into C style functions because the initialization was working and I have put them into my bootloader. I am using exactly the same timing values for the EMIF and the PHYs as I did in the GEL-Script. I tried to run my bootloader application without intialisation by the script because this has to be performed by the application (setting the PLLs, DDR PHY, EMIF, ...) and neither the memtest from the script nor the galopping pattern memtest of the application work.
Does anybody have any ideas where I have to search for the mistake?
I am running out of ideas. Also, I have read of someone using the low level functions of the uboot initialisation as shown here: https://gitorious.org/sitara-board-port/sitara-board-port-uboot/source/a7d4715d5fa4aa9fc3b698a0761a28f31d165df3:board/ti/am335x/evm.c
But they do the same stuff as the script, the only look different.
If further information are needed, please let me know.
Regards,
Hannes