工具/软件:Linux
大家好、
使用配有 Beagle Bone Black (am33xx)的 Micron ram 时遇到问题、使用 DDR3micron ram (MT41K256M16)时需要按照以下链接更改 spl 引导加载程序。
void SDRAM_init (void)
{
volatile int myVar = 1;
如果(READ_EEPROM()< 0)
PUT ("无法获取电路板 ID。\n");
if (board_is_evm_sk ()){
/*
* EVM SK 1.2A 及更高版本使用 GPIO0_7来启用 DDR3。
*这对于较旧的版本来说足够安全。
*
GPIO_REQUEST (GPIO_DDR_VTT_EN、"DDR_VTT_en");
GPIO_DIRECTION 输出(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);
否则、如果(board_is_bon_lt ())
CONFIG_DDR (400、ioregs_bonelt、
&DDR3_beagleblack_data、
&DDR3_beagleblack_cmd_Ctrl_data、
&DDR3_beagleblack_EMIF_REG_DATA、0);
否则、如果(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);
否则、如果(board_is_icev2 ())
CONFIG_DDR (400、ioregs_evmsk、&ddr3_icev2_data、
&DDR3_icev2_cmd_CTRL_data、&DDR3_icev2_EMIF_reg_data、
0);
其他
{
// CONFIG_DDR (266、ioregs、&DDR2_data、&DDR2_cmd_CTRL_data、&DDR2_EMIF_REG_DATA、 0);
#if 1.
-> 使用 ti-processor-sdk-linux-am335x-evm-03.00.00.04将其添加到/board/ti/am335x/board.c 中
//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
}
在该文件/arch/arm/include/asm/arch-am33xx/ddr_defs.h 中、我添加了 Micron reg
* Micron MT41K256M16HA-125:E - BBBlack *
#define MT41K256M16HA125E_EMIF_READ_DERATE 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_RA比0x80
#define MT41K256M16HA125E_INVER_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
将结构添加到 板级配置文件/board/ti/am335x/board.c
- 静态常量结构 DDR_DATA DDR3_bbb_data ={
- dataardsratio0 = MT41K256M16HA125E_RD_DQS、
- dataawdsratio0 = MT41K256M16HA125E_WR_DQS、
- dataafwsratio0 = MT41K256M16HA125E_PHY_FIFO_WE、
- dataawrsratio0 = MT41K256M16HA125E_PHY_WR_DATA、
- //.datadldiff0 = PHY_DLL_LOCK_DIFF、
- };
- 静态常量结构 cmd_control DDR3_bbb_cmd_CTRL_data ={
- .cmd0csratio = MT41K256M16HA125E_Ratio、
- //.cmd0dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF、
- .cmd0iclkout = MT41K256M16HA125E_INOP_CLKOUT、
- .cmd1csratio = MT41K256M16HA125E_Ratio、
- //.cmd1dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF、
- .cmd1iclkout = MT41K256M16HA125E_INVER_CLKOUT、
- .cmd2csratio = MT41K256M16HA125E_Ratio、
- //.cmd2dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF、
- .cmd2iclkout = MT41K256M16HA125E_INOP_CLKOUT、
- };
- 静态结构 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_RATE | PHY_EN_DYN_PWRDN、
- };
- 执行所有这些更改后,编译(spl&uboot)引导加载程序并将该 MLO 和 uboot.img 复制到 sdcard 并连接到 Beagle Bone Black, 然后按 switch (S2)从连接的 sdcard 引导。
- 它在 uart0上没有显示任何内容、如果没有 sdcard、则在 uart0上显示 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc。
- eMMC 未连接 Beagle Board。
- 请建议我如何调试此问题。
