[CPU-3.9] CPU 在访问外部 SRAM 时会小概率发生读写错误
描述
CPU 在执行下面汇编指令访问外部 SRAM 时会小概率发生错误:
store.x at0, as0, n
load.y at1, as1, m
其中 store.x 表示 x 位写操作,load.y 表示 y 位读操作,且 as0+n 和 as1+m 访问的外部 SRAM 的地址相同。
指令可以是连续的,也可以包含在同一个流水线中(少于 4 个中间指令,并且没有流水线刷新)。
x >= y 时,写数据会丢失。(注意:当 load 和 store 都是 32-bit 值时,写数据只有在第一个和第二个指令之间发生中断时才发生。)
x < y 时,写数据会丢失,且读数据错误。
变通方法
当外部 SRAM 在 ESP-IDF v3.0 及更高版本中启用时,此问题自动绕过。
x >= y 时,在
store.x和load.y之间插入 4 个 nop 指令。x < y 时,在
store.x和load.y之间插入 memw 指令。
解决方案
已在芯片版本 v3.0 中修复。