ZKX's LAB

crc校验中的除数是怎么确定的啊? crc冗余校验功能

2020-07-27知识28

硬盘CRC冗余校验错误故障是神马情况? 低级格式化的过程中,低格软件会在硬盘的每个扇区低级格式参数区,定义4个字节的CRC冗余校验错误码,并填写初始校验码,以后只要是读写盘操作,都会涉及到对该效验码的操作,通常校验是由系统底层的代码来自动完成,当系统在进行写入扇区操作时,会自动计算要写入该扇区内容的CRC值,在将数据写入扇区妥当后,接着就会将计算出的CRC冗余效验码写到CRC参数记录位置,作为今后读该扇区成功与否的比对依据,以后每次读扇区,系统都会对读出的内容计算CRC值,并与原来保存的CRC值进行比对,如果相符,说明读出的扇区内容是正确的,操作继续,如果不对,那就要遇到大麻烦了,当系统底层的读盘操作程序读盘时遇到CRC冗余校验码对不上的情况,其策略是很固执的,只要CRC比对通不过,系统就要重新读扇区,这个过程会反复进行下去,要耗费很长时间,因此,在接有存在CRC冗余校验错误硬盘的主机上操作,系统反应会极慢,正常情况下系统不可能造成这种离奇的故障,但在特殊情况下,这种故障却每每出现,比如移动硬盘供电不足,硬盘工作在欠电状态下,写入的CRC码很容易出错,造成大量的CRC冗余校验错误,其次,异常断电和野蛮关机,也会造成CRC错误,前不久一个网友就是因为不愿。求助大神还有哪些16位冗余校验计算方法,试过常见的几种CRC16都不对 CRC校验又称为循环冗余校验,是数据通讯中常用的一种校验算法。它可以有效的判别出数据在传输过程中是否发生了错误,从而保障了传输的数据可靠性。CRC校验有多种方式,如:CRC8、CRC16、CRC32等等。在实际使用中,我们经常使用CRC16校验。CRC16校验也有多种,如:1005多项式、1021多项式(CRC-ITU)等。在这里我们不讨论CRC算法是怎样产生的,而是重点落在几种算法的C51程序的优化上。计算CRC校验时,最常用的计算方式有三种:查表、计算、查表+计算。一般来说,查表法最快,但是需要较大的空间存放表格;计算法最慢,但是代码最简洁、占用空间最小;而在既要求速度,空间又比较紧张时常用查表+计算法。下面我们分别就这三种方法进行讨论和比较。这里以使用广泛的51单片机为例,分别用查表、计算、查表+计算三种方法计算1021多项式(CRC-ITU)校验。原始程序都是在网上或杂志上经常能见到的,相信大家也比较熟悉了,甚至就是正在使用或已经使用过的程序。编译平台采用 Keil C51 7.0,使用小内存模式,编译器默认的优化方式。常用的查表法程序如下,这是网上经常能够看到的程序范例。因为篇幅关系,省略了大部分表格的内容。code unsigned int Crc1021Table[256]=。循环冗余校验CRC的计算方法到底是怎么样的? 循环冗余校验码的计算方法:CRC(Cyclic Redundancy Check)循环冗余校验码,是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来‘确认信息’的困惑,书上提到红军和蓝军通信联合进攻山下的敌军的例子,第一天红军发了条信息要蓝军第二天一起进攻,蓝军收到之后,发一条确认信息,但是蓝军担心的是‘确认信息’如果也不可靠而没有成功到达红军那里,那自己不是很危险?于是红军再发一条‘对确认的确认信息’,但同样的问题还是不能解决,红军仍然不敢贸然行动。采用CRC循环冗余校验,求其校验码位,详细过程 多项式G(X)=X4+X3+X2+1用二进制表示就是G=11101,现在除数是5位,因此在数据后面添加4个0就得出被除数。即10111000000/11101所得余数就是应当添加在数据后面的检验序列!。CRC循环冗余校验问题 100110010011左移六位,去除以G(x)=1000101,余数是110001,冗余后,B正确收到的应该是 100110010011 110001 这一串。

#冗余系统#冗余技术#数据校验#crc#校验码

随机阅读

qrcode
访问手机版