Hi,
We have our custom board project, based on the following components:
- DM3730CUSD100 SOC from TI, main oscillator is 38,4MHz (KC2520C38.4000C1LE00)
- TPS65951A12GU PMIC from TI
- MT46H64M32LFCM-6IT LPDDR memory from Micron. Memory clock is 166MHz (DDR333). Capacity 256MB.
Everything works well except SD card interface. Occasional, single bit errors occur. We did the following test in Linux:
# Create random test file
dd if=/dev/urandom of=aaa bs=1048576 count=256
# Copy
cp aaa bbb
# Flush memory caches
echo 3 > /proc/sys/vm/drop_caches
# Compare
cmp aaa bbb
Last two commands executes in loop. And usually cmp says the files are different. Offset of the difference varies. We saw no MMC related error messages in dmesg (actually nothing except system startup messages).
The phenomena appears on most of the boards. Probability of the error depends on the board, but typically is around 1 - 2 bit errors per gigabyte of data transferred. However, other boards (around 20%) work OK. The problem decreases as DDR clock decrease. Disappears below ~ 100MHz (DDR200). We decided to replace memory chip on two "faulty" boards and after that they are OK.The replacement proved the problem has nothing common with SD card interface as we suspected before, but DDR link between DM3730 and memory. At the beginning we suspected our bug in either u-boot or PCB project, but we couldn't find anything wrong. The board meets DDR routing requirements described in DM3730 data manual. And SDRC register settings were calculated using your spreadsheet found on TI E2E:
http://processors.wiki.ti.com/index.php?title=Setting_up_AM37x_SDRC_registers
Finally we got two development kits from Embest - DevKit 8500D. There is DM3730 in CUS package on board. Other components are slightly different, but it doesn't matter. We tried to do exactly the same tests as described above (file copy/compare on SD card), using ORIGINAL MANUFACTURER SOFTWARE DELIVERED ON DVD. And we saw the same phenomena on both. Overtaking your question, we tried to use SD cards from different vendors, but it doesn't change anything.
BeagleBoard (we have 5 pieces) seems not to be affected. However, there is a "burger" architecture, i.e. PoP memory.
Could you please tell me if there are any known interoperatibility issues between DM3730 in CUS package and Micron LPDDR memories?