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.

[参考译文] AM5748:最新 SDK 的 EMIF 工具问题

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/837744/am5748-emif-tool-issue-with-latest-sdk

器件型号:AM5748

大家好、

EMIF 工具  

与上一个 PLSDK 6.0.0.7不兼容。 EMIF 工具可与 PLSDK 5.0.0.15配合使用。

您对此有什么建议吗?

谢谢!

BR、
丹尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Denny's、您能详细介绍一下您发现的不兼容问题吗?  是构建问题还是功能问题?

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、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

    非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此问题已脱机处理。  如果您有其他问题、请开始另一个主题。

    此致、

    James