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.

[参考译文] Linux/AM4378:DDR PHY 寄存器和调配

Guru**** 2601915 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/620835/linux-am4378-ddr-phy-registers-and-leveling

器件型号:AM4378

工具/软件:Linux

您好!

下面是 am43xx 的示例 DDR3结构。 我想了解 PHY 寄存器的用途及其与电平的关系。

我已经完成了    

Below is the register used for configuration:
   
conststructemif_regs ddr3_emif_regs_400Mhz_idk = {
    .sdram_config           = 0x61A11B32,
    .ref_ctrl           = 0x00000C30,
    .sdram_tim1         = 0xEAAAD4DB,
    .sdram_tim2         = 0x266B7FDA,
    .sdram_tim3         = 0x107F8678,
    .read_idle_ctrl         = 0x00050000,
    .zq_config          = 0x50074BE4,
    .temp_alert_config      = 0x0,
     emif_ddr_phy_ctlr_1        = 0x00008009,
    .emif_ddr_ext_phy_ctrl_1    = 0x08020080,
    .emif_ddr_ext_phy_ctrl_2    = 0x00700070,
    .emif_ddr_ext_phy_ctrl_3    = 0x00700070,
    .emif_ddr_ext_phy_ctrl_4    = 0x00700070,
    .emif_ddr_ext_phy_ctrl_5    = 0x00700070,
    .emif_rd_wr_exec_thresh     = 0x00000405,
    .emif_prio_class_serv_map   = 0x00000000,
    .emif_connect_id_serv_1_map = 0x00000000,
    .emif_connect_id_serv_2_map = 0x00000000,
    .emif_cos_config        = 0x00FFFFFF
};
您能不能澄清一下这些寄存   器的用途。EMIF_DDR_ext_phy_Ctrl_1到.EMIF_DDR_ext_phy_Ctrl_5、如果选择了硬件调平、它们是否很重要。
     emif_ddr_phy_ctlr_1        = 0x00008009,
    .emif_ddr_ext_phy_ctrl_1    = 0x08020080,
    .emif_ddr_ext_phy_ctrl_2    = 0x00700070,
    .emif_ddr_ext_phy_ctrl_3    = 0x00700070,
    .emif_ddr_ext_phy_ctrl_4    = 0x00700070,
    .emif_ddr_ext_phy_ctrl_5    = 0x00700070,
