Part Number: AM4376
Tool/software: Linux
Hello community
We can't use the full 32 bit of DDR3 RAM in our custom board. The schematic based on the schematic of the AM437x Industrial Development Kit (IDK). Instead of the two MT41K256M16HA we use two AS4C64M16D3A-12BIN DDR3 RAM banks and a 25MHz oscillator.
To startup the linux kernel we use TI U-Boot (branch ti-u-boot-2017.01) and added there a custom board to do the PLL and the DDR settings. The U-Boot board are an adaption of the am43xx board. With the AM43xx DDR Calculation tool (.zip) I got following register values:
static const struct emif_regs ddr3_leu150_emif_regs_400Mhz = {
.sdram_config = 0x61A11A32,
.sdram_config2 = 0x00000000,
.ref_ctrl = 0x00000c30,
.sdram_tim1 = 0xEAAAD4D3,
.sdram_tim2 = 0x282F7FD2,
.sdram_tim3 = 0x507F82B8,
.read_idle_ctrl = 0x00050000,
.zq_config = 0x50074be4,
.temp_alert_config = 0x00000000,
.emif_ddr_phy_ctlr_1 = 0x00008009,
...
};
With this settings the U-Boot SPL won't start from the SD card and there are no output on the serial console. If I switch to the 16 Bit mode (.sdram_config = 0x61A15A32) the U-Boot SPL is starting and even the U-Boot starts. But only the half of the DDR3 RAM (128 MB) can be accessed. So I think the calculated DDR timing is correct. The layout looks good and according to the guidelines. So I have no idea what could be wrong.
I'm thankful for any hint, thank you very much.
Cheers
Thomas