校验和(CheckSum)问题集锦

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

校验和(CheckSum)问题集锦

概述:从事编程器客户工作以来,碰到过许许多多形形色色的问题,其中CheckSum问题占相当大的比例。很多客户向我提出过这样那样的问题:

●为什么我的Code在不同的烧录器里有不同的CheckSum?我所使用的BeeProg 釆用的是那一种CheckSum计算标准?

●为什么烧录出来的IC里面资料CheckSum—样,但是就是上板不能正常工作?下面我将系统的,从简入深的来为大家解决这些问题。

一、什么是CheckSum?Checksum一检验和,校验和。在数据处理和数据

通信领域中,用于校验目的的一组数据项的和。这些数据项可以是数字或在计算

检验和过程中看作数字的其它字符串。

二、编程器中的CheckSum是怎样计算的

来的?我举一个实例来说明,大家先看下图:上图是编程器软件中的Buffer,如果有人问从地址位:00000000〜0000000F的CheckSum是多少,我们可以这样来计算:CheckSum=FF+FF+FF+FF+FF+FF+FF+FF+FF+FF+FF+FF+FF+FF+FF+FF=0FF0H大家从上面的公式不难看出,CheckSum起始就是把每一个字节(Byte)内的值相加而成,所以CheckSum又名校验和。为了验证我们计算的准确性质,我们用软件上自带的计算器来计算,大家看下图:

从上图大家可用看到,我们的计算结果非常正确,我们的计算方式也是非常准确的。求Buffer的CheckSum,其实就是把Buffer内每一个字节的数据累加求和,所得的值就是CheckSum.

三、目前CheckSum有那些标准,我们怎样判断我们所采用的标准?目前CheckSum有CheckSum(8bit),CheckSum(16bit),CheckSum(32bit),CheckSum(64bit),从表现上我们就可以看出他们的区别在于所釆用的位数不一样。它们采用的是8位,16位,32

位和64位。大家一定看出来了,我们之前举的例子釆用的就是CheckSum(16bit),因为

0FF0H可以用二进制数0000111111110000(4x4=16bit)来表示,它起始就是16位的,

所以我们就把它定义为CheckSum(16bit)。所以要分析采用那一种标准,只要把计算结果用二进制表示,数下有多少位就知道了。

四、为什么相同的文件在导入不同的编程器Buffer之后CheckSum显示的结果不一样?为了弄清楚这个问题,我们可以从以下三个方面入手:

1)要烧录的IC是不是Microchip的单片机?如果要烧录的IC是Microchip的单片机,

因为Micochip有特殊的CheckSum计算方式,所以CheckSum不一样就要看编程器是否采用了统一标准.

2)要烧录的IC空白位置是用"FF"或"00"填充?如果要烧录的IC空白区域是用"00"填

充,那么两种烧录器CheckSum不一样,就是由设置引起,这里说的设置是指IC的Config bit的设置,编程默认的设置一般都不一样,这就需要大家火眼金睛来明辨秋毫了.

3)Buffer的大小是否一样,在烧录同一种类型的IC,不同编程器定义的Buffer大小有

可能不一样,所以就会导致CheckSum不一样,这个大家从CheckSum的计算方法中就可以了解到原因.

相关文档
最新文档