[an error occurred while processing this directive]
Контрольная сумма - это (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Drivers 23 октября 2006 г. 16:42
В ответ на: Подскажите пожалуйста где посмотреть, как расчитывается контрольная сумма для UDP и TCP/IP пакетов. отправлено <font color=gray>av-master</font> 23 октября 2006 г. 15:54

это 16-битное дополнение до единицы суммы дополнений . При вычислении контрольной суммы это поле должно быть сперва обнулено. Если общая длина сообщения нечетная, то для вычисления контрольной суммы поле данных дополняется еще одним нулевым октетом.

This routine works is the number of data is even. if not the last data has to be turned into a 16 bit value.

In Pascal
Var i,Inter:Integer; //32 bits
Cksum:Word; //16 bits

begin
Inter:=0;
For i:=1 to 10 do Inter:=Inter+Data[i];
Cksum:=((Inter and $FFFF) + (Inter shr 16)) Xor $FFFF;
end;

in C :

u_short checksum(u_short * data,u_short length)
{
register long value;
u_short i;
for(i=0;i<(length>>1);i++) value+=data[i]; // add
if((length&1)==1) value+=(data[i]<<8); // compensate of odd amount of datas
value=(value&65535)+(value>>16); // complements one to one
return(~value); // XOR the result
}

in ASM PIC

;*******************************
calc_chsumm_IP

MOVF my_ip,W
MOVWF data_2+1
MOVF my_ip+1,W
MOVWF data_2
CALL calc_chsumm_1

MOVF my_ip+2,W
MOVWF data_2+1
MOVF my_ip+3,W
MOVWF data_2
CALL calc_chsumm_1

BTFSC FLAG_MAIN_REPLY
GOTO VALID_IP_CHS

MOVF source_ip,W
MOVWF data_2+1
MOVF source_ip+1,W
MOVWF data_2
CALL calc_chsumm_1

MOVF source_ip+2,W
MOVWF data_2+1
MOVF source_ip+3,W
MOVWF data_2
CALL calc_chsumm_1

RETURN
;*******************************
calc_chsumm_1
MOVF data_2+1,W
ADDWF chksum+1,F

BCF STATUS,Z

BTFSC STATUS,C
INCF chksum,F

BTFSC STATUS,Z
INCF chksum+1,F


MOVF data_2,W
ADDWF chksum,F

BCF STATUS,Z

BTFSC STATUS,C
INCF chksum+1,F

BTFSC STATUS,Z
INCF chksum,F

RETURN

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание