Showing results for 
Search instead for 
Did you mean: 
Honored Contributor I

Mobile DDR read and write fails on some addresses



I'm using the Microtronix Multi-Port SDRAM controller for a 512 Mb mobile DDR on the Bemicro SDK board. 


I come to a problem just trying some simple read and write without DMA on the mobile DDR. The memory starts at 0x00000000, ends 0x03ffffff. I get faulty results when trying this piece of code : 


alt_printf("Writing to ram\n"); for (i=0;i<N;i++) { IOWR_32DIRECT(RAM_BASE, i*4, (unsigned long)(i)); } alt_printf("Reading ram\n"); for (i=0;i<N;i++) { res_ram = IORD_32DIRECT(RAM_BASE, i*4); if ((i)!=res_ram) { alt_printf("%x = %x\n", i, res_ram); } } 


Below is the result output, there is a print done when the result doesn't match what is expected from the writes : 


0 = f800 100 = 0 800 = 0 c00 = 800 d00 = c00 1000 = 800 1100 = 1000 1400 = 1000 1500 = 1400 1800 = 1000 


and keeps growing. I'm quite sure the pins are assigned properly, could this be related to timing issues, or something else? The results are similar with or without bursts. However, from compilation to compilation, the failing addresses aren't the same (never in the 2 LSB) but address 0 always fails. 


0 Kudos
0 Replies