我们正在基于 EVM 设计开发 AM5728产品。 我们处于硬件的第二个旋转阶段。
我们已将引导顺序设置为 QSPI-4 SD USB。
QSPI-4 NOR 闪存中当前没有代码、我们希望它从 SD 引导。 如果我们先将引导顺序更改为 SD、则卡引导正常。
我们在启动顺序中首先获取 QSPI-4数据中止异常。 也就是说、处理器最终滞留在0x3808c 的死区循环中。
遗憾的是、该文档未详细说明这意味着什么。
有人能解释一下这个问题是什么吗?
谢谢!
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.
我们正在基于 EVM 设计开发 AM5728产品。 我们处于硬件的第二个旋转阶段。
我们已将引导顺序设置为 QSPI-4 SD USB。
QSPI-4 NOR 闪存中当前没有代码、我们希望它从 SD 引导。 如果我们先将引导顺序更改为 SD、则卡引导正常。
我们在启动顺序中首先获取 QSPI-4数据中止异常。 也就是说、处理器最终滞留在0x3808c 的死区循环中。
遗憾的是、该文档未详细说明这意味着什么。
有人能解释一下这个问题是什么吗?
谢谢!
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