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.

[参考译文] AM4377:适用于 AM4377的 QSPI-Flash

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1059121/am4377-qspi-flash-for-am4377

器件型号:AM4377
主题中讨论的其他器件: 闪存编程器、 TLV803

您好!

我们设计了定制的 AM4377板、从 QSPI-Flash 引导时遇到一些问题。 电路板本身使用 XDS 调试器运行正常-我们能够将时钟频率更改为1GHz、DDR3-RAM 测试工作正常、电源定序似乎正常、电源似乎非常稳定。 我们可以使用闪存编程器对 QSPI 进行编程(针对特定闪存所需的命令进行了更改)。

闪存 MX25L3233FZNI-08Q 似乎符合数据表中的 QSPI-specifications 5.12.14和技术参考中的5.2.6.7。

作为用于引导的 SYSBOOT 配置、我们使用 UART0-SPI-QSPI-MMC1 (110'0100'0000'0101'1010)和 QSPI (110'0100'0000'0100'1010)模式。

器件根据以下原理图摘录进行连接:

但是、对于冷启动和热复位启动、我们会发出一些问题:

在大约每隔一个引导周期(重置或下电上电)、主板引导正常-在控制台上打印引导加载程序消息、将核心频率设置为800MHz 并从 Starterware 执行内存测试。 但是、在控制台上打印消息之前、它会在其他情况下挂起-在次级引导加载程序之前或之后挂起。 选择 UART0-SPI-QSPI-MMC1引导模式时、AM4377会在控制台上打印8x "C"以启动 UART 引导、然后尝试以相同的成功启动 QSPI-FLASH -每次成功启动时、 每次它挂起后、才能将消息打印到控制台。

由于电源定序和电源稳定性看起来不错、我们最可能的原因似乎是 QSPI-Flash 的不兼容性。。。

我们还尝试选择单读模式而不是四读模式、但每次在单读模式下引导都失败。

这是某些 QSPI-Flashs 的已知行为吗? 您是否有已知可正常工作的 QSPI 存储器列表? 或者可以有其他提示吗?

非常感谢您的帮助、

祝你度过美好的一天!

Bernd

