Hello,
We have designed two custom boards based around the AM3352 using DDR3 (MT41K256M16HA-107:E).
The first board we made worked fine, we used the AM3352BZCZ80 as the processor. We were able to run the software leveling routine on it and get the optimal values. We setup SPL, U-boot, Linux and everything went fine.
Now we are working on a new board design, and we thought it would be smart to copy over the routing from our known good design. This time we are using the AM3352BZCZD60 as the processor. Other than that the RAM side of the board should be identical. One thing of note is that we are doing our own power sequencing on this board, but it seems from all of our measurements to be working as expected. We can run the software leveling routine over JTAG and then put those values back into the Gel script, and this seems to make the memory work fine. We can change values, and run all of the scripted tests. We see no errors after doing this. When we transfer these settings to SPL we get an error "at env_common.c:125/set_default_env()" "## Can't malloc 4 bytes". I have tried putting in a while loop after the call to config_ddr() and then attaching to it with the JTAG. When I do this and I try to read values from the RAM they change with every refresh.
When we use the DDR3 settings from the BBB configuration (Since we are using the same family of RAM we tried this.) we are able to get into U-boot, and even get to loading the kernel (it never successfully loads). This doesn't seem to make sense to us.
I have also tried using the +1 settings in the config spread sheet, and also tried running it at 303 MHz instead of 400 MHz. These seem to provide the same results.
Any help with what to try next would be appreciated.
Thanks,
John