- 1
- 2
- 3
- 4
- 5
CRC校验实现设计自查清单
资料介绍
CRC校验实现设计自查清单 手记导语:这是一次很典型的"看起来简单、做起来全是坑"的经历。CRC 校验不过十几行代码,却让我在通信链路的可靠性上栽了不少跟头。把这些过程记下来,既给自己复盘,也希望给同行一点参考。 【缘起】 项目里要给一路低速串口通信加上校验,防止偶发的位翻转导致数据出错。领导一句话"加个 CRC 吧",听起来轻松,真正动手才发现里面门道不少。我当时的想法很简单——找个现成的 CRC 算法,抄上去就完事。可就是这个"简单",让我后面反复折腾了好几轮。 为什么要用 CRC 而不用更简单的和校验?因为我需要校验的多是长度不短的报文,和校验对成对出现的位错误毫无招架之力。CRC 靠多项式除法,能捕捉到突发的多位错误,可靠性高得多。需求也明确:检测不到错误的比例要足够低,同时实现和性能要兼顾。这些约束我当时其实是边做边体会的。 现在回头看,做任何校验算法,第一步都不是写代码,而是把协议和需求想清楚。报文多长、数据哪些字段要校验、错误检测率要求多少、在主机还是从机上做、用软件还是硬件实现,这些问题不搞清楚,后面必然返工。我当时就是没太当回事,结果第一轮就吃了亏。 【第一轮尝试】 第一轮我按常规套路,选了 CRC-16 标准算法,多项式用 0x8005,初值、异或输出都照搬常见实现。代码写得很快,功能上"能算",自我感觉良好。测试时发了一组正常报文,能校验通过;故意改几个字节,也能检出来。当时的结论是"搞定",就准备往上提。 可我心里其实有点虚,因为我没有认真核对这个 CRC-16 到底是不是协议里真正约定的那一种。CRC 算法参数极多——多项式、初值、输入是否反转、输出是否反转、结果异或值,任何一个不一样,算出来的结果就完全不同。我当时只保证"自己收发一致",却没验证和对方的报文能不能对上。 果然,联调的时候问题就来了。
部分文件列表
| 文件名 | 大小 |
| CRC校验实现设计自查清单.docx | 40K |
最新上传
-
江岚 打赏100.00元 1小时前
用户:潇潇江南
-
他山之石可攻玉 打赏50.00元 2小时前
用户:烟雨
-
21ic下载 打赏1.00元 5小时前
用户:王小琪
-
yahuang001 打赏3.00元 3天前
-
yahuang001 打赏1.00元 3天前
-
zhongshaoxiong 打赏3.00元 3天前
-
他山之石可攻玉 打赏60.00元 3天前
用户:烟雨
-
江岚 打赏210.00元 3天前
用户:潇潇江南
-
江岚 打赏100.00元 3天前
-
21ic下载 打赏310.00元 3天前
用户:gsy幸运
-
21ic下载 打赏310.00元 3天前
用户:zhengdai
-
21ic下载 打赏310.00元 3天前
用户:江岚
-
21ic下载 打赏210.00元 3天前
用户:潇潇江南
-
21ic下载 打赏60.00元 3天前
用户:他山之石可攻玉
-
21ic下载 打赏60.00元 3天前
用户:烟雨
-
21ic下载 打赏60.00元 3天前
用户:w178191520
-
21ic下载 打赏60.00元 3天前
用户:w993263495
-
21ic下载 打赏110.00元 3天前
用户:xzxbybd
-
21ic下载 打赏60.00元 3天前
用户:zq_1943
-
21ic下载 打赏20.00元 3天前
用户:kk1957135547
-
21ic下载 打赏20.00元 3天前
用户:sun2152
-
21ic下载 打赏20.00元 3天前
用户:铁蛋锅
-
21ic下载 打赏20.00元 3天前
用户:xuzhen1
-
21ic下载 打赏20.00元 3天前
用户:w1966891335
-
21ic下载 打赏35.00元 3天前
用户:有理想666
-
21ic下载 打赏15.00元 3天前
用户:nuaanuaa111
-
21ic下载 打赏20.00元 3天前
用户:liqiang9090
-
21ic下载 打赏15.00元 3天前
用户:ningmengge
-
21ic下载 打赏10.00元 3天前
用户:mulanhk
-
21ic下载 打赏5.00元 3天前
用户:asys
-
21ic下载 打赏10.00元 3天前
用户:舞蹈荀彧
-
21ic小能手 打赏5.00元 3天前
资料:磁编码器开源方案
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏50.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏8.00元 3天前




全部评论(0)