Hi,
we have some problems with running a new design based on am3359 with a 256mb DDR2 (same distribution as beaglebone). After some test we have conclude that all the processor design is ok, but when we try to write on to DDR2 external memory we obtain a double writting with only a real write function. To clarify this problem, I'll show you a easy test code for am335x.gel initiation code file.:
hotmenu TestMemWR()
{
unsigned int pattern, count=0;
GEL_TextOut("Starting write\n");
pattern=0x10100000;
while(1)
{
WR_MEM_32(DDR_BASE_ADDR+count, pattern);
pattern++;
GEL_TextOut("Read value in reg %x : %x \n",,,,,count,RD_MEM_32(count+DDR_BASE_ADDR));
count=count+4;
if(count >= 0x0FFF){count=0;pattern=0;}
}
}
Whit this test we obtain that all positions are writting ok, but when we tested on memory Browser we can to see a double writting, one on the correct writing address and a correlative address. This code running ok on beaglebone. Example of writing error:
writting on address 0x80000004--> our system write this position and the 0x80000014
writting on address 0x80000014--> our system write this position and the 0x80000004
writting on address 0x80000028--> our system write this position and the 0x80000038
writting on address 0x80000038--> our system write this position and the 0x80000028
The problem seem to be a problem with address lines, but we've been tested all the signals and we haven't obtain any solution. Could be a problem of timings on the signals???? (all the board have been designed under ddr2 rules).
Any solution????
Thanks, Mag.