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/AM4379:EMIF 工具与 board.c 文件的关系

Guru**** 2540720 points
Other Parts Discussed in Thread: CLOCKTREETOOL

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/803050/linux-am4379-emif-tool-relation-with-board-c-file

器件型号:AM4379
主题中讨论的其他器件:CLOCKTREETOOL

工具/软件:Linux

您好!

我在"AM437x_EMIF_Configuration_Tool"中输入了所有值的特定系统应用程序详细信息

和寄存器值(EMIF 寄存器、DDR_PHY_CTRL 寄存 器、IO 控制寄存器和 LPDDR2模式寄存器)根据我们的系统创建。  

但 我不了解该寄存器与 u-boot 之间的关系。

例如、我在 u-boot CCS 工程中找不到"EMIF4D_SDRAM_Timing_1"寄存器。

我也找不到"EMIF4D_EXT_PHY_CTRL_35_SHADO" 寄存器...

据我所知、我们必须根据"EMIF_Configuration_Tool"寄存器值更改"board.c"文件。

但是、当我检查"board.c"文件时; 就像我在前面所说的那样、我找不到与 EMIF_Configuration_Tool 寄存器的任何关系

此致

Mehmet

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

    在 u-boot 中、EMIF4D_SDRAM_TIM_1寄存器(物理地址0x4C000018)被命名为 EMIF_SDRAM_TIM_1。
    EMIF4D_EXT_PHY_CTRL_35_SHADOW 的名称为 EMIF_DDR_ext_phy_CTRL_35。

    请参阅以下 u-boot 文件进行参考:

    u-boot-2018.01/arch/arm/include/asm/emif.h
    u-boot-2018.01/arch/arm/mach-omap2/am33xx/emif4.c
    u-boot-2018.01/arch/arm/mach-OMAP2/am33xx/DDR.c

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

    您好、Pavel、

    感谢您的回答。

    例如、EMIF4D_SDRAM_Timing_1 和 EMIF4D_EXT_PHY_CTRL_35_SHADOW 。

    "AM437x_EMIF_Configuration_Tool"上有89个寄存器。

    是否有任何与注册相对应的文件名称?

    我如何猜测"EMIF4D_SDRAM_OUTPUT Impedance _CALIBRACY_CONFIG"与什么对应?

    还有一个问题。

    根据 EMIF_Tool 的"EMIF4D_SDRAM_Timing_1"寄存器值必须为"0xEAAE51B"

    "EMIF4D_SDRAM_TIMing_1"对应"EMIF_SDRAM_TIM_1"

    如何将"0xEAAE51B"分配给"EMIF_SDRAM_TIM_1"?

    当我搜索"EMIF_SDRAM_TIM_1"时、有两个函数使用"EMIF_SDRAM_TIM_1"?

    我应该用"0xEAAAAE51B"修改这个函数吗?

    问题可能会更容易一些。

    我是新手、我想自己学习。

    感谢您的关注和帮助

    此致

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

    [报价用户="Mehmet"]是否有与注册相对应的任何名称文档?

    我进行了搜索、但无法找到此类文档。 只能找到以下包含一些提示的 wiki:

    [引用 user="Mehmet"]我如何猜测"EMIF4D_SDRAM_OUTPUT Impedance _CALIBRACK_CONFIG"与什么相对应?

    您不应猜测、而应检查 u-boot 代码如何配置 DDR3、并尝试了解该机制。

    这是 EMIF_zq_config 寄存器、定义并在以下 u-boot 文件中使用:

    u-boot-2018.01/arch/arm/include/asm/emif.h

    u-boot-2018.01/arch/arm/mach-OMAP2/am33xx/DDR.c

    [引用用户="Mehmet"]

    根据 EMIF_Tool 的"EMIF4D_SDRAM_Timing_1"寄存器值必须为"0xEAAE51B"

    "EMIF4D_SDRAM_TIMing_1"对应"EMIF_SDRAM_TIM_1"

    如何将"0xEAAE51B"分配给"EMIF_SDRAM_TIM_1"?

    当我搜索"EMIF_SDRAM_TIM_1"时、有两个函数使用"EMIF_SDRAM_TIM_1"?

    我应该用"0xEAAAAE51B"修改这个函数吗?

    [/报价]

    您需要修改以下文件和函数:

    u-boot-2018.01/board/ti/am43xx/board.c

    const 结构 EMIF_regs DDR3_EMIF_regs_400MHz ={

    -.SDRAM_TIM1=0xEAAD4DB         、

    +.SDRAM_TIM1         = 0xEAAE51B、

    此致、
    帕维尔

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

    您好、Pavel、
    感谢您的关注。

    根据 AM437x_EMIF_Configuration_Tool 输出修改 board.c 文件是否足以仅引导 Linux 内核? (我没有使用任何其他工具、例如 clocktreetool、pinmux 工具)

    是否有任何其他文件需要根据 AM437x_EMIF_Configuration_Tool 输出进行更改?

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

    除 board.c 文件外、您可能还需要更新 u-boot/arch/arm/include/asm/arch-am33xx/DDR_defs.h、如我提供的 wiki 页面中所述。

    可能还需要更新以下文件:

    u-boot/arch/arm/mach-OMAP2/am33xx/DDR.c

    您需要在 u-boot 中搜索 AM437x EMIF 配置工具(选项卡寄存器)中描述的所有 DDR 寄存器、并确保它们与工具值对齐。

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

    您好、Pavel、

    我尝试修改 board.c、就像您说的那样。  

    但是、您建议在   灰色区域中修改".SDRAM_TIM1=0xEAAAAE51B"的行。  

    只要我理解,我们就必须取消定义"CONFIG_TI_I2C_Board_detect",并且必须禁用"do board_detect()"。

    因为我们有定制板、需要定制配置、所以我们必须定义"CONFIG_SKIP_LOWLEVEL_INIT"、并且必须应用 补丁  
    这些步骤是否正确?

    此致、

    Mehmet

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

    Mehmet、

    ".SDRAM_TIM1=0xEAAE51B"与 DO_BOARD_DETECT ()和 CONFIG_TI_I2C_Board_DETECT 无关。 如果您没有将 EEPROM 连接到 I2C 以检测电路板名称和版本、则应修改 u-boot 代码。 但这与 DDR3配置无关、您需要打开有关删除 I2C EEPROM 代码的新 e2e 线程。

    关于 CONFIG_SKIP_LOW_LEVEL_INIT、默认情况下(SPL 中)未定义此项、您不应修改它。 CONFIG_SKIP_lowlevel_init 仅为 u-boot 定义、因为 SPL 已经进行了一些初始化、并且 u-boot 不需要第二次执行此操作。

    CONFIG_SKIP_lowlevel_init -如果定义了此变量、则会省略某些低级初始化(如设置存储器控制器)、并且/或 U-Boot 不会将自身重新定位到 RAM 中。 通常不能定义此变量。 唯一的例外是 U-Boot 由某些其他引导加载程序(即 SPL)或执行这些初始化本身的调试器加载(至 RAM)。

    U-boot-2018.01/include/configs/am43xx_evm.h:

    /*
    *由于 SPL 为我们进行了 PLL 和 DDR 初始化、
    *我们不需要执行两次。
    *
    #if!defined (CONFIG_SPL_Build)&&!defined (CONFIG_QSPI_BOOT)
    #define CONFIG_SKIP_lowlevel_init
    #endif

    总之、您无需更改任何与 CONFIG_SKIP_LOW_LEVEL_INIT 相关的内容。

    此致、
    帕维尔

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

    您好、Pavel、

    再次感谢您的关注。

    我使用"0001-AM437x-hardcode-EEPROM-board-name-to -AM43_GP "补丁修改了 u-boot 代码。

    在这个补丁中 、我们省略了 EEPROM 检查。

    然后、我将 board.c 中的".SDRAM_CONFIG"从0x638413B2更改为0x61A053B2

    最后、我收到 SPL 的消息!

    U-Boot SPL 2018.01-00569-gf9c38b91a2-n脏(2019年5月14日- 11:47:55)
    SPL:无法从所有引导设备进行引导
    ###错误###请重置电路板### 

    我认为这条消息意味着 SPL 工作正常、并等待 u-boot 代码。

    但这次我们无法到达 DDR3地址0x80800000

    当我尝试在0x80800000加载 u-boot.bin 文件时、会发生错误。 "加载内存失败。 无法写入0x80800000:执行状态阻止访问。"

    我认为 我应该使用 EMIF_Tool。 EMIF 配置可能错误或缺失。 因为我只修改了".SDRAM_CONFIG"参数。  我没有在 board.c 中修改或添加任何内容

    如果我无法解决此问题,我将创建新的线程。

     

    非常感谢 Pavel。

    此致、

    Mehmet

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要在 u-boot 中搜索 AM437x EMIF 配置工具(选项卡寄存器)中描述的所有 DDR 寄存器、并确保它们与工具值对齐。

    此致、
    帕维尔