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.

[参考译文] AM5728:引导序列在 QSPI 上卡住

Guru**** 2553450 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/591831/am5728-boot-sequence-stuck-on-qspi

器件型号:AM5728

我们正在基于 EVM 设计开发 AM5728产品。  我们处于硬件的第二个旋转阶段。

我们已将引导顺序设置为 QSPI-4 SD USB。

QSPI-4 NOR 闪存中当前没有代码、我们希望它从 SD 引导。  如果我们先将引导顺序更改为 SD、则卡引导正常。

我们在启动顺序中首先获取 QSPI-4数据中止异常。  也就是说、处理器最终滞留在0x3808c 的死区循环中。

遗憾的是、该文档未详细说明这意味着什么。

有人能解释一下这个问题是什么吗?

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    工厂团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为我发现了我们的问题。 我们的设计缺少 qspi1_rtclk 信号。 我查看了 TI AM5728 IDK 原理图、并在 TRM 中指示必须连接信号。 与我们的硬件人员合作进行纠正。

    如果您能让我知道错误的含义、我会很感激。 让我感到惊讶的是、引导加载程序被卡住、而不是继续进入下一个要引导的器件(本例中为 SD)。

    如果我们在问题得到纠正后仍有困难、这些信息将非常有用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    缺少 qspi1_rtclk 不是问题所在。 我们回到试图理解根本问题是什么的方向。

    此时、i386勘误表中记录的问题似乎是"QSPI-4 Boot Mode is not function"。

    希望有人能够提供一些见解、因为文档是令人嘲笑的。

    1) TRM 表24-355 pg 5951指示如果使用 SPI 模式3、则不需要 qspi1_rtclk。
    2) 2) TRM 部分33.3.7.5表示使用模式3的引导加载程序。 因此、缺少 qspi1_rtclk 连接不是问题的根源。
    3) 3) TRM 的同一部分显示"ROM 不会执行任何四路使能序列或组寄存器更新"。 这可能是我们的问题,因为我们的闪存默认禁用 QE,但是…
    4)勘误表 i861显示" ROM 代码写入非易失性位(QE 位)以启用四路模式"。 这与#3 TRM 文档不一致。

    勘误表 i861中描述的问题与我们的问题类似:

    "QSPI-4引导模式不起作用。 ROM 代码写入非易失性位(QE 位)
    启用四通道模式、然后尝试在闪存器件处于之前进行首次读取访问
    就绪。 闪存不响应、ROM 读取和执行错误数据。 。
    用于验证的闪存器件模型无法对闪存的此特性进行建模
    正确。"

    勘误表指出这适用于 SR 1.0。

    我们使用的是 SR 2.0。

    有人能回答以下问题吗?:

    a)我们得到的误差是什么意思? (数据中止异常、PROM 代码中的死循环挂起)
    b) 3和4之间的正确值是什么? AM5728是否启用了四路模式?
    c)对于 SR 2.0器件、i861的行为是什么? 是否仍然需要解决问题?

    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没有听到任何声音、因此我们正在聘请当地的现场工程师。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们的当地现场工程师仍然没有听到任何声音。

    发现数据中止异常表示 TI 引导 PROM 代码出错。 QSPI 和闪存中没有任何内容、因此出现异常的原因是在执行 TI 引导 PROM 代码期间发生错误。

    www.embedded.com/.../How-to-use-ARM-s-data-abort-exception
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chris、i861不适用、因为您使用的是 SR2.0。  

    我猜所发生的情况是、ROM 认为 QSPI 中有一个有效的映像、因此会尝试执行指令、最终导致数据中止。  在 TRM 中、它指出、如果前4个字节不等于0x0或0xFFFFFFFF、则启动映像被视为有效。  因此、ROM 执行的前几次读取操作会出现问题、它无意中读取了除0或所有 FS 以外的其他内容。  

    您是否能够在 QSPI 信号上放置一个示波器、以查看信号是否有效以及 QSPI 命令和数据是否正确?  电路板上的此接口可能有问题。  您的设计与您提到的 EVM 之间是否有任何不同?

    此致、

    James

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

    感谢后续行动。

    在实现中有两个差异。  

    第一个是我们没有连接返回时钟信号、但 TRM 表示引导加载程序使用的模式3 SPI 不需要。

    第二个是/HOLD /WP 信号上缺少上拉电阻。  这应该仍然有效、因为该器件将被置于四路模式、然后这些信号将成为数据2和3。  尽管如此、我让我们的硬件人员对信号进行上拉、但仍然失败。  但是、由于预取异常而不是数据执行异常、它失败。

    听起来您建议将其范围限定为最佳的下一步。

    但是、您能否澄清有关四通道使能的 TRM 或勘误表、哪一项是正确的?

     TRM 的33.3.7.5节中说明"ROM 不会执行任何四路使能序列或组寄存器更新"。 这可能是我们的问题,因为我们的闪存默认禁用 QE,但是…

    勘误表 i861显示"ROM 代码写入非易失性位(QE 位)以启用四路模式"。 这与 TRM 第33.3.7.5节不一致。

    谢谢!

     

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

    Chris、我认为勘误表是指 SR1.0实现、不适用于 TRM 提到的 SR2.0实现。  所以它们听起来是矛盾的、但我认为它们是指2个不同版本的芯片中的2个不同 ROM。  我将了解我们是否可以在勘误表中对此进行澄清。

    QE 位通常在对 QSPI 闪存进行编程时置位。  在您的情况下、可能会发生的情况是 ROM 预期在四路模式下读取、但默认情况下 QE=0的闪存器件仅在 Data0上响应。  因此、数据 a1-3不由闪存驱动。  在 data1-3上设置上拉电阻器时应注意这一点、但您可能需要使用示波器对其进行仔细检查。

    预取中止仅意味着它尝试执行无效指令、

    目标是确保 ROM 使用的数据总线读取全0或全 FS、这样会假定一个无效的映像并移动到下一个引导源。

    此致、

    James

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

    如果我正确跟随您、您会说 SR 1.0引导代码可能启用了四通道、但 SR 2.0引导代码不启用。

    如果正确、我们将无法使用具有 QSPI-4引导模式的器件、因为我们的闪存器件 Winbond 25Q16上的四路启用默认为关闭。  

    我发现这很奇怪、因为我的理解是大多数器件默认不启用四路、因此我在 TRM 中对此感到惊讶。  

    如果您可以确认 SR 2.0引导 PROM 的四路启用行为是什么、我们将不胜感激。

    谢谢!

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

    尊敬的 Chris:大多数 QSPI 闪存器件默认不启用四通道。  但是、器件中的 QE (四路使能)位是非易失性位、通常在将映像刷写到存储器时对该位进行编程。  

    因此、在首次对其进行编程后、如果编程周期设置 QE=1、闪存将以四路模式加电、因此 ROM 可以以四路模式从其引导。

    在您具有新 QSPI (即从未编程的 QSPI)的独特情况下、 因此 QE=0)、QSPI 只驱动一个数据位、因此需要注意其他位、以便当 ROM 尝试四路模式时、所有位都读作0xF。  一些 QSPI、如 EVM 上的 QSPI、在数据 a1-3上有内部上拉电阻器、以帮助解决该问题。  我注意到、在您提到的 Winbond 部件上、它没有上拉电阻器、因此需要在板上进行处理。

    替代方法是、当您拥有新构建的电路板时、对 QE=1进行编程(即使您没有对图像进行编程)、而不是在电路板上加上拉电阻。  这将默认将 QSPI 设置为四路模式、ROM 应读取所有0xF 并转到下一个引导源。

    此致、

    James  

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

    感谢 James 的更新、我们将尝试您的建议、看看结果如何。

    不过、您的发言让我感到困惑:

    一些 QSPI、如 EVM 上的 QSPI、在数据 a1-3上有内部上拉电阻器、以帮助解决该问题。

    在此背景下、您是指 AM5728 QSPI 还是 NOR 闪存?

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、我不是很具体。 在 AM572x IDK 上、我们有一个 Spansion (S25FL256S)闪存。 其数据表指出、当 QE=0时、有内部上拉电阻器。 因此、即使电路板上没有上拉电阻器、这也会将信号保持在高电平状态。 这可能是我们未在此电路板上看到您的特定问题的原因。 我在 Winbond 闪存中看不到类似的语句、这可能意味着如果 QE=0、这些信号在引导期间会浮动。

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

    谢谢、我们再次入侵了电路板。  我会将其转发给我们的硬件人员以供实施。