Tool/software: Linux
Hi All,
Facing a problem while using micron ram with beagle bone black(am33xx), using DDR3micron ram(MT41K256M16) need to change in spl boot-loader as given on below link.
void sdram_init(void)
{
volatile int myVar = 1;
if (read_eeprom() < 0)
puts("Could not get board ID.\n");
if (board_is_evm_sk()) {
/*
* EVM SK 1.2A and later use gpio0_7 to enable DDR3.
* This is safe enough to do on older revs.
*/
gpio_request(GPIO_DDR_VTT_EN, "ddr_vtt_en");
gpio_direction_output(GPIO_DDR_VTT_EN, 1);
}
if (board_is_icev2()) {
gpio_request(ICE_GPIO_DDR_VTT_EN, "ddr_vtt_en");
gpio_direction_output(ICE_GPIO_DDR_VTT_EN, 1);
}
if (board_is_evm_sk())
config_ddr(303, &ioregs_evmsk, &ddr3_data,
&ddr3_cmd_ctrl_data, &ddr3_emif_reg_data, 0);
else if (board_is_bone_lt())
config_ddr(400, &ioregs_bonelt,
&ddr3_beagleblack_data,
&ddr3_beagleblack_cmd_ctrl_data,
&ddr3_beagleblack_emif_reg_data, 0);
else if (board_is_evm_15_or_later())
config_ddr(303, &ioregs_evm15, &ddr3_evm_data,
&ddr3_evm_cmd_ctrl_data, &ddr3_evm_emif_reg_data, 0);
else if (board_is_icev2())
config_ddr(400, &ioregs_evmsk, &ddr3_icev2_data,
&ddr3_icev2_cmd_ctrl_data, &ddr3_icev2_emif_reg_data,
0);
else
{
// config_ddr(266, &ioregs, &ddr2_data, &ddr2_cmd_ctrl_data, &ddr2_emif_reg_data, 0);
#if 1
-> adding this in /board/ti/am335x/board.c using ti-processor-sdk-linux-am335x-evm-03.00.00.04
//enable_i2c0_pin_mux();
//i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
config_ddr(400, MT41K256M16HA125E_IOCTRL_VALUE, &ddr3_bbb_data, &ddr3_bbb_cmd_ctrl_data, &ddr3_bbb_emif_reg_data, 0);
while(myVar);
#endif
}
in this file ./arch/arm/include/asm/arch-am33xx/ddr_defs.h i adding Micron reg
* Micron MT41K256M16HA-125:E - BBBlack */
#define MT41K256M16HA125E_EMIF_READ_LATENCY 0x100007
#define MT41K256M16HA125E_EMIF_TIM1 0x0AAAD4DB
#define MT41K256M16HA125E_EMIF_TIM2 0x266B7FDA
#define MT41K256M16HA125E_EMIF_TIM3 0x501F867F
#define MT41K256M16HA125E_EMIF_SDCFG 0x61C05332
#define MT41K256M16HA125E_EMIF_SDREF 0x00000C30
#define MT41K256M16HA125E_ZQ_CFG 0x50074BE4
#define MT41K256M16HA125E_DLL_LOCK_DIFF 0x1
#define MT41K256M16HA125E_RATIO 0x80
#define MT41K256M16HA125E_INVERT_CLKOUT 0x00
#define MT41K256M16HA125E_RD_DQS 0x3A
#define MT41K256M16HA125E_WR_DQS 0x45
#define MT41K256M16HA125E_PHY_WR_DATA 0x7C
#define MT41K256M16HA125E_PHY_FIFO_WE 0x96
#define MT41K256M16HA125E_IOCTRL_VALUE 0x18B
Adding struct to board file /board/ti/am335x/board.c
- static const struct ddr_data ddr3_bbb_data = {
- .datardsratio0 = MT41K256M16HA125E_RD_DQS,
- .datawdsratio0 = MT41K256M16HA125E_WR_DQS,
- .datafwsratio0 = MT41K256M16HA125E_PHY_FIFO_WE,
- .datawrsratio0 = MT41K256M16HA125E_PHY_WR_DATA,
- //.datadldiff0 = PHY_DLL_LOCK_DIFF,
- };
- static const struct cmd_control ddr3_bbb_cmd_ctrl_data = {
- .cmd0csratio = MT41K256M16HA125E_RATIO,
- //.cmd0dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF,
- .cmd0iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
- .cmd1csratio = MT41K256M16HA125E_RATIO,
- //.cmd1dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF,
- .cmd1iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
- .cmd2csratio = MT41K256M16HA125E_RATIO,
- //.cmd2dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF,
- .cmd2iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
- };
- static struct emif_regs ddr3_bbb_emif_reg_data = {
- .sdram_config = MT41K256M16HA125E_EMIF_SDCFG,
- .ref_ctrl = MT41K256M16HA125E_EMIF_SDREF,
- .sdram_tim1 = MT41K256M16HA125E_EMIF_TIM1,
- .sdram_tim2 = MT41K256M16HA125E_EMIF_TIM2,
- .sdram_tim3 = MT41K256M16HA125E_EMIF_TIM3,
- .zq_config = MT41K256M16HA125E_ZQ_CFG,
- .emif_ddr_phy_ctlr_1 = MT41K256M16HA125E_EMIF_READ_LATENCY | PHY_EN_DYN_PWRDN,
- };
- After doing all these changes compiling (spl&uboot) boot-loader and copy that MLO and uboot.img into sdcard and connected to beagle bone black, press switch(S2) to boot from connected sdcard.
- its showing nothing on uart0, without sdcard its showing cccccccccccccccccccccccccccccc on uart0.
- emmc not connected with beagle board.
- Please suggest me how to debug this issue.
