jak policzyc crc dla flasha w avr



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?Krzysztof_Szmur=B3o?=
Subject: jak policzyc crc dla flasha w avr
Date: Mon, 16 Jan 2006 15:18:07 +0100


Witam
Chcę policzyć sumę crc zawartości flasha w avr. W libc są do tego
procedury np: crc16_update(..). Nie bardzo jednak wiem jak tą funkcje
użyć do policzenia całego flasha. Czy mam dla każdej komórki wywołać
crc16_update() i dodać wyniki do siebie?

Pozdrawiam
Krzysztof Szmurło

Poprzedni Następny
Wiadomość
Spis treści
From: Jurek Szczesiul <jerzy.szczesiul_at_nospam_wycin.ep.com.pl>
Subject: Re: jak policzyc crc dla flasha w avr
Date: Mon, 16 Jan 2006 17:42:35 +0100


Mon, 16 Jan 2006 15:18:07 +0100, na pl.misc.elektronika, Krzysztof Szmurło
napisał(a):

Czy mam dla każdej komórki wywołać
crc16_update() i dodać wyniki do siebie?


Cześć Krzysztof.
Prawie - tylko nie dodajesz a obrabiasz w pętli otrzymywany z funkcji
wynik. Tak np. ustawiam crc16 dla bufora nadajnika uart ( ostatnie 2 bajty
) :

void SetTxCrc(void)
{
uint CrcCalcValue;
int j;

CrcCalcValue = 0xffff;
for (j=0;j<(TX_SIZE-2);j++)
CrcCalcValue = _crc16_update(CrcCalcValue,TxBuffer[j]);

memcpy((uchar*)&TxBuffer[TX_SIZE-2],(uchar*)&CrcCalcValue,2);
}

U Ciebie zamiast bajtów TxBuffer będą kolejne bajty flasha.

--
Pozdrowienia
Jurek Szczesiul

Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?Krzysztof_Szmur=B3o?= <ks123_at_nospam_tlen.do.wyciecia.pl>
Subject: Re: jak policzyc crc dla flasha w avr
Date: Mon, 16 Jan 2006 20:27:32 +0100


Jurek Szczesiul napisał(a):
Czy mam dla każdej komórki wywołać
crc16_update() i dodać wyniki do siebie?

Cześć Krzysztof.
Prawie - tylko nie dodajesz a obrabiasz w pętli otrzymywany z funkcji
wynik. Tak np. ustawiam crc16 dla bufora nadajnika uart ( ostatnie 2 bajty
) :

void SetTxCrc(void)
{
uint CrcCalcValue;
int j;

CrcCalcValue = 0xffff;
for (j=0;j<(TX_SIZE-2);j++)
CrcCalcValue = _crc16_update(CrcCalcValue,TxBuffer[j]);

memcpy((uchar*)&TxBuffer[TX_SIZE-2],(uchar*)&CrcCalcValue,2);
}

U Ciebie zamiast bajtów TxBuffer będą kolejne bajty flasha.

A też mi taka idea świtała w głowie, ale nie byłem jej pewien (jakoś się
crc jeszcze nie miałem okazji bawić). W każdym razie dzięki wielkie za
pomoc, jutro to przetestuje.

Pozdrawiam
Krzysztof Szmurło