您好!
一年前我就这个话题发表过、虽然它已经解决了、但却是它的背后。
定义的症状如下:我可以使用 Fapi 将存储在 RAM 中的缓冲区写入闪存组7。 写入完成后、如果我通过简单的字比较手动验证闪存内容、或者使用 Fapi_doVerify、我将获得验证失败、我还注意到存储器浏览器未更新以反映应写入闪存的值。 然而、当我复位目标时、组7显示它被正确写入并且可被验证为成功。
下面是大致的伪代码:
1.复位目标
2.初始化闪存等
3.从0xF020000处的闪存中读取4096字节到0x08007800处的 RAM 中(是对齐的)
在本示例中、0xF0200000处的值为0xAABB1235。
5. 0x08007800处的 RAM 缓冲区也在内存浏览器中显示0xAABB1235。
6.将0x08007800从0xAABB1235修改为0xAABB1234
使用 Fapi_issueProgrammingCommand 重新编程整个缓冲区、每次8个字节
每个8字节后、等待 Fapi_checkFsmForReady 并确保命令的返回代码为 Fapi_Status_Success
9.在对所有4096字节进行编程后、调用 Fapi_doVerify、该函数返回 Fapi_Error_Fail。 在读取之前、我还会调用 Fapi_flushPipeline。 请注意、Fapi_doVerify 的状态显示的是地址处的故障、其中包含上述步骤中的数据。 从这一点可以清楚地看出、甚至 Fapi 也正在读取过期数据。
10.在内存浏览器中检查,闪存未更新。
11.复位目标(只是来自 CCS 的简单 CPU 复位)
12.检查内存浏览器、0xF0200000显示0xAABB1234、这表示闪存写入正确!
13. Fapi_doVerify 现在返回成功(没有另一次编程尝试)。
我需要知道我做了什么错。 这种情况看起来像是某种缓存一致性问题、其中 RM57读取的闪存在闪存写入之前似乎是过时的缓存值。
我们使用同一个闪存驱动器、在 RM48上有一些小的#define 差异、现在已经使用了大约5年、而测试中未记录任何故障。
是否有人可以建议我需要查看的任何内容?
谢谢
太棒了!