工具与软件:
我特此报告中一个有关内存分配和 CRC 校验失败的关键问题 FEE RML48l952 设备。
背景:
更改前正常 :. 在 FEE 区域中,我们定义了两个虚拟扇区,每个包含一个闪存扇区(因此0x4000字节),以及两个数据块,用于我们需要存储的两组特定数据(副本也将位于 RAM 中)。 数据块大小是根据我们需要存储的实际数据长度定义的。
然后、软件会定期在 RAM 中的数据集与这两组数据在 FEE 数据卡中存储的数据之间进行 CRC 比较。 如果 CRC 校验失败、则 RAM 中的数据集将复制到 FEE 以解决不匹配问题。
更改后: 此逻辑目前为止一直有效、但最近我们必须增大其中一个数据集的大小(长度为0x2B58字节至0x34C0)、而且即使 RAM 中的数据集没有变化、CRC 不匹配也会持续发生。
首先对数据集1 (在 FEE 中指定的 RAM 区域和数据线锁1之间)进行 CRC 校验、如果发现错误、则 RAM 中的数据集将复制到 FEE 数据线锁1。 然后对第二组数据重复检查(在指定的 RAM 区域和数据锁定2之间的 FEE)、如果数据不匹配、数据将被复制到 FEE 数据锁定2。 之后我们观察到的问题 第二个数据集的大小增加 是在下一次定期检查期间、数据集1的 CRC 检查再次失败、导致另一次 FEE 写入、数据集2的后续检查也失败、导致 FEE 写入、并且这一直重复。
观察结果:
我们调查的观察结果似乎表明、写入/读取一个 DataBLOCK 也在某种程度上影响另一个 DataBLOCK。 我们还确认、这两个数据集的总大小仍与虚拟部门的大小有关。 我们认为代码中的某个位置可能存在大小不兼容问题、我们可能错过了这个问题。 我们已经检查了我们的代码和配置、以确保我们遵守了内存和缓冲区大小限制、到目前为止我们的审查没有发现任何内容。
我们非常希望就如何进一步开展工作提供一些指导
