我写信报告一个关于内存分配和 CRC 校验失败的关键问题、目标位置: 费用 RML48l952 器件。
背景:
更改前正常 :。 在 FEE 区域中,我们定义了两个虚拟扇区,分别包含一个闪存扇区(即0x4000字节)和两个数据块,用于存储我们需要存储的两个特定数据集(其副本也将位于 RAM 中)。 数据块大小是根据需要存储的实际数据长度定义的。
2.软件会定期对 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 写入,并且这将持续重复。
观察结果:
我们的调查结果似乎表明,写入/读取一个 Dataablock 也在某种程度上影响另一个 Dataablock。 我们还确认,两个数据集的总大小仍与虚拟部门的大小相同。 我们认为代码中的某个位置可能存在大小不兼容问题、我们可能错过了这个问题。 我们已经检查了代码和配置、以确保遵守内存和缓冲区大小限制、到目前为止我们的检查没有发现任何内容。
我们非常希望获得一些指导、说明如何进一步