如何确定富士通芯片Flash烧录场景下的16位CRC校验参数?
富士通Flash烧录CRC校验参数确定
基础背景
- 待分析目标:固定长度512字节的烧录数据包,包尾附加16位CRC校验值,需明确该CRC的全部参数配置
- 测试条件:编程器执行富士通芯片Flash写入时会自动计算CRC值,可通过示波器读取最终CRC输出结果,具备遍历全量参数组合的测试能力
- 测试用例构造规则:
- 基础包为512字节全0数据
- 每次仅修改单个位置的字节,修改取值范围为十进制0~17
- 覆盖的字节偏移位置为:包前4字节(偏移0、1、2、3)、包尾2字节(偏移510、511)
实测CRC结果
结果规则:行对应被修改字节的取值,列对应被修改字节在包内的位置偏移,值为输出的十六进制CRC结果:
00 01 02 03 510 511 00 00 00 00 00 00 00 01 0x8108 0x0100 0x3020 0xC6B0 0xF1F0 0x8108 02 0x8318 0x0200 0x6040 0x0C68 0x62E8 0x8318 03 0x0210 0x0300 0x5060 0xCAD8 0x9318 0x0210 04 0x8738 0x0400 0xC080 0x18D0 0xC5D0 0x8738 05 0x0630 0x0500 0xF0A0 0xDE60 0x3420 0x0630 06 0x0420 0x0600 0xA0C0 0x14B8 0xA738 0x0420 07 0x8528 0x0700 0x90E0 0xD208 0x56C8 0x8528 08 0x8F78 0x0800 0x0008 0x31A0 0x0AA8 0x8F78 09 0x0E70 0x0900 0x3028 0xF710 0xFB58 0x0E70 10 0x0C60 0x0A00 0x6048 0x3DC8 0x6840 0x0C60 11 0x8D68 0x0B00 0x5068 0xFB78 0x99B0 0x8D68 12 0x0840 0x0C00 0xC088 0x2970 0xCF78 0x0840 13 0x8948 0x0D00 0xF0A8 0xEFC0 0x3E88 0x8948 14 0x8B58 0x0E00 0xA0C8 0x2518 0xAD90 0x8B58 15 0x0A50 0x0F00 0x90E8 0xE3A8 0x5C60 0x0A50 16 0x9FF8 0x1000 0x0010 0x6340 0x1550 0x9FF8 17 0x1EF0 0x1100 0x3030 0xA5F0 0xE4A0 0x1EF0
已观测规律与待解决问题
- 已确认规律:首字节(偏移0)和末字节(偏移511)取相同值时,输出的CRC结果完全一致
- 已尝试匹配:测试了多种公开的CRC-16算法变体均未完全匹配,其中匹配度最高的配置为多项式
0x1021、初始值为0的CRC-16算法 - 需求:获取可定位该CRC校验模式具体参数的可行方法
内容的提问来源于stack exchange,提问作者Gemini2001
相关产品推荐
相关产品推荐

