大家好、
EMIF 工具
与上一个 PLSDK 6.0.0.7不兼容。 EMIF 工具可与 PLSDK 5.0.0.15配合使用。
您对此有什么建议吗?
谢谢!
BR、
丹尼
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
EMIF 工具
与上一个 PLSDK 6.0.0.7不兼容。 EMIF 工具可与 PLSDK 5.0.0.15配合使用。
您对此有什么建议吗?
谢谢!
BR、
丹尼
您好、James:
我们使用 DDR3L 芯片规格中的 EMIF 工具和文件以及布局信息来生成以下 uboot 寄存器配置:(该文件也附在 Denny's Question 中)
/*====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*版权所有(C) 2017 Texas Instruments Incorporated
*
*保留所有权利。 德州仪器(TI)公司的财产。
*使用、复制或披露此代码的受限权限为
*通过合同授予。
*
*未经书面许可,不得使用该程序
或违反条款和条件
*本方案所依据的协议中规定的
*随附。
*============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ *
/*
* AM574x_DDR3L_666MHz_NOM-R002_CONFIG.c
*创建日期:2019年9月11日
*通过以下命令创建:EMIF_RegisterConfig_v2.0.2
*
#include "emif4d5_wraper.h"
const 结构 DPLL_params AM574x_DDR3L_666MHz_NOM-R002_PLL_params ={
.m = 333、
.n = 4、
.m2 = 2、
.m4_H11 = 8
}; //无法找到 borad.c 和 para 中的结构不相同
const 结构 ctrl_ioregs AM574x_DDR3L_666MHz_NOM-R002_ctrl_ioregs ={
.ctrl_ddr3ch = 0x80808080、
.ctrl_ddrch = 0x40404040、
CTRL_ddrivo_0 = 0x00094A40、
CTRL_ddrivo_1 = 0x00000000、
CTRL_EMIF_SDRAM_CONFIG_ext = 0x0001C123
}; //无法在 borad.c 中找到结构
const 结构 DMM_LISA 映射_regs AM574x_DDR3L_666MHz_NOM-R002_DMM_regs ={
.dm_lisa_map_0 = 0x00000000、
.dm_lisa_map_1 = 0x00000000、
.dm_lisa_map_2 = 0x80740300、
.dm_lisa_map_3 = 0xFF020100、
.in_ma_present = 0x1
};
const 结构 EMIF_regs AM574x_DDR3L_666MHz_NOM-R002_EMIF_regs ={
SDRAM_CONFIG_INIT = 0x61862B32、
SDRAM_CONFIG = 0x61862B32、
SDRAM_CONFIG2 = 0x00000000、
.ref_ctrl = 0x0000514D、
.ref_ctrl_final = 0x0000144A、
SDRAM_TIM1 = 0xD33367EC、
SDRAM_TIT2 = 0x30B37FE3、
SDRAM_TIM3 = 0x409F8AD8、
READ_IDLE_Ctrl = 0x00050000、
zq_config = 0x5007190B、
temp_alert_config = 0x00000000、
.EMIF_rd_wr_lvl_RMP_ctl = 0x8000000、
.EMIF_rd_wr_lvl_ctl = 0x00000000、
.EMIF_DDR_phy_ctlr_1_init = 0x0024400E、
.EMIF_DDR_phy_ctlr_1 = 0x0E24400E、
.EMIF_rd_wr_exec_thresh = 0x00000305、
.EMIF_ECC_CTRL_reg = 0xC0000001、
.EMIF_ECC_ADDRESS_RANGE_1 = 0x1FFF0000、
.EMIF_ECC_ADDRESS_RANGE_2 = 0x00000000、
};
/*
* DLL 比率值是基于布线长度的估计值。 也可以
*应对执行软件矫正或硬件矫正
*确定最终的 DLL 值。
*
const unsigned int AM574x_DDR3L_666MHz_NOM-R002_emif1_ext_phy_regs []={
0x04040100、// EMIF1_EXT_PHY_CTRL_1
0x006B0093、// EMIF1_EXT_PHY_CTRL_2
0x006B0098、// EMIF1_EXT_PHY_CTRL_3
0x006B009A、// EMIF1_EXT_PHY_CTRL_4
0x006B0096、// EMIF1_EXT_PHY_CTRL_5
0x006B009B、// EMIF1_EXT_PHY_CTRL_6
0x002F002F、// EMIF1_EXT_PHY_CTRL_7
0x002F002F、// EMIF1_EXT_PHY_CTRL_8
0x002F002F、// EMIF1_EXT_PHY_CTRL_9
0x002F002F、// EMIF1_EXT_PHY_CTRL_10
0x002F002F、// EMIF1_EXT_PHY_CTRL_11
0x00600071、// EMIF1_EXT_PHY_CTRL_12
0x0060006D、// EMIF1_EXT_PHY_CTRL_13
0x0060006A、// EMIF1_EXT_PHY_CTRL_14
0x0060006F、// EMIF1_EXT_PHY_CTRL_15
0x00600078、// EMIF1_EXT_PHY_CTRL_16
0x00400051、// EMIF1_EXT_PHY_CTRL_17
0x0040004D、// EMIF1_EXT_PHY_CTRL_18
0x0040004A、// EMIF1_EXT_PHY_CTRL_19
0x0040004F、// EMIF1_EXT_PHY_CTRL_20
0x00400058、// EMIF1_EXT_PHY_CTRL_21
0x00800080、// EMIF1_EXT_PHY_CTRL_22
0x00800080、// EMIF1_EXT_PHY_CTRL_23
0x40010080、// EMIF1_EXT_PHY_CTRL_24
0x08102040、// EMIF1_EXT_PHY_CTRL_25
0x00000083、// EMIF1_EXT_PHY_CTRL_26
0x00000088、// EMIF1_EXT_PHY_CTRL_27
0x0000008A、// EMIF1_EXT_PHY_CTRL_28
0x00000086、// EMIF1_EXT_PHY_CTRL_29
0x0000008B、// EMIF1_EXT_PHY_CTRL_30
0x00000041、// EMIF1_EXT_PHY_CTRL_31
0x0000003D、// EMIF1_EXT_PHY_CTRL_32
0x0000003A、// EMIF1_EXT_PHY_CTRL_33
0x0000003F、// EMIF1_EXT_PHY_CTRL_34
0x00000048、// EMIF1_EXT_PHY_CTRL_35
0x00000077 // EMIF1_EXT_PHY_CTRL_36
}; // 36寄存器
const unsigned int AM574x_DDR3L_666MHz_NOM-R002_emif2_ext_phy_regs []={
0x04040100、// EMIF2_EXT_PHY_CTRL_1
0x006B0095、// EMIF2_EXT_PHY_CTRL_2
0x006B0090、// EMIF2_EXT_PHY_CTRL_3
0x006B0095、// EMIF2_EXT_PHY_CTRL_4
0x006B0090、// EMIF2_EXT_PHY_CTRL_5
0x006B006B、// EMIF2_EXT_PHY_CTRL_6
0x002F002F、// EMIF2_EXT_PHY_CTRL_7
0x002F002F、// EMIF2_EXT_PHY_CTRL_8
0x002F002F、// EMIF2_EXT_PHY_CTRL_9
0x002F002F、// EMIF2_EXT_PHY_CTRL_10
0x002F002F、// EMIF2_EXT_PHY_CTRL_11
0x0060006A、// EMIF2_EXT_PHY_CTRL_12
0x0060006E、// EMIF2_EXT_PHY_CTRL_13
0x00600069、// EMIF2_EXT_PHY_CTRL_14
0x0060006E、// EMIF2_EXT_PHY_CTRL_15
0x00600060、// EMIF2_EXT_PHY_CTRL_16
0x0040004A、// EMIF2_EXT_PHY_CTRL_17
0x0040004E、// EMIF2_EXT_PHY_CTRL_18
0x00400049、// EMIF2_EXT_PHY_CTRL_19
0x0040004E、// EMIF2_EXT_PHY_CTRL_20
0x00400040、// EMIF2_EXT_PHY_CTRL_21
0x00800080、// EMIF2_EXT_PHY_CTRL_22
0x00800080、// EMIF2_EXT_PHY_CTRL_23
0x40010080、// EMIF2_EXT_PHY_CTRL_24
0x08102040、// EMIF2_EXT_PHY_CTRL_25
0x00000085、// EMIF2_EXT_PHY_CTRL_26
0x00000080、// EMIF2_EXT_PHY_CTRL_27
0x00000085、// EMIF2_EXT_PHY_CTRL_28
0x00000080、// EMIF2_EXT_PHY_CTRL_29
0x00000000、// EMIF2_EXT_PHY_CTRL_30
0x0000003A、// EMIF2_EXT_PHY_CTRL_31
0x0000003E、// EMIF2_EXT_PHY_CTRL_32
0x00000039、// EMIF2_EXT_PHY_CTRL_33
0x0000003E、// EMIF2_EXT_PHY_CTRL_34
0x00000000、// EMIF2_EXT_PHY_CTRL_35
0x00000077 // EMIF2_EXT_PHY_CTRL_36
}; // 36寄存器
struct EMIF_cfg AM574x_DDR3L_666MHz_NOM-R002 ={
.platform ="AM574x_DDR3L_666MHz_NOM-R002"、
.EMIF2_defined = 1、
.pll_regs =&AM574x_DDR3L_666MHz_NOM-R002_PLL_params、
.ctrl_regs =&AM574x_DDR3L_666MHz_NOM-R002_ctrl_ioregs、
.dm_regs =&AM574x_DDR3L_666MHz_NOM-R002_DMM_regs、
regs =&AM574x_DDR3L_666MHz_NOM-R002_EMIF_regs、
phy_regs1 = AM574x_DDR3L_666MHz_NOM-R002_emif1_ext_phy_regs、
phy_regs2 = AM574x_DDR3L_666MHz_NOM-R002_emif2_ext_phy_regs、
};
现在、我们使用 SDK 6.0.0.7并在 u-boot-2019.01+gitAUTOINC+8b90adfb16-g8b90adfb16\board\ti\am57xx 中找到 board.c
静态常量结构 DMM_LISA 映射_regs beagle_x15_LISA 寄存器={
.dm_lisa_map_3 = 0x80740300、
.in_ma_present = 0x1
};
静态常量结构 DMM_LISA 映射_regs am571x_idk_LISA 寄存器={
.dm_lisa_map_3 = 0x80640100、
.in_ma_present = 0x1
};
静态常量结构 DMM_LISA 映射_regs am574x_idk_LISA 寄存器={
.dm_lisa_map_2 = 0xc0600200、
.dm_lisa_map_3 = 0x80600100、
.in_ma_present = 0x1
};
void EMIF_get_DMM_regs (const 结构 DMM_LISA 映射_regs ** DMM_LISA 寄存器)
{
if (board_is_am571x_idk ())
*DMM_LISA 寄存器=&am571x_idk_LISA 寄存器;
否则、如果(board_is_am574x_idk ())
*DMM_LISA 寄存器=&am574x_idk_LISA 寄存器;
其他
*DMM_LISA 寄存器=&beagle_x15_LISA 寄存器;
}
静态常量结构 EMIF_REGS beagle_x15_emif1_DDR3_532mhz_EMIF_regs ={
SDRAM_CONFIG_INIT = 0x61851b32、
SDRAM_CONFIG = 0x61851b32、
.SDRAM_CONFIG2 = 0x08000000、
.ref_ctrl = 0x000040F1、
.ref_ctrl_final = 0x00001035、
SDRAM_TIM1 = 0xcccf36ab、
SDRAM_TIT2 = 0x308f7fda、
SDRAM_TIM3 = 0x409f88a8、
READ_IDLE_Ctrl = 0x00050000、
zq_config = 0x5007190b、
temp_alert_config = 0x00000000、
.EMIF_DDR_phy_ctlr_1_init = 0x0024400b、
.EMIF_DDR_phy_ctlr_1 = 0x0e24400b、
.EMIF_DDR_ext_phy_Ctrl_1 = 0x10040100、
.EMIF_DDR_ext_phy_Ctrl_2 = 0x00910091、
.EMIF_DDR_ext_phy_Ctrl_3 = 0x00950095、
.EMIF_DDR_ext_phy_Ctrl_4 = 0x009b009b、
.EMIF_DDR_ext_phy_Ctrl_5 = 0x009e009e、
.EMIF_RD_EV_LVL_RMP_WIN = 0x00000000、
.EMIF_rd_wr_lvl_RMP_ctl = 0x8000000、
.EMIF_rd_wr_lvl_ctl = 0x00000000、
.EMIF_rd_wr_exec_thresh = 0x00000305
};
/*外部 phy 控制寄存器1-35 */
静态常量 u32 beagle_x15_emif1_DDR3_ext_phy_Ctrl_const_regs[]={
0x10040100、
0x00910091、
0x00950095、
0x009B009B、
0x009E009E、
0x00980098、
0x00340034、
0x00350035、
0x00340034、
0x00310031、
0x00340034、
0x007F007F、
0x007F007F、
0x007F007F、
0x007F007F、
0x007F007F、
0x00480048、
0x004A004A、
0x00520052、
0x00550055、
0x00500050、
0x00000000、
0x00600020、
0x40011080、
0x08102040、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0
}; //只有35个寄存器,与 EMIF 工具不匹配
静态常量结构 EMIF_REGS beagle_x15_emif2_DDR3_532mhz_EMIF_regs ={
SDRAM_CONFIG_INIT = 0x61851b32、
SDRAM_CONFIG = 0x61851b32、
.SDRAM_CONFIG2 = 0x08000000、
.ref_ctrl = 0x000040F1、
.ref_ctrl_final = 0x00001035、
SDRAM_TIM1 = 0xcccf36b3、
SDRAM_TIT2 = 0x308f7fda、
SDRAM_TIM3 = 0x407f88a8、
READ_IDLE_Ctrl = 0x00050000、
zq_config = 0x5007190b、
temp_alert_config = 0x00000000、
.EMIF_DDR_phy_ctlr_1_init = 0x0024400b、
.EMIF_DDR_phy_ctlr_1 = 0x0e24400b、
.EMIF_DDR_ext_phy_Ctrl_1 = 0x10040100、
.EMIF_DDR_ext_phy_Ctrl_2 = 0x00910091、
.EMIF_DDR_ext_phy_Ctrl_3 = 0x00950095、
.EMIF_DDR_ext_phy_Ctrl_4 = 0x009b009b、
.EMIF_DDR_ext_phy_Ctrl_5 = 0x009e009e、
.EMIF_RD_EV_LVL_RMP_WIN = 0x00000000、
.EMIF_rd_wr_lvl_RMP_ctl = 0x8000000、
.EMIF_rd_wr_lvl_ctl = 0x00000000、
.EMIF_rd_wr_exec_thresh = 0x00000305
};
静态常量 u32 beagle_x15_emif2_DDR3_ext_phy_Ctrl_const_regs[]={
0x10040100、
0x00910091、
0x00950095、
0x009B009B、
0x009E009E、
0x00980098、
0x00340034、
0x00350035、
0x00340034、
0x00310031、
0x00340034、
0x007F007F、
0x007F007F、
0x007F007F、
0x007F007F、
0x007F007F、
0x00480048、
0x004A004A、
0x00520052、
0x00550055、
0x00500050、
0x00000000、
0x00600020、
0x40011080、
0x08102040、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0、
0x0
}; //只有35个寄存器,与 EMIF 工具不匹配
静态常量结构 EMIF_regs am571x_emif1_DDR3_666mhz_EMIF_regs ={
SDRAM_CONFIG_INIT = 0x61863332、
SDRAM_CONFIG = 0x61863332、
.SDRAM_CONFIG2 = 0x08000000、
.ref_ctrl = 0x0000514d、
.ref_ctrl_final = 0x0000144a、
SDRAM_TIM1 = 0xd333887c、
SDRAM_TIT2 = 0x30b37fe3、
SDRAM_TIM3 = 0x409f8ad8、
READ_IDLE_Ctrl = 0x00050000、
zq_config = 0x5007190b、
temp_alert_config = 0x00000000、
.EMIF_DDR_phy_ctlr_1_init = 0x0024400f、
.EMIF_DDR_phy_ctlr_1 = 0x0e24400f、
.EMIF_DDR_ext_phy_Ctrl_1 = 0x10040100、 // EMIF 工具中不包含
.EMIF_DDR_ext_phy_Ctrl_2 = 0x00910091、
.EMIF_DDR_ext_phy_Ctrl_3 = 0x00950095、
.EMIF_DDR_ext_phy_Ctrl_4 = 0x009b009b、
.EMIF_DDR_ext_phy_Ctrl_5 = 0x009e009e、
.EMIF_RD_EV_LVL_RMP_WIN = 0x00000000、
.EMIF_rd_wr_lvl_RMP_ctl = 0x8000000、
.EMIF_rd_wr_lvl_ctl = 0x00000000、
.EMIF_rd_wr_exec_thresh = 0x00000305
};
静态常量结构 EMIF_regs am574x_emif1_DDR3_666mhz_EMIF_ECC_regs ={
SDRAM_CONFIG_INIT = 0x61863332、
SDRAM_CONFIG = 0x61863332、
.SDRAM_CONFIG2 = 0x08000000、
.ref_ctrl = 0x0000514d、
.ref_ctrl_final = 0x0000144a、
SDRAM_TIM1 = 0xd333887c、
SDRAM_TIT2 = 0x30b37fe3、
SDRAM_TIM3 = 0x409f8ad8、
READ_IDLE_Ctrl = 0x00050000、
zq_config = 0x5007190b、
temp_alert_config = 0x00000000、
.EMIF_DDR_phy_ctlr_1_init = 0x0024400f、
.EMIF_DDR_phy_ctlr_1 = 0x0e24400f、
.EMIF_DDR_ext_phy_Ctrl_1 = 0x10040100、 // EMIF 工具中不包含
.EMIF_DDR_ext_phy_Ctrl_2 = 0x00910091、
.EMIF_DDR_ext_phy_Ctrl_3 = 0x00950095、
.EMIF_DDR_ext_phy_Ctrl_4 = 0x009b009b、
.EMIF_DDR_ext_phy_Ctrl_5 = 0x009e009e、
.EMIF_RD_EV_LVL_RMP_WIN = 0x00000000、
.EMIF_rd_wr_lvl_RMP_ctl = 0x8000000、
.EMIF_rd_wr_lvl_ctl = 0x00000000、
.EMIF_rd_wr_exec_thresh = 0x00000305、
.EMIF_ECC_CTRL_reg = 0xD0000001、
.EMIF_ECC_ADDRESS_RANGE_1 = 0x3FFF0000、
.EMIF_ECC_ADDRESS_RANGE_2 = 0x00000000
};
因此、我们不知道如何成功初始化 DDR3L。
您是否拥有与最新 SDK 兼容的最新 EMIF 工具?
另一个问题是:
我们在 EMIF1中使用2个512MB DDR3L 的芯片、在 ECC 中使用1个512MB 的芯片、
EMIF2中512Mb DDR3L 的2个芯片
ECC 区1:系统结束地址的合理性是多少? 9FFFFFFF 或 BFFFFFFF
非常感谢。