Ik heb een code geschreven die de data van het nvram op een databordje wegschrijft naar het ram. Dit met het doel dat de content van het nvram bewaard blijft wanneer er een diagnose over het nvram gaat.
Nou is het natuurlijk wel verstandig om daarbij ook een checksum te gebruiken om te verifieren dat de data die achteraf terug op het nvram wordt gezet ook hetzelfde is als dat hij voorheen was. Op dit moment doe ik dit door simpelweg alle data bij elkaar op te tellen voor en na de test en deze te vergelijken. Maar aangezien zowel 2 + 4 als 3 + 3 gelijk is aan 6 is dit niet afdoende. (Het gaat nu we om grote hoeveelheden data waarbij de kans klein is dat het op die manier gelijk zal zijn, maar toch...)
Nu wil ik graag een CRC checksum uitvoeren, alleen ik zit een beetje met de handen in het haar hoe dit werkt. Ik heb me al enige tijd ingelezen, maar ik ben er nog niet uit hoe dit werkt. Misschien kan een van jullie opheldering geven waardoor ik er hopelijk wat sneller achter ben. Ik schrijf op het moment per byte aan data van het nvram naar het ram:
Uiteraard zet ik het op een soortgelijke manier terug.
Hoe kan ik nu deze CRC checksum bereiken? Moet ik per verstuurde byte een checksum berekenen en deze opslaan? Of hoef je maar 1 checksum te berekenen over de totale data?
Thnx alvast..
Nou is het natuurlijk wel verstandig om daarbij ook een checksum te gebruiken om te verifieren dat de data die achteraf terug op het nvram wordt gezet ook hetzelfde is als dat hij voorheen was. Op dit moment doe ik dit door simpelweg alle data bij elkaar op te tellen voor en na de test en deze te vergelijken. Maar aangezien zowel 2 + 4 als 3 + 3 gelijk is aan 6 is dit niet afdoende. (Het gaat nu we om grote hoeveelheden data waarbij de kans klein is dat het op die manier gelijk zal zijn, maar toch...)
Nu wil ik graag een CRC checksum uitvoeren, alleen ik zit een beetje met de handen in het haar hoe dit werkt. Ik heb me al enige tijd ingelezen, maar ik ben er nog niet uit hoe dit werkt. Misschien kan een van jullie opheldering geven waardoor ik er hopelijk wat sneller achter ben. Ik schrijf op het moment per byte aan data van het nvram naar het ram:
code:
1
2
3
4
5
6
7
| nvramPointer = (BYTE *)nvramBase; for (i = 0;(i < NVRAM_SIZE)&& (memoryBlockPointer < &memoryBlock[NVRAM_SIZE-1]); i++) { *memoryBlockPointer = *nvramPointer; memoryBlockPointer++; nvramPointer = (BYTE *)(nvramBase + i); } |
Uiteraard zet ik het op een soortgelijke manier terug.
Hoe kan ik nu deze CRC checksum bereiken? Moet ik per verstuurde byte een checksum berekenen en deze opslaan? Of hoef je maar 1 checksum te berekenen over de totale data?
Thnx alvast..