我们遇到了使用 TI FEE 01.17.02丢失数据的问题。
然后、我们检查了最新版本的 TI FEE 01.19.03是否解决了该问题。
在对代码进行审查后、我们注意到实现中存在以下问题。
- 当块的大小发生变化时-例如、在软件更新过程中、块大小未被正确检测到。
例如、在旧软件版本中、我们有一个40字节的块、而在较新软件版本中、该块的大小增加到了48字节。 在 TI_FeeInternal_UpdateBlockOffsetArray 期间、使用配置中的大小(48字节)、而闪存中的块实际上更小(40字节)。 这会导致下一个块偏移计算错误、进而导致块大小被误解。 这意味着它是"随机"的、搜索之后的块-可能会跳过块。 这些块的数据仍在闪存中、但不会被解释。 - 我们看到的第二个问题与写入块期间的电源切断有关。
当块处于启动程序块(0xFFFFFFFFFF0000)状态时、下一个块的偏移量计算似乎不正确。 我附加了一个转储费。
在偏移量0x8B0处、您可以找到处于编程状态的块(块 ID 0x607)。 块大小(0x38)已经被写入-然而在下一个块的正确偏移(0x900)处、其它块不是新的块。 似乎下一个块从0x8D0开始-在处于编程状态的块开始之后是32字节。 这似乎不是正确的行为-因为无法知道是否已在该地址写入从0x8B0开始的块的数据-因此可能已经跳过了。
/cfs-file/__key/communityserver-discussions-components-files/312/2555.iccpd4_5F00_1115.zip