PS:引导失败时、ROM 引导加载程序会保留在地址0x0003008c:"b#0x3008c"

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

    QSPI 似乎每次都不会以相同的状态上电。  QSPI 数据表中要求 VCC 必须处于特定的最小阈值、然后必须等待 tVSL (800us)才能允许器件访问。  您能否在电路板上测量该值?  我想您在选择 UART0-SPI-QSPI-MMC1引导模式时会满足此要求、但可能不会单独使用 QSPI。

    从下电上电重启启动失败后、您能否转储跟踪矢量(0x40338E40-0x40338E50)并将其发布在此处。  此外,您能否在每次成功和失败的引导后布置 CTRL_STS 寄存器(0x44e10040)?

    布局是否有任何异常(例如 QSPI 远离处理器、信号布线不匹配等)?

    只需确认一下、如果您对电路板执行下电上电操作、例如6次、则每次(3次)都只能成功启动、而其他时间?

    当您尝试读取单个位以进行引导时、是否在刷写映像时禁用 QSPI 中的 QE 位?

    此致、

    James

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

    您好 James、

    非常感谢您的回复-我尝试回答以下所有问题...

    >> QSPI 似乎每次都不会以相同的状态上电。  QSPI 数据表中要求 VCC 必须处于特定的最小阈值、然后必须等待 tVSL (800us)才能允许器件访问。  您能否在电路板上测量该值?  我想您在选择 UART0-SPI-QSPI-MMC1引导模式时会满足此要求、但可能不会单独使用 QSPI。

    为了生成 nPORZ、我们使用延迟200ms 的 TLV803来获得有效的5V 系统电压输入。 有效3.3V 电源和第一个 QSPI_CSn 之间测得的时间大约为185ms。 此外、当使用 UART0-SPI-QSPI-MMC1启动顺序以及使用热复位时、不循环电源时、启动失败的概率也差不多。
     
    >>在重启启动失败后、您能否转储跟踪矢量(0x40338E40-0x40338E50)并将其发布在此处。 此外、您能否在每次成功引导和失败引导后发布 CTRL_STS 寄存器(0x44e10040)?

    QSPI-BootMode 下电上电:
       1: 成功
           - CTRL_STS             0x0640034A

       2: 失败
           -已停止@            0x0003008C
           - CTRL_STS             0x0640034A
           -跟踪矢量
               0x40338E40         0x0000009E
               0x40338E44         0x00011000
               0x40338E48         0x00000080
               0x40338E4B         0x00000008
               0x40338E50         0x00000000

       3: 成功
           - CTRL_STS             0x0640034A

       4: 失败
           -已停止@            0x0003008C
           - CTRL_STS             0x0640034A
           -跟踪矢量
               0x40338E40         0x0000009E
               0x40338E44         0x00011000
               0x40338E48         0x00000080
               0x40338E4B         0x00000008
               0x40338E50         0x00000000

       5: 失败
           -已停止@            0x0003008C
           - CTRL_STS             0x0640034A
           -跟踪矢量
               0x40338E40         0x0000009E
               0x40338E44         0x00011000
               0x40338E48         0x00000080
               0x40338E4B         0x00000008
               0x40338E50         0x00000000

       6: 成功
           - CTRL_STS             0x0640034A

    UART0-SPI-QSPI-MMC1-BootMode 下电上电:
       1: 成功
           - CTRL_STS             0x0640035A

       2: 失败
           -已停止@            0x0003008C
           - CTRL_STS             0x0640035A
           -跟踪矢量
               0x40338E40         0x0001B0BE
               0x40338E44         0x00013000
               0x40338E48         0x001000C0
               0x40338E4B         0x000C0008
               0x40338E50         0x00000000

       3: 成功
           - CTRL_STS             0x0640035A

       4: 失败
           -已停止@            0x0003008C
           - CTRL_STS             0x0640035A
           -跟踪矢量
               0x40338E40         0x0001B0BE
               0x40338E44         0x00013000
               0x40338E48         0x001000C0
               0x40338E4B         0x000C0008
               0x40338E50         0x00000000

       5: 失败
           -已停止@            0x0003008C
           - CTRL_STS             0x0640035A
           -跟踪矢量
               0x40338E40         0x0001B0BE
               0x40338E44         0x00013000
               0x40338E48         0x001000C0
               0x40338E4B         0x000C0008
               0x40338E50         0x00000000

    QSPI-BootMode 热复位:
       1: 成功
           - CTRL_STS             0x0640034A

       2: 成功
           - CTRL_STS             0x0640034A

       3: 失败
           -已停止@            0x0003008C
           - CTRL_STS             0x0640034A
           -跟踪矢量
               0x40338E40         0x0000009E
               0x40338E44         0x00011000
               0x40338E48         0x00000080
               0x40338E4B         0x00000008
               0x40338E50         0x00000000

       4: 成功
           - CTRL_STS             0x0640034A

       5: 失败
           -已停止@            0x0003008C
           - CTRL_STS             0x0640034A
           -跟踪矢量
               0x40338E40         0x0000009E
               0x40338E44         0x00011000
               0x40338E48         0x00000080
               0x40338E4B         0x00000008
               0x40338E50         0x00000000

    >>布局是否有任何异常(例如 QSPI 远离处理器、信号布线不匹配等)?
    布线长度为:
       -包括 QSPI-SCLK 电阻     31.140mm
       - QSPI-CSN                     27.772毫米
       - QSPI-D0                      23.384mm
       - QSPI-D1                      23.090毫米
       - QSPI-D2                      22.498mm
       - QSPI-D3                      29.101 mm

    我尝试在 OSPI-SCLK 线路中使用0欧姆、33欧姆和47欧姆电阻器。 未观察到变化。 此外、我们尝试在33欧姆电阻器后面添加一个小型100pF 电容器、以将 Clk 上升/下降延迟约10ns。 也没有观察到变化...


    >>仅为了确认、如果您对电路板进行电源循环6次、它将仅在每隔3次(3次)和其他时间成功引导一次?
    是的、6次成功中大约有3次。 有关日志记录、请参阅上面的。

    >>当您尝试读取单个位以进行引导时、是否在刷写映像时禁用 QSPI 中的 QE 位?
    哦、这是我必须做的事情、并且要了解如何正确地执行它...

    关于我们的电路板-我们使用分立式电源实现了"简化电源定序"方案...

    非常感谢您的帮助、

    期待收到您的来信-祝您愉快、

    Bernd

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

    您好 James、

    此外-从 UART 引导似乎很可靠-我尝试 了超过25次、无论是下电上电还是热复位、它始终成功引导。

    非常感谢您的帮助、

    期待收到您的来信-祝您愉快、

    Bernd