此外、以下这些寄存器的用途是什么? 如果选择了硬件调平、是否还需要它们?
constu32 ext_phy_ctrl_const_base_ddr3_idk[EMIF_EXT_PHY_CTRL_CONST_REG] = {
    0x00700070,
    0x00350035,
    0x00350035,
    0x00350035,
    0x00350035,
    0x00350035,
    0x00000000,
    0x00000000,
    0x00000000,
    0x00000000,
    0x00000000,
    0x00340034,
    0x00340034,
    0x00340034,
    0x00340034,
    0x00340034,
    0x00000000,
    0x00600020,
    0x40010080,
    0x08102040
};
谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您所参考的 wiki 指南现已被取代: www.ti.com/.../sprac70.pdf 请遵循新文档中的指南。 这就是配置 AM437x EMIF 所需的全部信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Biser、

    感谢您的回答。 我已按照 Wiki 中的 xls 工作表进行操作、并设置了以下值

    我们使用2个 MT41K256M16TW-107 (512MB DDR)。 总计- 1024MB。
    我们已从 Excel 工作表中计算了以下值。 此外、我们还添加了布局的布线长度。
    我们发现、在设置如下所示的 DDR3值(根据 AM437x 的 Excel 工作表计算得出)后、引导加载程序在 x 加载程序期间挂起。 因此、我们没有 JTAG 连接、
    我们无法运行 CCS 软件。
    我想检查 AM437x 中是否使用了 MT41K256M16TW-107。  

    如果我在这里遗漏了一些东西、请告诉我。

    EMIF 寄存器

    寄存器

    地址

    EMIF4D_SDRAM_时序_1

    0x4C000018

    0xE88AE4E3

    EMIF4D_SDRAM_SYSRING_1_SHADOW

    0x4C00001C

    0xE88AE4E3

    EMIF4D_SDRAM_时序_2

    0x4C000020

    0x26377FDA

    EMIF4D_SDRAM_Timing_2_SHADOW

    0x4C000024

    0x26377FDA

    EMIF4D_SDRAM_Timing_3

    0x4C000028

    0x5F7F867F

    EMIF4D_SDRAM_SYSRING_3_SHADOW

    0x4C00002C

    0x5F7F867F

    EMIF4D_SDRAM_CONFIG

    0x4C000008

    0x61A01332

    EMIF4D_SDRAM_CONFIG_2

    0x4C00000C

    0x00000000

    EMIF4D_SDRAM_REFRESH_CTRL

    0x4C000010

    0x00000C30

    EMIF4D_SDRAM_REFRESH_CTRL_SHADOW

    0x4C000014

    0x00000C30

    EMIF4D_SDRAM_OUTPUT Impedance _CALIB_CNG

    0x4C0000C8

    0x50077D33

    EMIF4D_LPDDR2_MODE_REG_CONFIG

    0x4C000050

    0x80000000

    EMIF4D_LPDDR2_MODE_REG_DATA

    0x4C000040

    0x00000000

    EMIF4D_TEMP_TEMP_ALERT_CONFIG

    0x4C0000CC

    0x00000000

    EMIF4D_READ_WRITE_LERAGE_RAMP_WINDOW

    0x4C0000D4

    0x00000000

    EMIF4D_READ_WRITE_LERAGE_RAMP_CTRL

    0x4C0000D8

    0x80000000

    EMIF4D_READ_WRITE_LERAGE_CTRL

    0x4C0000DC

    0x00000000

    寄存器

    地址

    EMIF4D_DDR_PHY_CTRL_1

    0x4C0000E4

    0x00048008

    EMIF4D_DDR_PHY_CTRL_1_SHADOW

    0x4C0000E8

    0x00048008

    EMIF4D_EXT_PHY_CTRL_1

    0x4C000200

    0x00040100

    EMIF4D_EXT_PHY_CTRL_1_SHADOW

    0x4C000204

    0x00040100

    EMIF4D_EXT_PHY_CTRL_2

    0x4C000208

    0x00000000

    EMIF4D_EXT_PHY_CTRL_2_SHADOW

    0x4C00020C

    0x00000000

    EMIF4D_EXT_PHY_CTRL_3

    0x4C000210

    0x00000000

    EMIF4D_EXT_PHY_CTRL_3_SHADOW

    0x4C000214

    0x00000000

    EMIF4D_EXT_PHY_CTRL_4

    0x4C000218

    0x00000000

    EMIF4D_EXT_PHY_CTRL_4_SHADOW

    0x4C00021C

    0x00000000

    EMIF4D_EXT_PHY_CTRL_5

    0x4C000220

    0x00000000

    EMIF4D_EXT_PHY_CTRL_5_SHADOW

    0x4C000224

    0x00000000

    EMIF4D_EXT_PHY_CTRL_6

    0x4C000228

    0x00000000

    EMIF4D_EXT_PHY_CTRL_6_SHADOW

    0x4C00022C

    0x00000000

    EMIF4D_EXT_PHY_CTRL_7

    0x4C000230

    0x00400040

    EMIF4D_EXT_PHY_CTRL_7_SHADOW

    0x4C000234

    0x00400040

    EMIF4D_EXT_PHY_CTRL_8

    0x4C000238

    0x00400040

    EMIF4D_EXT_PHY_CTRL_8_SHADOW

    0x4C00023C

    0x00400040

    EMIF4D_EXT_PHY_CTRL_9

    0x4C000240

    0x00400040

    EMIF4D_EXT_PHY_CTRL_9_SHADOW

    0x4C000244

    0x00400040

    EMIF4D_EXT_PHY_CTRL_10

    0x4C000248

    0x00400040

    EMIF4D_EXT_PHY_CTRL_10_SHADOW

    0x4C00024C

    0x00400040

    EMIF4D_EXT_PHY_CTRL_11

    0x4C000250

    0x00400040

    EMIF4D_EXT_PHY_CTRL_11_SHADOW

    0x4C000254

    0x00400040

    EMIF4D_EXT_PHY_CTRL_12

    0x4C000258

    0x00400040

    EMIF4D_EXT_PHY_CTRL_12_SHADOW

    0x4C00025C

    0x00400040

    EMIF4D_EXT_PHY_CTRL_13

    0x4C000260

    0x00400040

    EMIF4D_EXT_PHY_CTRL_13_SHADOW

    0x4C000264

    0x00400040

    EMIF4D_EXT_PHY_CTRL_14

    0x4C000268

    0x00400040

    EMIF4D_EXT_PHY_CTRL_14_SHADOW

    0x4C00026C

    0x00400040

    EMIF4D_EXT_PHY_CTRL_15

    0x4C000270

    0x00400040

    EMIF4D_EXT_PHY_CTRL_15_SHADOW

    0x4C000274

    0x00400040

    EMIF4D_EXT_PHY_CTRL_16

    0x4C000278

    0x00400040

    EMIF4D_EXT_PHY_CTRL_16_SHADOW

    0x4C00027C

    0x00400040

    EMIF4D_EXT_PHY_CTRL_17

    0x4C000280

    0x00000000

    EMIF4D_EXT_PHY_CTRL_17_SHADOW

    0x4C000284

    0x00000000

    EMIF4D_EXT_PHY_CTRL_18

    0x4C000288

    0x00000000

    EMIF4D_EXT_PHY_CTRL_18_SHADOW

    0x4C00028C

    0x00000000

    EMIF4D_EXT_PHY_CTRL_19

    0x4C000290

    0x00000000

    EMIF4D_EXT_PHY_CTRL_19_SHADOW

    0x4C000294

    0x00000000

    EMIF4D_EXT_PHY_CTRL_20

    0x4C000298

    0x00000000

    EMIF4D_EXT_PHY_CTRL_20_SHADOW

    0x4C00029C

    0x00000000

    EMIF4D_EXT_PHY_CTRL_21

    0x4C0002A0

    0x00000000

    EMIF4D_EXT_PHY_CTRL_21_SHADOW

    0x4C0002A4

    0x00000000

    EMIF4D_EXT_PHY_CTRL_22

    0x4C0002A8

    0x00000000

    EMIF4D_EXT_PHY_CTRL_22_SHADOW

    0x4C0002AC

    0x00000000

    EMIF4D_EXT_PHY_CTRL_23

    0x4C0002B0

    0x00600020

    EMIF4D_EXT_PHY_CTRL_23_SHADOW

    0x4C0002B4

    0x00600020

    EMIF4D_EXT_PHY_CTRL_24

    0x4C0002B8

    0x40010080

    EMIF4D_EXT_PHY_CTRL_24_SHADOW

    0x4C0002BC

    0x40010080

    EMIF4D_EXT_PHY_CTRL_25

    0x4C0002C0

    0x08102040

    EMIF4D_EXT_PHY_CTRL_25_SHADOW

    0x4C0002C4

    0x08102040

    EMIF4D_EXT_PHY_CTRL_26

    0x4C0002C8

    0x00200020

    EMIF4D_EXT_PHY_CTRL_26_SHADOW

    0x4C0002CC

    0x00200020

    EMIF4D_EXT_PHY_CTRL_27

    0x4C0002D0

    0x00200020

    EMIF4D_EXT_PHY_CTRL_27_SHADOW

    0x4C0002D4

    0x00200020

    EMIF4D_EXT_PHY_CTRL_28

    0x4C0002D8

    0x00200020

    EMIF4D_EXT_PHY_CTRL_28_SHADOW

    0x4C0002DC

    0x00200020

    EMIF4D_EXT_PHY_CTRL_29

    0x4C0002E0

    0x00200020

    EMIF4D_EXT_PHY_CTRL_29_SHADOW

    0x4C0002E4

    0x00200020

    EMIF4D_EXT_PHY_CTRL_30

    0x4C0002E8

    0x00200020

    EMIF4D_EXT_PHY_CTRL_30_SHADOW

    0x4C0002EC

    0x00200020

    EMIF4D_EXT_PHY_CTRL_31

    0x4C0002F0

    0x00000000

    EMIF4D_EXT_PHY_CTRL_31_SHADOW

    0x4C0002F4

    0x00000000

    EMIF4D_EXT_PHY_CTRL_32

    0x4C0002F8

    0x00000000

    EMIF4D_EXT_PHY_CTRL_32_SHADOW

    0x4C0002FC

    0x00000000

    EMIF4D_EXT_PHY_CTRL_33

    0x4C000300

    0x00000000

    EMIF4D_EXT_PHY_CTRL_33_SHADOW

    0x4C000304

    0x00000000

    EMIF4D_EXT_PHY_CTRL_34

    0x4C000308

    0x00000000

    EMIF4D_EXT_PHY_CTRL_34_SHADOW

    0x4C00030C

    0x00000000

    EMIF4D_EXT_PHY_CTRL_35

    0x4C000310

    0x00000000

    EMIF4D_EXT_PHY_CTRL_35_SHADOW

    0x4C000314

    0x00000000

    EMIF4D_EXT_PHY_CTRL_36

    0x4C000318

    0x000000FF

    EMIF4D_EXT_PHY_CTRL_36_SHADOW

    0x4C00031C

    0x000000FF

    IO 寄存器

    CTRL_DDR_CKE

    0x44E1131C

    0x00000003

    CTRL_DDR_ADDRCTRL_IOCTRL

    0x44E11404

    0x00000084

    CTRL_DDR_ADDRCTRL_WD0_IOCTRL

    0x44E11408

    0x00000000

    CTRL_DDR_ADDRCTRL_WD1_IOCTRL

    0x44E1140C

    0x00000000

    CTRL_DDR_DATA0_IOCTRL

    0x44E11440

    0x00000084

    CTRL_DDR_Data1_IOCTRL

    0x44E11444

    0x00000084

    CTRL_DDR_DATA2_IOCTRL

    0x44E11448

    0x00000084

    CTRL_DDR_DATA3_IOCTRL

    0x44E1144C

    0x00000084

    CTRL_EMIF_SDRAM_CONFIG_EXT

    0x44E11460

    0x0000C163

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

    您能否共享用于创建这些值的电子表格?

    此致、Siva

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

    e2e.ti.com/.../SPRAC70_5F00_AM437x_5F00_EMIF_5F00_Configuration_5F00_Tool_5F00_V20_5F00_05092017_5F00_TEST.xlsx[quoteuser="sivak"]

    您能否共享用于创建这些值的电子表格?

    此致、Siva

    请查看随附的我们使用的 Excel 工作表。

    [/报价]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    电子表格中有几个错误。 有关更多详细信息、请查看链接中的文档:
    www.ti.com/.../sprac70.pdf

    Step1系统详细信息:
    -详细信息6与存储器件将运行的速度等级有关。 对于 AM437x,它应该是800,因为您无法以>400MHz 的时钟运行 DDR 接口。
    -详情7应为4 GB 而不是0.5 GB。 这是各个 DRAM 部件的密度

    Step2 DDR 时序
    -根据内存数据表选择正确的 CL/CWL
    -通过参考内存数据表输入所有 DRAM 交流时序参数。 这是生成正确的计时寄存器设置所必需的。 确保您查看所有红色框、因为它们表示违反了最小 JEDEC 规范。

    修复电子表格并获得新的寄存器值后、请重试、如果您仍遇到任何问题、请告知我们。

    此致、Siva
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在上面错误地记下了细节6。 请查看下面的更正内容。

    电子表格中有几个错误。 有关更多详细信息、请查看链接中的文档:
    www.ti.com/.../sprac70.pdf

    Step1系统详细信息:
    -详细信息6与存储器件功能的速度等级有关。 对于您指示的 DRAM 器件、应为1866、然后选择 CL=13以选择正确的速度箱表列。 CL/CWL 的实际值在步骤2中编程、如下所示
    -详情7应为4 GB 而不是0.5 GB。 这是各个 DRAM 部件的密度

    Step2 DDR 时序
    -根据内存数据表和运行速度(即 TCK 设置)选择正确的 CL/CWL
    -通过参考内存数据表输入所有 DRAM 交流时序参数。 这是生成正确的计时寄存器设置所必需的。 确保您查看所有红色框、因为它们表示违反了最小 JEDEC 规范。

    修复电子表格并获得新的寄存器值后、请重试、如果您仍遇到任何问题、请告知我们。

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

    您好、Siva、

    1.我按建议进行了尝试。 但是、当我在 u-boot 中使用 Excel 工作表生成的值时。 它仍在 MLO 中挂起。

    2.因此,我认为我可能在这里遗漏了一些东西。 我会请您就此提供帮助和建议。

    3.我已附上了供您参考的 xls 文件。

    CAS 为13。 但是、表2 (DDR 时序)仅允许5或6。

    6.同样,根据数据表,CWL 为9。 但 Excel 工作表只允许5。 但是也支持5 (第80页)

    7. tCKESR。 它是4CK、但交流工作条件对此项没有"ns"值。 (第96页)

    看起来我在这里缺少一些东西。 附件是我的 reference.e2e.ti.com/.../SPRAC70_5F00_AM437x_5F00_EMIF_5F00_Configuration_5F00_Tool_5F00_V20_5F00_TRIAL2_5F00_VSR.xlsx Excel 工作表

    谢谢、

    Sriram

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

    我想检查您是否有机会查看我的电子表格。 有2个 DDR3芯片(每个芯片512 MB)。 DDR3-1连接到 AM437x 的 DDR-Data0至 DDR-data15、而 DDR3-2芯片连接到 AM437x 的 DDR-data16至 DDR-data31。 这是否意味着每个 EMIF 的 DDR 数据总线宽度为16或32。 我尝试了这两种方法、但结果相同。

    芯片的速度箱为1866。 数据表还显示、它向后兼容1600速度箱。 这是否意味着我可以将此芯片视为1600速度箱并选择与1600速度箱相对应的 DDR 时序值?

    对于1600、如果我采用(CL = 7且 CWL = 6)或(CL=8且 CWL=6)、则 tck 小于2.5ns、这可能小于400MHz、但是 Excel 工作表不允许这样做。

    如果我在这里遗漏了一些东西、请告知我们。

    谢谢、

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

    [引用用户="Sriram V"]
     
    我想检查您是否有机会查看我的电子表格。 有2个 DDR3芯片(每个芯片512 MB)。 DDR3-1连接到 AM437x 的 DDR-Data0至 DDR-data15、而 DDR3-2芯片连接到 AM437x 的 DDR-data16至 DDR-data31。 这是否意味着每个 EMIF 的 DDR 数据总线宽度为16或32。 我尝试了这两种方法、但结果相同。

    [/报价]

    在1A 下)系统应用详细信息、详细信息3、即每个 EMIF 的 DDR 数据总线宽度应设置为32。 这表示要使用的控制器的 DDR 数据总线宽度。 在1B) DDR 存储器规格下、详细信息12是各个 DRAM 器件的数据总线的宽度。 在您的情况下、它应设置为 x16
     

    [引用用户="Sriram V"]

    芯片的速度箱为1866。 数据表还显示、它向后兼容1600速度箱。 这是否意味着我可以将此芯片视为1600速度箱并选择与1600速度箱相对应的 DDR 时序值?

    [/报价]

    在 Step1-System Details 部分中、在1b) DDR 存储器规格、Detail 6下、您应该指定 DRAM 存储器部件的功能。 因此、在您的情况下、1866是正确的设置。 这基本上是指用于 Step2-DDR 时序的速度 bin 表。

    [引用用户="Sriram V"]


    对于1600、如果我采用(CL = 7且 CWL = 6)或(CL=8且 CWL=6)、则 tck 小于2.5ns、这可能小于400MHz、但是 Excel 工作表不允许这样做。  
     
      [/报价]

    如上所述、对于您的案例、您应将速度等级(即、详情6)设置为1866、并将 CAS 延迟设置为13、以反映您所使用的存储器部件的正确速度箱表。 此表位于您之前提到的 DRAM 存储器数据表的第80页。

    在 Step2-DDR 时序表中仍有一些错误。 任何不符合 JEDEC 要求的时序都会自动以红色突出显示。 您需要参阅 存储器数据表并进行修复。  例如、在您的案例中、我 看到 TRP、tRCD 设置不正确。 需要在电子表格中将它们设置为13.91而不是12.5。 请验证所有其他时序参数是否相同、以确保没有错误并与数据表匹配
    在步骤3中、确保您还添加了每个字节的 CLK 和 DQS 的所有电路板布线详细信息、以达到正确的反相时钟设置。
    完成上述所有操作后、请查看电路板是否仍然出现故障。 如果是这样、我建议您使用一个简单的 GEL 文件来帮助您调试可能导致此故障的原因。
    此致、Siva

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

    您好、Siva、

    1。按照建议、我使用了 GEL 文件 AM43xx_EMIFConfig_Hwlvl.gel、并且能够运行 DDR 测试、运行正常。 我将 u-boot 测试代码移植到 CCS、它也可以与 GEL 文件中的 DDR 测试一起正常运行。

    2.然后、我将 Excel 工作表生成的相同值用于 u-boot 2016。 我正在使用 mtest 测试我的 DDR3

    内存测试 mtest 0x8000000 0xA0000000通过。 但是、在中、mtest 0xA0000000 0xC0000000失败

       故障(读取/写入)@ 0xbef1db60:预期值0x07bc76d9、实际值0x07bc76d8)

    4.当我尝试执行 MW 0xbef1db60 0x99并尝试读回它时。 我看不到我的值在0xbef1db60中得到反映。 请找到随附的 uboot mtest 日志以了解一些错误。

    5.我不知道这会是什么问题。 但是、使用相同的值时、GEL 文件和 u-boot 会提供不同的结果。

    6.根据数据表,页面尺寸为2K。 因此、我选择了适用于2048的 tFAW 和 tRRD 值。 请告诉我这是否正常?

    我不确定硬件调配是否以 u-boot 和 GEL 文件中的相同方式完成。 如果我在这里遗漏了任何东西、请告诉我。

    下面是硬件调平状态寄存器的值。 感谢你的帮助。

    uboot 中 PHY 状态寄存器的转储

    ------------------------------------

    => MD 0x4c00144

    4c000144:000841f3 1a0d0683 0db60004 00020db6

    4c000154:00009999 00000924 00000049 00000045

    4c000164:00000046 00000046 00000000 070000aa

    4c000174:070000ac 070000b8 070000b3 00000000

    4c000184:027f00c1 01bc00c8 029700d3 02ff00d4

    4c000194:00000000 023f0081 017c0088 02570093

    4c0001a4:02bf0094 00000000 10f02322 00000000

    U-boot PHY 状态值:

    PHY_STATUS_12=0x00000924

    PHY_STATUS_13=0x00000045

    PHY_STATUS_14=0x00000046

    PHY_STATUS_15=0x070000aa

    PHY_STATUS_16=0x070000b8

    PHY_STATUS_7 =0x00000049

    PHY_STATUS_8 =0x00000045

    PHY_STATUS_9 =0x00000046

    PHY_STATUS_10=0x00000046

    PHY_STATUS_11=0x00000000

    PHY_STATUS_17=0x027F00C1

    PHY_STATUS_18=0x01bc00c8

    PHY_STATUS_19=0x029700D3

    PHY_STATUS_20=0x02ff00d4

    PHY_STATUS_21=0x00000000

    PHY_STATUS_22=0x023F0081

    PHY_STATUS_23=0x017c0088

    PHY_STATUS_24=0x02570093

    PHY_STATUS_25=0x02bf0094

    PHY_STATUS_26=0x00000000

    CCS 中 PHY 状态寄存器的转储

    ------------------

    CortexA9:GEL 输出:PHY_STATUS_12=0x070000A9

    CortexA9:GEL 输出:PHY_STATUS_13=0x070000AC

    CortexA9:GEL 输出:PHY_STATUS_14=0x070000BA

    CortexA9:GEL 输出:PHY_STATUS_15=0x070000B7

    CortexA9:GEL 输出:PHY_STATUS_16=0x00000000

    CortexA9:GEL 输出:PHY_STATUS_7 =0x00000048

    CortexA9:GEL 输出:PHY_STATUS_8 =0x00000045

    CortexA9:GEL 输出:PHY_STATUS_9 =0x00000048

    CortexA9:GEL 输出:PHY_STATUS_10=0x00000046

    CortexA9:GEL 输出:PHY_STATUS_11=0x00000000

    CortexA9:GEL 输出:PHY_STATUS_17=0x027F00C1

    CortexA9:GEL 输出:PHY_STATUS_18=0x01BC00BD

    CortexA9:GEL 输出:PHY_STATUS_19=0x029700D3

    CortexA9:GEL 输出:PHY_STATUS_20=0x02FF00D3

    CortexA9:GEL 输出:PHY_STATUS_21=0x00000000

    CortexA9:GEL 输出:PHY_STATUS_22=0x023F0081

    CortexA9:GEL 输出:PHY_STATUS_23=0x017C007D

    CortexA9:GEL 输出:PHY_STATUS_24=0x02570093

    CortexA9:GEL 输出:PHY_STATUS_25=0x02BF0093

    CortexA9:GEL 输出:PHY_STATUS_26=0x00000000

    我用来馈入 GEL 和 U-boot 的 EMIF 值为: e2e.ti.com/.../3073.SPRAC70_5F00_AM437x_5F00_EMIF_5F00_Configuration_5F00_Tool_5F00_V20_5F00_1866_5F00_190917.xlsx

    一些 u-boot mtest 故障如下所示: e2e.ti.com/.../uboot.txt

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

    1.我在 AM437x IDK 板上尝试了 mtest。 我正在使用一个更详尽的完整测试(CONFIG_SYS_ALT_MEMTEST)。 我发现它返回的错误与我的错误类似。 IDK 板使用硬件调平进行 DDR。

    2.我使用的是 ti-processor-sdk-linux-AM437X-EVM-03.03.00.04。 我的 u-boot 顶部提交点为4db46a6bbde46e4587b77e14763787f66c292701。 我正在使用默认的 u-boot 源代码、并且已在 defconfig 文件中启用 mtest 支持。

    3.请找到以下错误。 我不确定我们是否在 u-boot 中缺少硬件调平支持。

    => mtest 0xA0000000 0xC0000000

    正在测试 a0000000... c0000000:

    迭代:   1.

    故障(读取/写入)@ 0xbef0fda0:预期值0x07bc3f69、实际值0x07bc3f68)

    3.因此,我想检查我是否在这里遗漏了一些东西。 下面是用于启用 mtest 的 defconfig 补丁。

    #define CONFIG_CMD_MEMTEST       1

    #define CONFIG_SYS_ALT_MEMTEST     1

    #define CONFIG_SYS_MEMTEST_START   (0x84000000)       /* memtest */                   

    #define CONFIG_SYS_MEMTEST_END     (0xC0000000)      

    #define CONFIG_SYS_MEMTEST_Scratch  (CONFIG_SYS_MEMTEST_START - 4) /*虚拟地址*

    e2e.ti.com/.../idk_5F00_uboot.txt

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

    对此进行了任何更新? 请您在这方面提供帮助。 谢谢、

    此致、
    Sriram
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将要求我们的软件团队对此进行检查。

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

    您是否从您的 S/W 团队那里获得了任何更新、以了解当在带有 TI 处理器 SDK 的 AM437x IDK 平台上启用 CONFIG_SYS_ALT_MEMTEST 时、为什么 u-boot 中的详尽内存测试在0xBf0000000...0xC0000000区域中失败。

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

    u-boot 中的 e2e.ti.com/.../mem.sh.gzThe EMIF 设置显示硬件调平已启用。 U-boot 会将自身重新定位到上部存储器、因此我认为您正在尝试覆盖 u-boot。 Processor SDK 在文件系统中提供了一个非常广泛的存储器测试实用程序。 我附加了一个脚本、这样您只需传入要测试的存储器百分比。 输出看起来是这样的

    环路1:

     地址卡滞   :正常

     随机值    :还可以

     比较 XOR     :好的

     比较子项     :好的

     比较 MUL     :好的

     比较 DIV     :好的

     比较或      :好的

     请比较和     :好的

     顺序增量:确定

     实位      :好的

     Block Sequential  (块顺序):OK (正常)

     棋盘    :还可以

     位扩展      :好的

     位翻转       :好的

     步行的人    :还可以

     步行零:   还可以

    gunzip 文件并只需键入./mem.sh <% memory to test>

    Steve K.

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

    感谢您回答此问题。

    嗯、我在 Linux 中使用了 memtester、它通过了测试。 不过、回到 u-boot 中的问题。 U-boot 有2个不同的测试、一个简单/快速的测试和一个详尽的测试。 详尽的测试非常全面。

    我从0x84000000 0xC0000000运行了测试。 每次在0xBf0000000...0xC0000000之间失败

    我在自定义电路板以及 AM437x IDK 电路板中看到了相同的问题、但未做任何更改。 我仅在 idk 板上启用了详尽的测试。

    在我的定制 AM437x 板上、如果我禁用调平、则通过相同的测试。 这让我想知道结果会有什么错误、
    因此、我禁用了最后一个16MB、因为我不确定是什么问题。

    感谢你的帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否可以确保不覆盖 u-boot 本身? U-boot 会将自身重新定位到上部存储器并从此处运行。

    Steve K.