我正在编写一个数据记录应用程序(在微控制器上运行),它将数据写入普通的嵌入式NOR型串行闪存(在本例中为AT25DF161。)
每个数据包(240或496字节)将一个接一个地单独记录到闪存中。我认为闪存中最常见的故障是卡住位 - 通常为“0”,即非擦除状态。我需要能够检测单个位事件,通常是每个记录最多两个(我认为这是100,000次写入周期后的最坏情况。)
我正在使用具有内置16位CRC计算模块的处理器,因此使用更少或更多项没有性能影响 - 那么我需要做出哪些决定才能确定最佳多项式?
答案 0 :(得分:0)
使用标准多项式。您可以在here找到可供选择的列表。
答案 1 :(得分:0)
请看Philip Koopman撰写的论文“嵌入式网络的循环冗余码(CRC)多项式选择”。他分析了许多16位多项式,测量了它们对不同消息长度的错误检测能力。正如你从他的论文中看到的那样,它们并非都是平等的。对于少量错误(在您的情况下为HD = 2)和相当大的块,0xBAAD可能是一个不错的选择。