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.

[参考译文] 我是否应该在使用不同的 QSPI 闪存时修改源代码

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/579606/should-i-modify-source-code-when-using-different-qspi-flash

主题中讨论的其他器件:J6EVM5777、DRA742

大家好、我将使用 Jacinto 6、GLSDK 7.04.03。

如果我们在 DRA742-EVM 577G-02-21-00 板上将 eMMC 替换为"N25Q064A13E12H0F"、我是否应该修改任何代码?

正如我在 dra7-EVM.dts 文件中看到的、有关 QSPI 的描述如下所示

&QSPI{            

状态="正常";

 SPI-max-frequency =<64000000>;
 m25p80@0{
  兼容="s25fl256s1";
  SPI-max-frequency =<64000000>;

 compatible 的值是原始 QSPI 闪存、因此我认为我应该在这里修改、对吧?

此外、我还应该修改什么地方吗?

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

    您使用的是 DRA75x TI EVM 还是定制板? 您计划如何将 eMMC 替换为 N25Q064A13E12H0F?

    在 DRA75x 上、TI EVM (J6EVM5777)具有四个不同的闪存(QSPI、eMMC、NAND 和 NOR)。 eMMC 闪存连接到 DRA75x MMC2模块、QSPI 闪存连接到 QSPI 模块、NOR 和 NAND 闪存连接到 GPMC 模块。

    N25Q064A13E12H0F 是串行 NOR 闪存、应连接到 QSPI 模块、您无法将其连接到 MMC 模块。

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

    我使用 DRA74X 在定制板上工作。 现在我尝试更换 QSPI 闪存(N25Q064A13E12H0F)、它将连接到 QSPI 模块。
    那么、我应该修改代码吗? 还是 QSPI 模块将自动识别它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    肖恩、

    在 DRA75x TI EVM 上、使用的 QSPI 和闪存均为连接到 QSPI1模块的 S25FL256SAGMFV001。 是否要在定制板上将 S25FL256SAGMFV001替换为 N25Q064A13E12H0F? 是否将 N25Q064A13E12H0F 连接到 QSPI1模块?

    eMMC 是如何参与的? 您确切需要了解什么有关 eMMC 的信息?

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

    如果您计划从 QSPI NOR 闪存启动、请告诉我。 默认的 u-boot 布局可能不适合您的64Mbit/8MByte 闪存、有关详细信息、请参阅以下 wiki 页面:

    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide
    processors.wiki.ti.com/.../DRA7xx_GLSDK_Software_Developers_Guide

    您可以使用"QSPI 开发启动模式"、其中只有 MLO 和 u-boot.img 存储在 QSPI 闪存中。

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

    您好、Pavel、

    是的、我想在我们的定制板上将 S25FL256SAGMFV001替换为 N25Q064A13E12H0F、并且仍然连接到 QSPI1模块。
    我只想知道、我是否应该为此更改修改代码。
    此外、在我们的板上、eMMC 也会改变、但我已经在另一篇文章中提出了。

    因此、如果我需要使用该闪存从 QSPI 进行过多引导、我只能使用开发引导模式、而只能引导至不带内核的 u-boot、对吧?

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

    肖恩、

    让我们首先关注 u-boot。

    我假设您将使用与 TI EVM 相同的 QSPI1引脚、对吧?

    然后、您只应更新以下文件:

    u-boot/arch/arm/dts/dra7-evm.dts

    &QSPI{

    状态="正常";

    pinctrl-names ="default";

    pinctrl-0 =<&qspi1_PINs>;

    SPI-max-frequency =<64000000>;

    m25p80@0{

    兼容="s25fl256s1"、"SPI-flash";

    SPI-max-frequency =<76800000>;

    reg =<0>;

    SPI-TX-bus-width =<1>;

    SPI-Rx-bus-width =<4>;

    #address-cells =<1>;

    大小单元格=<1>;

    /* MTD 分区表。

    * ROM 检查前四个物理块

    *以启动有效文件、此处的闪存为

    * 64KiB 块大小。

    *

    分区@0{

    标签="QSPI.SPL";

    REG =<0x00000000 0x000010000>;

    };

    分区@1{

    标签="QSPI.SPL.Backup1";

    REG =<0x00010000 0x00010000>;

    };

    分区@2{

    标签="QSPI.SPL.Backup2";

    REG =<0x00020000 0x00010000>;

    };

    分区@3{

    标签="qspi.SPL.backup3";

    REG =<0x00030000 0x00010000>;

    };

    分区@4{

    标签="qspi.u-boot";

    REG =<0x00040000 0x00100000 >;

    };

    分区@5{

    label ="qspi.u-boot-spl-os";

    REG =<0x00140000 0x00080000>;

    };

    分区@6{

    label ="qspi.u-boot-env";

    REG =<0x001c0000 0x00010000>;

    };

    分区@7{

    label ="qspi.u-boot-env.Backup1";

    REG =<0x001d0000 0x0010000>;

    };

    分区@8{

    标签="qspi.kernel";

    REG =<0x001e0000 0x0800000>;

    };

    分区@9{

    label ="qspi.file-system";

    REG =<0x009e0000 0x01620000>;

    };

    };

    };

     

    您应将"s25fl256s1"字符串替换为 n25q64a、有关更多信息、请参阅以下文件:

    u-boot/drivers/MTD/SPI/SF_params.c

    [引用 USER="Shawn LIN"]因此,如果我需要使用该闪存从 QSPI 引导,我只能使用开发引导模式,而只能引导至不带内核的 u-boot,对吗?

    这取决于文件的大小(MLO、u-boot.img、dtb blob、u-boot env、uImage)和 QSPI 布局。 您可以根据自己在 dra7-evm.dts 文件中的特定需求调整 QSPI 布局

    此致、
    帕维尔

     

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

    感谢您的建议、我已经可以识别我们定制板中的 QSPI 闪存(N25Q128)。
    现在、我尝试在其中刷写 MLO 和 u-boot.img、但失败了。 我按照 processors.wiki.ti.com/.../DRA7xx_GLSDK_Software_Developers_Guide 上的步骤操作
    ,在我刷新 MLO.QSPI 之后,我从 QSPI 闪存中读取并与 MLO.QSPI 文件进行比较,数据似乎没有成功写入。
    您是否知道为什么会发生这种情况?

    P.S. 我可以成功将 MLO 和 u-boot.img 刷写到 QSPI 闪存(S25FL256SAGMFV001)、但在"N25Q128"上失败。

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

    您是否仅在 u-boot/arch/arm/dts/dra7-evm.dts 文件中进行了更改?

    您是否正在尝试在 u-boot 或用户空间级别刷写 MLO 和 u-boot.img? 您能否为我提供包含成功闪存和故障闪存的完整控制台日志?

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

    您好、Pavel、

     

    我修改以下文件、

    1. j6_sdk/board-support/u-boot/boards.cfg  =>在我们的配置中使用"QSPI_boot"替换"ENV_iS_in_MMC"

    j6_sdk/board-support/u-boot/include/configs/xxx.h =>添加"#define CONFIG_SPI_FLASH_STMICRO"以替换"#define CONFIG_SPI_FLASH_Spansion"。 XXX 是我们的项目名称

     

    在 u-boot 级别刷新 MLO 和 u-boot.img

     

    成功的闪存日志=>e2e.ti.com/.../2425.qspi_5F00_flash_2800_S25FL256SAGMFI003_2900_.log

     故障闪存日志=>e2e.ti.com/.../3581.qspi_5F00_flash_2800_N25Q128_2900_.log

    MLO.QSPI 文件=>e2e.ti.com/.../MLO.txt

    我将 MLO.QSPI 刷写到闪存中并读回256字节、以与 MLO.QSPI 文件进行比较。 成功的测试结果相同、但 N25Q128中的结果不同。

     

    此致、

    肖恩

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

    肖恩、

    [引用用户="Shawn LIN"]

    我修改以下文件、

    1. j6_sdk/board-support/u-boot/boards.cfg  =>在我们的配置中使用"QSPI_boot"替换"ENV_iS_in_MMC"

    j6_sdk/board-support/u-boot/include/configs/xxx.h =>添加"#define CONFIG_SPI_FLASH_STMICRO"以替换"#define CONFIG_SPI_FLASH_Spansion"。 XXX 是我们的项目名称

    [/报价]

    您是否修改 u-boot/arch/arm/dts/dra7-evm.dts 文件?

    [报价用户="Shawn LIN"] 故障闪存日志=>(请访问站点查看此文件)

    您正在使用以下 wiki:

    您能否使用准确的命令进行尝试:

    UBoot# MMC DEV 0 (非 U-Boot# M MMC DEV 0)

    uBoot# Fatload MMC 0 0x82000000 MLO.QSPI (非 U-Boot# Fatload MMC 0 0x82000000 MLO.Q QSPI)

    您是否还可以尝试使用以下命令集、是否有任何区别?

    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide

    [引用 USER="Shawn LIN]I 将 MLO.QSPI 刷写到闪存中并读回256字节、以与 MLO.QSPI 文件进行比较。 成功的测试结果相同、但 N25Q128中的结果不同。[/quot]

    因此、N25Q128每次都有不同的 DDR3转储。 您是否验证 DDR3内存是否正确? 这可能是 DDR3内存问题、而不是 QSPI。

    此致、
    帕维尔

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

    您好、Pavel、

    我在 u-boot/arch/arm/dts/目录中找不到 dra7-evm.dts、您可能是指 board-support/linux/arch/arm/boot/dts/目录、因为我可以在这里找到 dra7-evm.dts。

    在我们的项目中、我们添加了另一个 DTS、因此我像下面一样修改了这个 QSPI 闪存的_project.dts、

    &QSPI{

    状态="正常";

    SPI-max-frequency =<32000000>;

    m25p80@0{

     兼容="N25Q128";

     SPI-max-frequency =<32000000>;

     reg =<0>;

     SPI-TX-bus-width =<1>;

     SPI-Rx-bus-width =<4>;

     #address-cells =<1>;

     大小单元格=<1>;

     /* MTD 分区表。

     * ROM 检查前四个物理块

     *以启动有效文件、此处的闪存为

     * 64KiB 块大小。

     *

     分区@0{

     标签="QSPI.SPL";

     REG =<0x00000000 0x000010000>;

     };

     分区@1{

     标签="QSPI.SPL.Backup1";

     REG =<0x00010000 0x00010000>;

     };

     分区@2{

     标签="QSPI.SPL.Backup2";

     REG =<0x00020000 0x00010000>;

     };

     分区@3{

     标签="qspi.SPL.backup3";

     REG =<0x00030000 0x00010000>;

     };

     分区@4{

     标签="qspi.u-boot";

     REG =<0x00040000 0x00100000 >;

     };

     分区@5{

     label ="qspi.u-boot-spl-os";

     REG =<0x00140000 0x00080000>;

     };

     分区@6{

     label ="qspi.u-boot-env";

     REG =<0x001c0000 0x00010000>;

     };

     分区@7{

     label ="qspi.u-boot-env.Backup1";

     REG =<0x001d0000 0x0010000>;

     };

     分区@8{

     标签="qspi.kernel";

     REG =<0x001e0000 0x0800000>;

     };

     分区@9{

     label ="qspi.file-system";

     REG =<0x009e0000 0x01620000>;

     };

    };

    };

    2. 关于使用准确的命令:...抱歉、日志让您误解了。 我使用 TeraTerm 来记录消息、但我不知道为什么该命令会如此。 从物理角度而言、我的命令 与您的 post=>(uboot# mmc dev 0)(uboot# fatload mmc 0 0x82000000 mLLO.QSPI)完全相同

    3.我在 http://processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User's_Guide#Writing_to_QSPI_from_U-Boot 上尝试过命令 POST,得到的结果相同。

    我认为 DDR3设置应该可以、因为当我使用"fatload"命令在存储器地址0x82000000处加载 MLO.QSPI、然后使用"MD"显示数据时、情况是一样的、但在我写入 QSPI 闪存并读回0x82000000地址后、情况就不同了。

    P.S. 在我检查规格后。 N25Q128 (e2e.ti.com/.../n25q_5F00_128mb_5F00_3v_5F00_65nm.pdf)的说明、 它具有写保护功能。 这是我无法成功写入闪存的原因吗?

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

    [引用 USER="Shawn LIN]1.I 在 u-boot/arch/arm/dts/目录中找不到 dra7-evm.dts、您可能是指 board-support/linux/arch/arm/boot/dts/目录、因为我可以在这里找到 dra7-evm.dts。

    我提到了 PSDK 3.x、其中 DTS 文件用于 DRA7x。 在 GLSDK 7.04中、我们在 u-boot 中没有 DTS 支持(对于 DRA7x)、我们使用以下文件:

    U-boot/configs/dra7xx_evm.h

    Board/ti/dra7xx/evm.c

    u-boot/board/ti/dra7xx/mux_data.h

    [引用 user="Shawn LIN"]在我们的项目中,我们添加了另一个 DTS,因此我像下面一样修改了该 QSPI 闪存的_project.dts [/quot]

    您在哪里添加了 u-boot 或内核中的自定义 DTS 文件?

    [引用 USER="Shawn LIN]4. 我认为 DDR3设置应该可以、因为当我使用"fatload"命令在存储器地址0x82000000处加载 MLO.QSPI、然后使用"MD"显示数据时、情况是一样的、但在我写入 QSPI 闪存并读回0x82000000地址后、情况就不同了。

    我们已经进行了有关 QSPI 模块的测试、请尝试一下:

    u-boot/doc/SPI/README.ti_QSPI_DRA_test

    另请参见以下文件:

    u-boot/doc/SPI/README.ti_QSPI_FLASH

    您的 DRA7x 器件的器件版本是什么? 请参阅芯片勘误表 i855 QSPI Mode0/1/2不工作、mode3限制为48MHz


    [引用 USER="Shawn LIN]P.S. 在我检查规格后。 N25Q128的说明((请访问站点查看此文件))、 它具有写保护功能。 这是我无法成功写入闪存的原因吗?

    是的、可以。 S25FL256和 N25Q128之间的唯一区别是大小(32MB 和16MB)和写保护功能?

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另请检查 QSPI 引脚多路复用设置、比较 TI EVM 和您的定制板。 在 u-boot 级别进行检查。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pavel、

    1.我在 board-support/linux/arch/arm/boot/dts/中添加了我们的定制 dts 文件,我们还修改了定制电路板的 EVM.c 和 mux_data.h
    我看到了"u-boot/doc/SPI/README.ti_QSPI_DRA_test"和"u-boot/doc/SPI/README.ti_QSPI_FLASH"、其中的命令已经尝试、但失败。
    我们使用的是 DRA742。 目前、我将 CONFIG_SF_DEFAULT_SPEED 设置为32MHz。
    S25FL256也具有写保护功能、但我可以成功写入。 目前、只有尺寸与我看到的不同。
    5.我使用与 EVM 相同的设置,因为我们还使用 QSPI-1连接到 N25Q128闪存

    我还使用此处描述的方法=>
    git.digitalstrom.org/.../562f8df18da62ae02c4ace1e530451fe82c3312d

    但仍然失败。 在我运行"SF write"命令后、系统将返回"ok"、但当我从闪存读取 bak 时、数据与我写入的文件不同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Shawn LIN"]我在 board-support/linux/arch/arm/boot/dts/中添加了我们的定制 dts 文件,并且我们还修改了定制电路板的 EVM.c 和 mux_data.h

    从 u-boot 或内核获取 evm.c 和 mux_data.h?

    [引用 user="Shawn LIN]3. 我们使用的是 DRA742。 目前、我将 CONFIG_SF_DEFAULT_SPEED 设置为32MHz。 [/报价]

    这个宏看起来与 SPI 相关(不是 QSPI)。 为什么要将宏从64MHz 更改为32MHz?

    您能否在 QSPI u-boot 驱动器(u-boot/drivers/spi/ti_qspi.c)中启用调试打印、并在 TI EVM 和您的定制板之间启动期间和闪存期间比较日志? 是否有任何差异(需要 S25FL256/N25Q128和32MByte/16MByte 打印)?

    此致、
    帕维尔

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

    您好、Pavel、

    感谢您的回复。

    我尝试读取程序(SF_probe.c)中的 QSPI 闪存数据、数据就是我写入闪存的数据。

    我不知道为什么在使用"SF Read"和"MD"命令时它看起来不同? 但现在、图像似乎已经写入成功。

    在我将 MLO 和 u-boot.img 写入 QSPI 闪存后、我使用 QSPI 引导模式、尝试进入 u-boot 提示符、但失败。

    系统内存=>e2e.ti.com/.../qspi_5F00_boot_5F00_log.txt

    我在另一个定制板上使用相同的映像(DDR 大小与 DRA-EVM 相同)、可以成功启动。

    具有不同 DDR 大小(256MB)的电路板无法成功启动。 故障是否可能是因为 DDR 大小不同? 如果是、我应该如何解决它?

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

    [引用用户="Shawn LIN"]

    我尝试读取程序(SF_probe.c)中的 QSPI 闪存数据、数据就是我写入闪存的数据。

    我不知道为什么在使用"SF Read"和"MD"命令时它看起来不同? 但现在、图像似乎已经写入成功。

    [/报价]

    您是说从 u-boot/drivers/MTD/SPI/SF_probe.c 文件中读取 QSPI 闪存吗? 是否使用 SPI_FLASH_std_read()函数?

    我找到了一个内部线程(用于 N25Q256A)、其中我们具有:

    写作和擦除看起来正常、但阅读却不能正常工作。 SF 读取只能读取大小为0x80的数据。 0x80上的区域用0xcc 填充。

    要使四通道模式适用于此特定的微米芯片、需要在闪存寄存器中启用四通道模式。 现在、您能否在 u-boot 中选中禁用 CONFIG_TI_EDMA 并选中读取工作正常。

    删除 CONFIG_TI_EDMA 后、读取正常。

     

    请注意、QSPI wiki 中介绍了一些限制:

    processors.wiki.ti.com/.../Linux_Core_QSPI_User's_Guide

     

    存储器映射读取支持

    TI QSPI 控制器提供存储器映射端口、用于从 SPI 闪存读取数据。 在 QSPI_SPI_SWITCH_REG 寄存器中启用存储器映射端口。 可能还需要访问 DRA7xx 的控制模块寄存器。 QSPI_SPI_SETUP_REGx 需要使用闪存特定信息进行填充、例如读取操作码、读取模式(四通道、双通道、正常)、地址宽度和虚拟字节。 一旦控制器处于存储器映射模式、整个闪存存储器将作为 SoC 特定地址的存储器区域提供。 可以使用普通 memcpy()(或 mem 到 mem DMA 副本)访问此区域。 TI-QSPI 控制器硬件将通过 SPI 总线在内部与 SPI 闪存通信并获取请求的数据。

    QSPI IP 的设计方式是、在4096字传输后、芯片选择自动失效。 因此、无法使用(单/双/四)位读取模式功能在单片选择中读取整个闪存。 而串行闪存 Linux 框架和闪存规范要求在单个芯片选择中使用单个读取命令进行整个读取。 当 QSPI 在存储器映射模式下用于读取时、此限制不适用。 默认情况下、QSPI 驱动器使用存储器映射读取。

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

    [引用用户="Shawn LIN"]

    在我将 MLO 和 u-boot.img 写入 QSPI 闪存后、我使用 QSPI 引导模式、尝试进入 u-boot 提示符、但失败。

    系统计量=>(请访问站点查看此文件)

    我在另一个定制板上使用相同的映像(DDR 大小与 DRA-EVM 相同)、可以成功启动。

    具有不同 DDR 大小(256MB)的电路板无法成功启动。 故障是否可能是因为 DDR 大小不同? 如果是、我应该如何解决它?

    [/报价]

    256MB 定制板和4GB TI EVM 板中是否有相同的 DMM_LISA_MAP_I 寄存器设置? 如果是、请检查这些设置以匹配256MB 设计。

    此致、
    帕维尔

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

    您好、Pavel、

    是的、我从 u-boot/drivers/MTD/SPI/SF_probe.c 文件中读取 QSPI 闪存。 我使用 SF_ops.c 中的 SPI_FLASH_READ_COMMON ()函数

    2.I 已经在 board-support/u-boot/include/configs/中禁用"CONFIG_TI_EDMA"、但失败。 仍然 无法通过"SF Read"从闪存读取正确的数据。 日志=>e2e.ti.com/.../qspi_5F00_N25Q128_2800_no_5F00_CONFIG_5F00_TI_5F00_EDMA_2900_.txt 

    对于这个256MB 定制板、我们已经修改了 DMM_LISA_MAP_I 寄存器、并且可以构建 SD 映像、该映像可以成功引导至内核。 但无法从 QSPI 引导。

    现在、"SF Read"(SF 读取)存在问题、是否可能失败是因为系统无法从闪存读取 MLO 或 u-boot.img?

    但这会让我感到困惑、因为另一个定制板没有什么问题(使用与 DRA7xx EVM 相同的 QSPI 闪存、S25FL256)、它可以从 QSPI 闪存成功引导。

    此致、

    肖恩

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

    更新最新情况。
    我尝试通过取消 board-support/u-boot/include/configs 中的"CONFIG_TI_SPI_MMAP"来禁用存储器映射。
    现在、我可以通过"SF Read"命令读取闪存数据。 非常感谢。

    但 QSPI 引导仍然失败。

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

    肖恩、

    您是否有具有 N25Q128闪存的定制板、该定制板能够从 QSPI 顺利启动、或者每个定制板都无法从 QSPI 启动? 您能否为我提供最新的启动日志? 您能否确认相同的 MLO/SPL 从 SD 卡引导正常?

    另请参阅 DRA74x 器件勘误表、其中提供了一些有关 QSPI 的建议



    您是否使用 QSPI_1或 QSPI_4模式? 您的 sysboot[5:0]配置是什么?

    确保您已与 DRA74x TRM 的章节对齐:

    32.2.4.5引导外设引脚复用

    32.3.7.5 SPI/QSPI 闪存器件

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

    您好、Pavel、

    目前、采用 N25Q128的定制电路板无法通过 QSPI 成功启动。

    相同的 MLO 和 u-boot.img 可以通过 SD 卡成功启动。

    最新的log=>e2e.ti.com/.../8053.qspi_5F00_boot_5F00_log.txt 

    我使用 QSPI_1模式。 我的 sysboot[5:0]是110110

    注:我们定制板上的闪存应为"MT25QL128ABA8E12-0AAT"、但 它具有相同的 EDID、因此系统会将其识别为 N25Q128  

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

    [报价用户="Shawn LIN"]目前,没有采用 N25Q128的定制板可以通过 QSPI 成功启动。[/quot]

    也可能是硬件问题。 您可以仔细检查您的硬件设计。

    [引用 user="Shawn LIN"]相同的 MLO 和 u-boot.img 可以通过 SD 卡成功启动。

    如何为 SD 卡引导构建 MLO/u-boot.img? 如何为 DRA7x TI EVM QSPI 引导构建 MLO/u-boot.img? 是否使用 dra7xx_EVM_qspiboot_config 或 dra7xx_EVM_defconfig 或 dra7xx_EVM_config?

    [引用 USER="Shawn LIN]我使用 QSPI_1模式。 我的 sysboot[5:0]是1101101

    对于 DRA7x TI EVM QSPI 引导、您是否还在 sysboot[5:0]= 110110时使用 QSPI_1模式?

    [报价用户="Shawn LIN"]最新的日志=>(请访问站点查看此文件) 

    从该日志中、我认为已加载 MLO。 您能否为我提供 SD 卡引导和 DRA7x TI EVM QSPI 引导的日志?

    此致、
    帕维尔

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

    您好、Pavel、

    如果我尝试制作 QSPI 引导映像(MLO、u-boot.img)、我将修改我们的 board-support/u-boot/boards.cfg、并将配置参数从"ENV_is_in_mmC"更改为"QSPI_boot"。

    否、对于 DRA7xx TI EVM QSPI 引导、我没有尝试 sysboot[5:0]= 110110。 但在我尝试之后,它也失败了。 日志如下所示。 但我在定制板上使用与 EVM 相同的 QSPI 闪存尝试 QSPI 引导、它可以正常工作。

    我为 TI EVM 构建 MLO 和 u-boot.img 的方法是修改 configs/dra7xx 文件设置、将 default_uBoot_config 从"dra7xx_evm_usbboot_config"更改为"dra7xx_evm_qspiboot_config"

    SD 引导的日志、位于定制板=> e2e.ti.com/.../custom_5F00_board_5F00_SD.log  

    DRA7xx TI EVM QSPI boot=>e2e.ti.com/.../TI_5F00_EVM_5F00_board_5F00_QSPI.log 的日志  

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

    [报价用户="Shawn LIN"]如果我尝试制作 QSPI 引导映像(MLO、u-boot.img),我将修改我们的 board-support/u-boot/boards.cfg,并将 config 参数从"ENV_IS_IN_MMC"更改为"QSPI_BOOT"。[/QUESPLEG]

    为什么要这样做? 从哪里可以获得修改 board.cfg 文件的说明? 如果您为 QSPI (而不是 SD)构建 MLO/u-boot、则环境将在 QSPI 闪存(不在 SD 卡中)中进行设置(dra7xx_EVM_qspiboot_config)

    [引用 USER="Shawn LIN"]不、我没有尝试针对 DRA7xx TI EVM QSPI 启动的 sysboot[5:0]= 110110。 但在我尝试之后,它也失败了。 日志如下所示。 但我在定制电路板上使用与 EVM 相同的 QSPI 闪存尝试 QSPI 引导、它可以正常工作。

    因此、您也无法从 QSPI 引导 DRA7x TI EVM。 您只能在 S25FL256闪存成功的情况下引导定制板、对吗? 如何使用 S25FL256闪存为 QSPI 引导的定制板构建 MLO/u-boot.img? 是否使用 dra7xx_EVM_qspiboot_config 或 dra7xx_EVM_defconfig 或 dra7xx_EVM_config?

    您是否还在 sysboot[5:0]= 110110下使用 QSPI_1模式进行自定义 S25FL256板 QSPI 引导? 您能否为定制 S25FL256板提供带有 QSPI 引导的日志?

    此致、
    帕维尔

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

    您好、Pavel、

    我已经可以从 DRA7x TI EVM 上的 QSPI 引导。 我将 default_uBoot_config 修改为"dra7xx_evm_qspiboot_config"以构建 MLO 和 u-boot.img。 此外、我还根据 DRA7xx_GLSDK_Software_Developers_Guide 中描述的 QSPI 存储器布局修改闪存参数。

    本指南说明我应该使用命令"SF write 0x83000000 0x40000 0x60000"来刷写 u-boot.img。 但根据存储器布局、u-boot.img 的空间为0x100000、因此如果我将大小0x60000替换为0x100000、那么我可以从 EVM 上的 QSPI 引导。 此命令是否有问题?

    正如您所说、我应该使用"dra7xx_EVM_qspiboot_config"为我们的定制板创建 MLO 和 u-boot.img?

    我已经尝试过,但仍然无法启动,日志=>e2e.ti.com/.../qspi_5F00_boot_5F00_log-_2800_custom_5F00_board_2D00_B_2900_.txt  

    由于我们的定制板 B 使用256MB 内存、这是否是导致启动失败的原因? 或者、因为我们使用不同的 QSPI 闪存(STMicro MT25QL128)

    是的、我使用具有 sysboot[5:0]= 110110 的 QSPI_1模式来进行自定义 S25FL256板 QSPI 引导。 日志为=>e2e.ti.com/.../qspi_5F00_boot_5F00_log_2800_custom_5F00_board_2D00_A_2900_.txt  

    在 board.cfg 中 、我们为 定制板创建新的配置。 大多数参数、就像 dra7xx_EVM 一样。 由于没有配置可以为 QSPI 引导构建映像、因此我使用我之前所说的方式(在 board.cfg 中将参数从"ENV_is_in_mmc"修改为"QSPI_boot")来构建 MLO 和 u-boot.img 以用于 QSPI 引导。 通过这种方式、我可以从 QSPI 中引导出定制板 A (1GB 内存大小)。

    目前、我只能从定制电路板 A 中的 QSPI (具有1GB 内存、S25FL256 QSPI 闪存)引导、但在定制电路板 B 中失败(具有256MB 内存、STMicro MT25QL128)

    此致、

    肖恩

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

    您好、Pavel、

    你有什么建议吗?

    此致、

    肖恩

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

    您好、Pavel、

    "dra7xx_EVM_qspiboot"是否为文件? 如果是、您能告诉我它在哪里? 因为我可以在/board_support/u-boot/include/configs/中找到其他配置、例如 dra7xx_evm.h 或 dra7xx_EVM_Android.h、但我找不到 dra7xx_EVM_qspiboot.h

    我无法使用 dra7xx_EVM_qspiboot 构建 MLO 和 u-boot.img、因为我们定制板中的存储器设置与 TI EVM 板不同。

    此致、

    肖恩

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

    肖恩、

    [引用用户="Shawn LIN"]

    我已经尝试过,但仍然无法启动,日志为=>(请访问站点查看此文件)   

    由于我们的定制板 B 使用256MB 内存、这是否是导致启动失败的原因? 或者、因为我们使用不同的 QSPI 闪存(STMicro MT25QL128)

    [/报价]

    [报价用户="Shawn LIN"]目前,我只能从我们的定制电路板 A 的 QSPI (具有1GB 内存、S25FL256 QSPI 闪存)启动,但在定制电路板 B (具有256MB 内存、STMicro MT25QL128)中失败

    从您发送的日志中可以看到、问题出在256MB DDR3、而不是 QSPI 闪存中。 您是否能够从 SD 卡(或任何其他引导源)引导此256MB 主板? 您在 u-boot 源码中应用了哪些更改来应用这个256MB DDR3?

    此致、
    帕维尔

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

    [引用 user="Shawn LIN]指南中说明我应该使用命令"SF write 0x83000000 0x40000 0x60000"来刷写 u-boot.img。 但根据存储器布局、u-boot.img 的空间为0x100000、因此如果我将大小0x60000替换为0x100000、那么我可以从 EVM 上的 QSPI 引导。 此命令是否有问题?

    否、命令正确、但它适用于 GLSDK 预构建的 u-boot.img、大小约为0.37MB。 默认布局为0x040000至0x140000、这意味着 u-boot.img 从0x40000开始、最大大小可为1MB (0x100000)。 0x60000与预构建 u-boot.img 的大小匹配、如果您自己的 u-boot.img 的大小较大、则应更新此0x60000参数。

    # SF 写入 
    其中
    、memory-address -要从
    offset 读取的源数据-要写入
     len 的 QSPI offset 位置-要写入的数据的长度 

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

    [引用 user="Shawn LIN"]您说过,我应该使用"dra7xx_EVM_qspiboot_config"为我们的定制板创建 MLO 和 u-boot.img?

    [引用 USER="Shawn LIN"]是的,我使用 sysboot[5:0]= 110110的 QSPI_1模式来进行自定义 的 S25FL256板 QSPI 引导。 [/报价]

    因此、您可以 使用 QSPI_1模式、sysboot[5:0]= 110110和 dra7xx_EVM_config 成功引导您的 S25FL256 1GB 定制板?

    看起来像 dra7xx_EVM_qspiboot_config 仅用于 QSPI_4模式。

    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide

    此致、
    帕维尔

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

    您好、Pavel、

    [引用 user="Pavel Bodev">从您发送的日志中,我认为问题似乎出在256MB DDR3,而不是 QSPI 闪存中。 您是否能够从 SD 卡(或任何其他引导源)引导此256MB 主板? 您在 u-boot 源码中应用了哪些更改来应用这个256MB DDR3?

    我们修改 board-support/u-boot/board/ti/xxx/evm.c 文件(其中 xxx 是我们的项目名称)以适应256MB 内存大小、并且 我们可以从 SD 卡启动这个256MB 板。

    [引用 USER="Pavel Botev"]这样您就可以使用 QSPI_1模式、sysboot[5:0]= 110110和 dra7xx_EVM_config?[/quot]成功启动 S25FL256 1GB 自定义板

    是的、目前、我可以使用 QSPI_1模式引导 S25FL256 1GB 定制板、sysboot[5:0]= 110110。 但不使用 dra7xx_EVM_config。 我们为定制板添加了新的配置。 由于  定制板和 EVM 板之间的硬件布局不同、因此我们无法 直接使用 EVM 配置。

    [引用 user="Pavel Bodev"]似乎只用于 QSPI_4模式的 dra7xx_EVM_qspiboot_config。?[/quot]

    但是、当我尝试 dra7xx_EVM_qspiboot_config 时、我仍然在 EVM 板中使用 QSPI_1引导模式(sysboot[5:0]= 110110)、它可以正常工作。 那么、如果该配置仅用于 QSPI_4模式、为什么我仍然可以从 QSPI_1引导模式启动?

    此外、您能否告诉我如何查找此配置的内容?(例如、"dra7xx_EVM_qspiboot_config"或"dra7xx_EVM_config")

    此致、

    肖恩

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

    [引用用户="Shawn LIN"]

    但是、当我尝试 dra7xx_EVM_qspiboot_config 时、我仍然在 EVM 板中使用 QSPI_1引导模式(sysboot[5:0]= 110110)、它可以正常工作。 那么、如果该配置仅用于 QSPI_4模式、为什么我仍然可以从 QSPI_1引导模式启动?

    此外、您能否告诉我如何查找此配置的内容?(例如、"dra7xx_EVM_qspiboot_config"或"dra7xx_EVM_config")

    [/报价]

    查看 u-boot/boards.cfg 文件、"dra7xx_EVM_qspiboot"和"dra7xx_EVM"之间的区别是:

    dra7xx_EVM -> ENV_IT_IN_MMC

    dra7xx_EVM_qspiboot -> QSPI_boot

    使用 dra7xx_EVM_qspiboot 时,我们将配置 u-boot 环境以存储在 QSPI 闪存(0x1C0000 - 0x1D0000:QSPI.u-boot-env)中,同时禁用 MMC 支持并将 SPL 最大大小设置为64KB

    u-boot/include/configs/dra7xx_evm.h

    #if 已定义(CONFIG_QSPI_BOOT)
    /*在 SPL 中,使用环境并放弃对空间的 MMC 支持。 *
    #ifdef CONFIG_SPL_Build
    #undef config_SPL_MMC_support
    #undef CONFIG_SPL_MAX_SIZE
    #define CONFIG_SPL_MAX_SIZE            (128 << 10)/* 64 KiB */
    #endif
    #define CONFIG_SPL_ENV_support
    #define CONFIG_ENV_IS_IN_SPI_FLASH
    #define CONFIG_SYS_REDUNDAND_environment
    #define CONFIG_ENV_SPI_MAX_Hz          CONFIG_SF_DEFAULT_SPEED
    #define CONFIG_ENV_SIZE         (64 << 10)
    #define CONFIG_ENV_Sect_SIZE      (64 << 10)/* 64 KB 扇区*/
    define CONFIG_ENV_OFFSET      0x1C0000
    #define CONFIG_ENV_OFFSET_redund   0x1D0000
    #endif

    当我们使用 dra7xx_EVM 时、我们将配置 u-boot 环境以存储在 MMC 中

    u-boot/include/configs/dra7xx_evm.h

    /* MMC ENV 相关定义*/
    #ifdef CONFIG_ENV_IT_IN_MMC
    #define CONFIG_SYS_MMC_ENV_DEV      1   /* SLOT2:eMMC (1)*
    #define CONFIG_ENV_SIZE         (128 << 10)
    define CONFIG_ENV_OFFSET      0xE0000
    #define CONFIG_ENV_OFFSET_redund   (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
    #define CONFIG_SYS_REDUNDAND_environment
    #endif

    在 u-boot/board/ti/dra7xx/evm.c 中也使用了 ENV_in_MMC

    此致、
    帕维尔

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

    [报价用户="Shawn LIN"] 我们可以从 SD 卡启动这个256MB 主板。

    您能否为我提供 SD 卡256MB 主板的启动日志?

    SD 引导和 QSPI 引导的 MLO/u-boot 文件大小是多少?

    仅将 MLO 放入 SD 卡和 QSPI (不是 u-boot)中、尝试仅引导 MLO 并比较结果。 请提供日志、我想查看您的引导流程是否卡在 MLO 或 u-boot 中。


    此致、
    帕维尔

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

    [报价 USER="Pavel Bodev"]您能否为我提供 SD 卡256MB 主板的启动日志?

    日志=>e2e.ti.com/.../qspi_5F00_bootlog_2800_256MB_2900_.log  

    [引用 user="Pavel Bodev"]用于 SD 引导和 QSPI 引导的 MLO/u-boot 文件大小是多少?

    对于 SD 引导、MLO:97.2kB、u-boot.img:447.5kB

    对于 QSPI 引导、MLO:84.4kB、u-boot.img:447.3kB

    [引用 user="Pavel Bodev">在 SD 卡和 QSPI 中仅放置 MLO (而不是 u-boot)、尝试仅引导 MLO 并比较结果。 向我提供日志

    SD 卡日志中的 MLO=>e2e.ti.com/.../qspi_5F00_bootlog_2800_MLO_5F00_SD_2900_.log  

     QSPIlog=>e2e.ti.com/.../qspi_5F00_bootlog_2800_MLO_5F00_QSPI_2900_.log 中的 MLO  

    此致、

    肖恩

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

    肖恩、

    根据您发送的日志、我认为您的256MB 板似乎能够从 QSPI 引导、但在引导加载程序过程的某个时间点(最有可能在 MLO 中)卡滞。

    当您从具有 MLO 和 u-boot 的 SD 卡引导时、您可以:

    U-Boot SPL 2014.07 (2017年6月13日- 19:18:06)
    DRA752-GP ES2.0
    TI_i2c_EEPROM_init 失败1.
     
    ==EMIF-(1)接口设置=
     使用 emif1_DDR3_532_MHz_1csspl_MMC_LOAD_image
    正在读取 u-boot.img
    正在读取 u-boot.img
    TI_i2c_EEPROM_init 失败1.
     
     
    U-Boot 2014.07 (2017年6月13日- 19:18:06) ---- >此时 u-boot.img start


    仅使用 MLO 从 QSPI 引导时、您具有:

    U-Boot SPL 2014.07 (2017年6月13日- 19:31:30)
    DRA752-GP ES2.0
    TI_i2c_EEPROM_init 失败1.
     
    ==EMIF-(1)接口设置=
     使用 emif1_DDR3_532_MHz_1CS

     

    使用 MLO 和 u-boot.img 从 QSPI 引导时、您可以:

    U-Boot SPL 2014.07 (2017年6月06日- 17:37:30)
    DRA752-GP ES2.0
    TI_i2c_EEPROM_init 失败1.
    SDRAM:识别的大小与预期大小不同:0预期:40000000

    我不知道为什么您在仅 QSPI MLO 和 QSPI MLO/u-boot 情况之间有如此大的差异。 您能否再次检查您是否完全正确地设置了此项?

    此致、
    帕维尔

     

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

    您好、Pavel、

    让我首先弄清楚一点、我应该如何为 QSPI 引导构建 MLO 和 u-boot.img?

    我应该使用"dra7xx_EVM_qspiboot_config"进行编译吗?

    此致、

    肖恩

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

    肖恩、

    您应该能够使用 dra7xx_EVM_qspiboot_config 和 dra7xx_EVM_config 从 QSPI 引导 MLO 和 u-boot.img。 区别在于、对于 dra7xx_EVM_config、环境变量应存储在 MMC 中、而不是 QSPI 中。

    有关 u-boot 环境变量的更多信息、请参阅以下 wiki 页面:

    processors.wiki.ti.com/.../Linux_Core_U-Boot_User's_Guide



    此致、
    帕维尔

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

    由于我们的定制板具有与 EVM 板不同的存储器设置(我们的定制板仅有256MB 内存)、因此如果我使用 dra7xx_EVM_qspiboot_config 构建 MLO 和 u-boot、在 QSPI 启动后、系统将显示 SDRAM 错误消息、我认为这是因为当前使用的是 EVM 存储器设置、 但不适用于我们的定制板。
    因此、在不同的存储器大小下、我是否仍然可以使用 dra7xx_EVM_qspiboot_config 来构建我的 MLO 和 u-boot.img?

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

    我不确定我是否理解您的问题、但我将尝试向您提供答案。

    我在 dra7xx_EVM_qspiboot_config 和 DDR3存储器大小之间找不到任何关系。 如果您在定制板中应用这些256MB DDR3更改、dra7xx_EVM_qspiboot_config 应该可以正常工作。

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

    您好、Pavel、

    因为硬件布局不同、所以我们为定制板创建了新的配置。 我为您提供的 SD 引导日志、映像是 从我们的新配置构建的、新配置还包括 DDR 的新设置。

    因此,如果我使用 dra7xx_EVM_config 来构建我的 MLO 和 u-boot.img 并将其放入 SD 卡中,那么我无法从 SD 引导,日志=>e2e.ti.com/.../SD_5F00_boot_2800_with-dra7xx_5F00_evm_2900_.txt   

    我们的新配置类似于原始 dra7xx 配置=>e2e.ti.com/.../our_5F00_board_5F00_cfg.txt   test_project 是我们的新配置。

    此致、

    肖恩

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

    [引用 USER="Shawn LIN">因为硬件布局不同、所以我们为定制板创建了新配置。 我为您提供的 SD 引导日志、映像是 从我们的新配置构建的、新配置还包括 DDR 的新设置。

    看起来是正确的。

    您应该对 QSPI 引导执行相同的操作、就像对 SD 引导(新配置文件)执行相同的操作。 在该新配置文件中、将 ENV_Is_in_MMC 替换为 QSPI_boot

    此致、
    帕维尔

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

    您好、Pavel、

    我修改配置以构建 MLO 和 u-boot.img 以进行 QSPI 引导。

    config =>e2e.ti.com/.../7522.our_5F00_board_5F00_cfg.txt  

    我用"QSPI_BOOT"替换"ENV_Y_IN_MMC"、此修改是否正确?

    此致、

    肖恩

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

    [引用 user="Shawn LIN"]我将"ENV_IS_IN_MMC"替换为"QSPI_BOOT"、此修改是否正确?[/QUERES]

    是的、看起来正确。

    您还可以删除 SPL_YMODE_SUPPORTON_SUPPORTON_IN、因为它用于 UART 引导、而不是用于 QSPI (或 MMC/SD)引导。

    此致、
    帕维尔

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

    您好、Pavel、

    我已经尝试过、但失败了。 日志为=>e2e.ti.com/.../QSPI_5F00_BOOT.txt

    我仍然不知道为什么它卡住了。

    此致、

    肖恩   

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

    [引用用户="Shawn LIN"]

    我已经尝试过、但失败了。 日志是=>(请访问站点查看此文件)

    我仍然不知道为什么它卡住了。

    [/报价]

    您是否可以尝试使用 ENV_IT_IN_MMC 替换 QSPI_BOOT、引导日志中是否有任何差异?

    从您所连接的日志中、我看到 MLO 正在引导、但卡在 DDR3设置中。

    请在 u-boot 中启用 debug()消息以获取更多打印内容,并查看您的流程如何:

    在我看来,您的流程从以下顺序卡在 SDRAM_init()函数上:

    u-boot/arch/arm/cpU/armv7/start.S

    u-boot/arch/arm/cpU/armv7/lowlevel_init.S

     u-boot/arch/arm/cpU/armv7/omap-common/hwinit common.c

    void s_init (void)

       /*
       *保存从 romcode 传递的引导参数。
       *我们不能将保存延迟得更长、
       *以防止覆盖。
       *
    #ifdef CONFIG_SPL_Build
       save_omap_boot_params();
    #endif
       init_omap_revision();
       hw_data_init();

    preloader_console_init (); ->此函数打印"U-Boot SPL 2014.07"和"DRA752-GP ES2.0"

    DO_BOARD_DETECT (); ->此函数打印"ti_i2c_EEPROM_init failed 1"


    SDRAM_INIT(); ->我怀疑您的流量卡在此处
    #endif

    请检查您的流程是否滞留在 SDRAM_INIT()中。 如果是,请检查 SDRAM_init()中它卡在何处。 SDRAM_INIT ()位于 u-boot/arch/arm/cpU/armv7/OMAP-common/EMIF-common.c

    此致、
    帕维尔

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

    您好、Pavel、

    [报价 USER="Pavel Botev"]您是否可以尝试用 ENV_IS_IN_MMC 替换 QSPI_BOOT,您的引导日志中是否有任何差异?

    如果我执行此操作、则我构建的映像用于 SD 引导。 以便它可以成功引导。

    [引用 user="Pavel Bodev">请检查您的流是否卡在 SDRAM_INIT()中。 [/报价]

    我在 SDRAM_init()中添加了调试消息。 但它似乎可以正常工作、没有 卡住。 是否知道 s_init()完成后系统还会执行什么操作?

    此致、

    肖恩

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

    [引用 USER="Shawn LIN]如果我执行此操作、则我构建的映像用于 SD 引导。 因此它可以成功引导。[/quot]

    将映像放入 QSPI 闪存、为 QSPI 引导配置 sysboot 引脚、从电路板上移除 MMC/SD 卡、然后尝试一下。

    [引用 USER="Shawn LIN]我在 SDRAM_INIT()中添加了调试消息。 但它似乎可以正常工作、没有 卡住。 您是否知道 s_init()完成后系统将执行什么其他操作?

    请为我提供启用调试的日志。

    此致、
    帕维尔

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

    [引用 USER="Shawn LIN]我在 SDRAM_INIT()中添加了调试消息。 但它似乎可以正常工作、没有 卡住。 您是否知道 s_init()完成后系统将执行什么其他操作?

    它进入 lowlevel_init、然后是 cpu_init_crit、然后是_main

    u-boot/arch/arm/cpU/armv7/lowlevel_init.S

    条目(lowlevel_init)

    BL   s_init
       弹出   {IP、PC}
    ENDPROC (lowlevel_init)

     

    u-boot/arch/arm/cpU/armv7/start.S

    条目(cpu_init_crit)
       /*
       *跳转至特定于电路板的初始化...
       *掩码 ROM 将已初始化
       *基本内存。 转到此处以提高时钟速率并进行处理
       *唤醒条件。
       *
       b   lowlevel_init      @转到设置 PLL、多路复用器、存储器
    ENDPROC (CPU_INIT_Crit)

    #ifndef CONFIG_SKIP_LOW_INIT
       BL   cpu_init_cp15
       BL   cpu_init_crit
    #endif

       bl   _main

    u-boot/arch/arm/lib/crt0.S

    条目(_main)

    然后调用 board_init_f ()(从 u-boot/arch/arm/cpU/armv7/omap-common/boot-common.c)、然后调用 board_init_r ()。

    请在 board_init_f 中放置一个 printf、以确保到达该点、并启用调试以检查 board_init_r 中流挂起的确切位置。

    此致、
    帕维尔

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

    您好、Pavel、

    [报价用户="Pavel Botev"]将映像放置在 QSPI 闪存中,配置用于 QSPI 引导的 sysboot 引脚,从电路板上卸下 MMC/SD 卡,然后尝试一下。

    我已经尝试过、但也失败了。

    [引用 user="Pavel Bodev"]请向我提供启用调试的日志[/quot]

    日志=>e2e.ti.com/.../QSPI_5F00_BOOT_2800_with-debug-msg_2900_.txt

    似乎系统达到了 board_init_f()点、但之后、继续执行 以下操作:

    RX cmd 00390fff dc 00000000
    RX 完成、状态0cbf0002、读取00

    只有一些参数 是不同的。 调试消息在启动15分钟后仍然输出消息、因此我停止记录。

    此致、

    肖恩