您好!
我们在没有新闪存驱动器的情况下使用 MCU Plus SDK 08.04、因为我们与 TI 合作的 ISSI 闪存仍然存在问题。 我们还将在 pcbas 上使用不同的闪存。 正确的闪存在启动时由其 ID 标识、然后加载匹配的配置。 因此、当前可以是 ISSI 或千兆设备(GD25LX256E)闪存。
ISSI 闪烁在 PHY 模式下工作、但 Gigadevice-闪烁不正确。 至少这是我们的第一个假设。 现在可能也会发生这种情况、因为我们有一些与 GigaDevice-Flash 组合使用的 AM2434-Sitara SoC 的新电荷。
我们注意到、在引导时、当从闪存引导时、我们 SBL 中的 Flash_read-commands 会返回成功、但读取的数据不正确。 这种情况有时随机发生。 比如在20%的加电中。
ISSI 闪存不会出现这种情况。 我们根据 Gigadevice-flash 的数据表设置其配置。 同样、RBL 也起作用、并且1s-1s-1s-1s 模式下的读取 id 命令也起作用。 也可以将其设置为八进制 SPI、但随后使用 PHY 模式似乎会中断该运行。
当 PHY 被使能时、两种情况下的速度均设置为200 MHz 或133MHz。 禁用 PHY 后、不会出现此问题。
我们将1k 下拉电阻连接到 DQS、这应该是合适的。
为了解决这个问题、当读取数据不正确时、我在 SBL 代码中插入了一个 while 循环。 有趣的是、当我通过 CCS 连接时、存储器浏览器显示闪存内的正确数据、如果我触发读取操作(因此在 CCS 中跳转到读取操作并执行该操作)、它会突然读取正确的数据。
我认为作为一个临时权变措施、也许一个睡眠会引起正确的行为、但是即使在 Flash_open 之后达到200ms 的睡眠仍然没有帮助。
我看到有一个很大的文件需要进行 PHY 调优。 这是否解决了勘误表(i2189)中提到的 PHY 模式错误?
由于我们的 SBL 使用对引导非常重要的敏感数据、这些数据位于闪存内部、因此错误的读取会导致回退、并且应该引导的正确 FW 不再引导。 这意味着从现在开始、所生产的器件将最终为我们的客户提供不可用的状态。 这对我们来说是一个阻止点。
作为权变措施、我们可以禁用 PHY 模式、但这意味着我们只能使用50 MHz 运行。 我们还注意到、读取操作需要更长的时间。 这会降低应用程序的速度、因为我们还使用需要闪存访问和文件系统等功能的 Web 服务器。
此致
费利克斯
