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:我的 Beagle Bone spl 引导加载程序无法加载 uboot 和内核

Guru**** 2558250 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/611179/linux-my-beagle-bone-spl-boot-loader-not-able-to-load-uboot-and-kernel

工具/软件:Linux

大家好、

使用配有 Beagle Bone Black (am33xx)的 Micron ram 时遇到问题、使用 DDR3micron ram (MT41K256M16)时需要按照以下链接更改 spl 引导加载程序。

http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_Tuning_the_DDR3_Timings_on_BeagleBoneBlack#Determine_Basic_Preliminary_Timings

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。
请建议我如何调试此问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Shilesh、

    根据我的理解、您将 BeagleBoneBlack 与 AM335x PSDK 3.00.04搭配使用。 在这种情况下、您无需关注 wiki 并更改 DDR3设置。 仅当您使用的定制板具有不同于 BeagleBoneBlack 中使用的 DDR3芯片时、才应关注 wiki。

    AM335x PSDK 3.00.00.04支持 BeagleBoneBlack 默认情况下、不应更改 u-boot 源代码以进行引导。

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

    感谢 Pavel 的回复、

    是的,我正在使用像 Beagle Bone Black 这样的定制板微笑器,通常 Beagle Bone Black 使用 Kingston DDR3,但 在我的板 上,我使用 Micron (MT41K256M16) DDR3,在这种情况下,我需要根据给定链接更改 spl 引导加载程序。

    在链接 ti 上,已告知 locate s_init 函数位于./board/ti/am335xx/board.c 中,但 s_init 函数位于 ./arch/arm/cpu/armv7/am33xx/board.c 文件中,因此 我需要在该文件中进行更改。  它是否正确。

    请更新我的信息。 我们还会向 ti 发送板以调试该问题。

     

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

    [引用 user="Shilesh Babu"] Beagle Bone Black 通常使用 Kingston DDR3,但 在我的主板 上,我使用的是 Micron (MT41K256M16) DDR3,在这种情况下,我需要根据给定的链接更改 spl 引导加载程序。

    我不能同意这一说法。 我有两个 BeagleBoneBlack 板、它们都带有 Micron MT41K256M16HA-125E DDR3芯片。 两者都可以使用默认的 AM335x PSDK 3.00.04正常启动。

    此外、您要查看的 Wiki 页面也说明了相同的内容:

    重要提示

    上述时序是针对 BeagleBoneBlack 上使用的 Micron MT41K256M16HA-125:E 得出的。 与上面使用的不同存储器器件将需要不同的时序参数

    对于非引导自定义板、我建议您从以下 wiki 开始:

    此致、
    帕维尔

     
     

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答。
    我想问的是、我的板连接了电源、在 uart0上显示了 cccccccccccccccc。 这意味着 ROM 代码正在运行、但一旦我将闪存的 sdcard 插入电路板、uart0上没有显示任何内容、您能告诉我有哪些可能性、以便我可以调试这个问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shilesh、

    如何刷写 SD 卡? 是否使用 PSDK/bin/create-sdcard.sh 脚本? 是否为 MMC/SD 引导配置引导引脚?

    我提供给您的 wiki 页面对于本例仍然有效、您可以参考该页面获取调试提示。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我使用 PSDK/bin/create-sdcard.sh 脚本制作 sdcard、然后按 switch (s2)以从 SD 引导模式启动、这与我检查的相同 BeagleBone Black 修订版 C、带 Kingston DDR3。 工作正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Shilesh Babu"]按开关(s2)以从 SD 引导模式启动[/quot]

    我不确定您的定制板上的 s2有什么作用。 我建议您再次检查您的引导引脚、这些引脚应配置为 MMC/SD 引导。

    定制板和 BBB 之间的 MMC/SD 接口是否有任何变化?

    此致、
    帕维尔