Hi Everyone,
I am working on a AM3358 custom board and we are using LpDDR SDRAM on it..
We have a problem with the data read from the LPDDR SDRAM address. I am using a BDI3000 Jtag debugger to do my memory tests.
These are the observations we made..
1) When i write 0xffffffff at 0x80200000 address, i see ffffffff written at the address. When i read back the data at the address, i get the same value back. even if i read the data multiple times i read the same data
UFLOW>md 0x80200000 
80200000 : ffffffff ffffffff ffffffff ffffffff ................
80200010 : ffffffff ffffffff ffffffff ffffffff ................
80200020 : ffffffff ffffffff ffffffff ffffffff ................
80200030 : ffffffff ffffffff ffffffff ffffffff ................
2) But, When i write 0x00000000 at 0x80200000, i see that some of the bit values are changing everytime i read.
UFLOW>mm 0x80200000 0x00000000 16
UFLOW>md 0x80200000 
80200000 : ff04ff04      00006004 00006004 00002004 .....`...`... ..
80200010 : 00000000 00006004 00000004 00006004 .....`.......`..
80200020 : 00000000 00006004 00000004 00000004 .....`..........
80200030 : 00000000 00000004 00000004 00006004 .............`..
3) We performed some memory tests writing some patterns and identified only some bits are inconsistent everytime
These are the register values we are using..
config_ddr(200, MT46H128M16LF_IOCTRL_VALUE, &lpddr_data,
 &lpddr_cmd_ctrl_data, &lpddr_emif_reg_data, 0);
Clock rate = 200
we got the emif registers from the AM335x_EMIF_config tool according to the RAM timings..
/*Config tool*/
#define MT46H128M16LF_EMIF_READ_LATENCY 0x04
#define MT46H128M16LF_EMIF_TIM1 0x04447289
#define MT46H128M16LF_EMIF_TIM2 0x10160580
#define MT46H128M16LF_EMIF_TIM3 0x000000E7
#define MT46H128M16LF_EMIF_SDCFG 0x20044EA3
#define MT46H128M16LF_EMIF_SDREF 0x00000618
#define MT46H128M16LF_DLL_LOCK_DIFF 0x0
/*ratio spreadsheet
 *
 /
#define MT46H128M16LF_INVERT_CLKOUT 0x0
#define MT46H128M16LF_PHY_RD_DQS 0x40
#define MT46H128M16LF_PHY_FIFO_WE 0x200
#define MT46H128M16LF_PHY_WR_DQS 0x1
#define MT46H128M16LF_PHY_WR_DATA 0x40
#define MT46H128M16LF_RATIO 0x80
#define MT46H128M16LF_PHY_RANK0_DELAY 0x01
#define MT46H128M16LF_PHY_WRLVL 0x0
#define MT46H128M16LF_PHY_GATELVL 0x0
#define MT46H128M16LF_IOCTRL_VALUE 0x18B
The RAM is on full drive strength.. are there any registers that should be modified for the LpDDR??
our trace lengths are
| Trace Length (inches) | ||
| Byte 0 | Byte 1 | |
| DDR_CK trace | 1.15361 | 1.15361 | 
| DDR_DQSx trace | 1.04342 | 1.04074 | 
 
				 
		 
					 
                           
				