你好。 上次我问费用,得到了答案,我看到它工作,但我有几个问题。
条件1:将4个虚拟扇区(VS)设置为16KB。
条件2:设置为最大容量、以每个块8个字节的倍数为单位


| VS 接头 (字节) |
块 标头(字节) |
块 有效载荷(字节) |
|
| 32 | 块1 | 24 | 992 |
| Block2 | 24 | 992 | |
| 块3 | 24 | 992 | |
| 块4 | 24 | 992 | |
| 块5 | 24 | 992 | |
| 块6 | 24 | 992 | |
| 块7 | 24 | 992 | |
| 块8 | 24 | 992 | |
| 块9 | 24 | 992 | |
| 块10 | 24 | 992 | |
| 块11 | 24 | 992 | |
| 块12 | 24 | 992 | |
| Block13 | 24 | 992 | |
| 块14 | 24 | 992 | |
| Block15 | 24 | 992 | |
| 块16 | 24 | 992 | |
| 已使用 VS 长度(字节) | 16288 | ||
| 最大与长度(字节) | 16384 | ||
我将调试屏幕捕捉为视频、但屏幕太大、因此我将情况上传为网络链接。
[调试结果1 ]
https://www.youtube.com/watch?v=9mtg-h9e4DM
结果汇总- 调试结果1:失败。
#测试1. 写入 VS1 ->写入 VS2 (失败。假定是由于未执行块无效化而导致的问题)
#测试2. 写入 VS1 ->使 VS1无效->写入 VS2 ->使 VS2无效->写入 VS3 ->使 VS3 无效->写入 VS3 ->写入 VS4 ->使 VS4无效
-> 写入 VS1 ->使 VS1失效 -> 写入 VS2 ->使 VS2无效-> 写入 VS1 (??) ->使 VS1无效(??) -> 写入 VS2 ->使 VS2无效
-> 写入 VS1 (??) ->使 VS1无效(??) -> 写入 VS2 ->使 VS2无效。
[调试结果2 ]
https://www.youtube.com/watch?v=dL3f87oDIH4
结果汇总- 调试结果2:成功
#测试3. 写入 VS1 ->使 VS1 无效->使 VS1 (RE)无效-> 写入 VS2 ->使 VS2无效-> 写入 VS3 ->使 VS3 无效->写入 VS4 ->使 VS4无效->使 VS4 (RE)无效
->写入 VS1 ->使 VS1无效->使 VS1无效(RE)-> 写入 VS2 ->使 VS2无效->写入 VS3 -> 写入 VS3 ->写入 VS4 ->使 VS4无效->使 VS4无效 (RE)
->写入 VS1 ->使 VS1无效->使 VS1无效(RE)-> 写入 VS2 ->使 VS2无效->写入 VS3 -> 写入 VS3 ->写入 VS4 ->使 VS4无效->使 VS4无效 (RE)
如果您用图片解释、顺序将与此类似。

作为参考、我在 Excel 文件中获取了一个内存浏览器转储捕获。
[ Excel 文件-内存浏览器转储。]
e2e.ti.com/.../FEE-Virtual-Test-_2800_debugging_2900_.xlsx
现在我有3个问题。
问题1: 在前面的回答中、您说块无效不是必需的、但当您分配16个块、每个块992字节、并设置总块容量接近1VS 的容量时、调试结果1中显示的以下 VS 会出现问题。 那么、当移动到下一个 VS 时使块无效是否正确?
问题2. 与调试结果1中相同、如果仅写入一次后该块无效、则重复 VS1 -> VS2 -> VS3 -> VS4 -> VS1 -> VS2 -> VS2 -> VS2、并且仅写入一次 VS3和 VS4。 。
与调试结果2一样,VS1和 VS4激活连续两次使无效解决了问题。 这种方式是否正确?
问题3: 如果我们没有像上面的条件2那样设置每个块的容量、而是设置每个块8个字节、那么我们不需要在写入后执行"失效"操作。 最后、应该在有 VS 转换时无效、并且不应该在没有 VS 转换时无效? (如果 VS 总块容量为1/N 或小于1VS 的容量、则可写入扇区 N 次而无需使块失效、并且先前写入的区域将自动失效。)
我想了解并解决这个问题。 如果您能回答这三个问题、我将不胜感激。
下面附加了我测试的源代码。
e2e.ti.com/.../example_5F00_eeprom_5F00_new3-_2800_2_29005F00_992bytes.zip


