To ensure integrity of contents of ROM, every system must
perform checksum calculation. The process of checksum is carried out to detect
any corruption in contents of ROM. ROM can get corrupted in many ways major one
is the current surge during on and off procedure. The checksum process uses a
byte known as checksum byte. The checksum byte is an extra byte that is tagged
at the end of a series of bytes of data.
The process of checksum is as follows:
The process of checksum is as follows:
1)     
Add the bytes together and drop the carries.
2)     
Take the 2’s complement of the sum. This 2’s
compliment is our checksum byte, which becomes last byte of the series.
Let us take an example.
| 
   
Consider size of ROM being 6
  bytes.  Having hex values as follows. 
32h – 45h – 67h – 12h – 11h – 32h 
Now we wish to find first the
  checksum byte. 
For that purpose lets add them up. 
32h + 45h + 67h + 12h + 11h + 32h =
  133h 
So dropping the carries we get 33h 
Now 2’s compliment of 33h = CDh 
So CDh is our checksum byte. 
Now we wish to ensure data
  integrity. 
For this purpose we are going to add
  0Ch to previous all bytes. 
32h + 45h + 67h + 12h + 11h + 32h + CDh
  = 200h 
Dropping the carries we get 00h
  ensuring that the data is not corrupted. 
If we get any other value except 00h
  it means that the data in the ROM is corrupted. 
This is how we perform checksum
  calculation. 
 | 
 
A program based on this method.
| 
   
#include<reg51.h> 
void main() 
{ 
                unsigned
  char mydata[] = {0x32,0x11,0x43,0x65,0x67,0x22}; 
                unsigned
  char checksum; 
                unsigned
  char sum=0; 
                unsigned
  char i; 
                for(i
  = 0; i<mydata.length(); i++) 
                { 
                                sum
  = sum + mydata[x]; 
                }//end
  of for loop 
                checksum
  = ~sum + 1; //2's complement 
                /* 
                 * do whatever you want with the checksum
  byte 
                 */ 
}// end of main 
// end of program 
 | 
 
Superb
ReplyDeleteThanks.... Keep visiting....
Delete