闪存编程也可由引导应用程序执行。引导应用程序只能对整个闪存进行编程;它无法对部分闪存进行更新,也无法对 EEPROM 数据进行编程。引导闪存编程的主要用途是系统无法转换到主应用程序的情况,例如闪存为空或损坏。
以下命令用于擦除、编程和验证闪存:
图 5-18 演示了闪存编程步骤。
- 写入闪存接口速率 - 向引导应用程序通知闪存器件支持的最大允许闪存接口速度和读取模式。这用于最大化闪存 SPI 带宽,从而根据所选闪存器件的能力缩短闪存编程时间。如果未在闪存编程之前发送此命令,则将使用默认速度 10MHz 并仅使用快速读取,这可能会显著降低编程操作的速度。此默认值也可能导致闪存验证步骤出现问题,因为它不符合 DLPC230 最小闪存带宽要求。
- 写入闪存完全擦除 - 擦除整个闪存。
- 闪存数据写入 - 重复写入一页(256 字节)的闪存数据。如果所需数据小于 256 个字节,则其余字节应设置为 0xFF。在写入每段数据后,重复读取短状态,直到写入完成。继续操作,直到没有剩余闪存数据。
- 写入闪存接口速率 - 如果需要四路读取模式,则需要执行此步骤。在写入操作期间,引导应用程序将在某些闪存器件中禁用四路模式。此步骤可确保在闪存验证之前在闪存器件中启用四路模式。可以为此步骤和步骤 1 写入相同的数据。
- 闪存数据验证 - 开始验证闪存数据。此过程可能需要很长时间才能完成。写入命令处理程序 应该会有额外的时间轮询短状态,以确认命令标签已更改为适当的值,并且请求正在进行中 位已被清除。闪存验证错误将标记短状态中的命令错误位。这应该会在写入命令过程中检测到。