Datenzähler

This commit is contained in:
Matthias Biermann
2025-02-16 16:55:45 +01:00
parent 28c434011b
commit 77852ca4ca
+27 -16
View File
@@ -22,7 +22,7 @@
#define TEST_RUNS 10
#define MAX_PACKET_SIZE 10000
#define MAX_NUMBER_PACKETS 25
#define MAX_NUMBER_PACKETS 100
// Berechnen einer 32 Bit CRC-Pruefsumme mit allen Parametern
uint32_t calcCRC32(
@@ -47,7 +47,8 @@ int main(int argc, char** argv)
FILE *logFile = fopen(logFileName, "w");
if (logFile == NULL) {
printf("Oeffnen/Erstellen der Logdatei fehlgeschlagen!\n\n");
printf("Oeffnen/Erstellen der Logdatei fehlgeschlagen!\n\n");
return 1;
}
if (argc < 2) {
@@ -118,6 +119,7 @@ int main(int argc, char** argv)
uint32_t crc_hw[MAX_NUMBER_PACKETS];
bool allTestrunsOK = true;
size_t totalDataRead = 0; // Zaehler fuer insgesamt gelesene Daten
// Die Software ist in mehrere Testlaufe unterteilt
// Jeder Testdurchlauf erzeugt eine zufaellige Anzahl Pakete und eine zufaellige Paketgroesse
@@ -139,8 +141,8 @@ int main(int argc, char** argv)
fprintf(logFile, "Paketgroesse: %i\tPaketanzahl: %i\n\n", packet_size, number_packets);
// Testdaten erzeugen
printf("Testdaten erzeugen\n\n");
fprintf(logFile, "Testdaten erzeugen\n\n");
printf("Testdaten erzeugen\n");
fprintf(logFile, "Testdaten erzeugen\n");
for (int packet = 0; packet < number_packets; packet++) {
for (int word = 0; word < packet_size; word++) {
data[packet][word] = (uint32_t) rand();
@@ -161,13 +163,13 @@ int main(int argc, char** argv)
write(fdCRC, (void*) &reenable, 4);
// CRC Berechnung mit Hardware starten
printf("CRC-Berechnung in Hardware starten\n\n");
fprintf(logFile, "CRC-Berechnung in Hardware starten\n\n");
printf("CRC-Berechnung in Hardware starten\n");
fprintf(logFile, "CRC-Berechnung in Hardware starten\n");
CRC->Control |= (1<<0);
// CRC Berechnung in Software durchfuehren
printf("CRC-Berechnung in Software durchfuehren\n\n");
fprintf(logFile, "CRC-Berechnung in Software durchfuehren\n\n");
printf("CRC-Berechnung in Software durchfuehren\n");
fprintf(logFile, "CRC-Berechnung in Software durchfuehren\n");
for (int p = 0; p < number_packets; p++) {
crc_sw[p] = calcCRC32((uint8_t*) (&data[p][0]),
packet_size*4,
@@ -267,26 +269,35 @@ int main(int argc, char** argv)
}
if (allPaketsOK) {
printf("Alle Pakete OK\nTestdurchlauf erfolgreich abgeschlossen!\n\n");
fprintf(logFile, "Alle Pakete OK\nTestdurchlauf erfolgreich abgeschlossen!\n\n");
printf("Alle Pakete OK\nTestdurchlauf erfolgreich abgeschlossen!\n");
fprintf(logFile, "Alle Pakete OK\nTestdurchlauf erfolgreich abgeschlossen!\n");
} else {
allTestrunsOK = false;
printf("Ein oder mehrere Pakete nicht OK.\n");
fprintf(logFile, "Ein oder mehrere Pakete nicht OK.\n");
double percentageWrong = (double) wrongWords / (number_packets*packet_size + number_packets);
printf("%f Prozent der geschriebenen Worte sind fehlerhaft!\n\n", percentageWrong);
fprintf(logFile, "%f Prozent der geschriebenen Worte sind fehlerhaft!\n\n", percentageWrong);
printf("%f Prozent der geschriebenen Worte sind fehlerhaft!\n", percentageWrong);
fprintf(logFile, "%f Prozent der geschriebenen Worte sind fehlerhaft!\n", percentageWrong);
}
// Menge der gelesene Daten ausgeben
size_t dataReadThisRun = packet_size * number_packets * sizeof(uint32_t);
totalDataRead += dataReadThisRun;
printf("Gelesene Datenmenge in diesem Testlauf: %zu Bytes\n\n", dataReadThisRun);
fprintf(logFile, "Gelesene Datenmenge in diesem Testlauf: %zu Bytes\n\n", dataReadThisRun);
}
if (allTestrunsOK) {
printf("Alle Testdurchlaeufe erfolgreich abgeschlossen!\n");
fprintf(logFile, "Alle Testdurchlaeufe erfolgreich abgeschlossen!\n");
printf("Alle Testlaeufe erfolgreich abgeschlossen!\n");
fprintf(logFile, "Alle Testlaeufe erfolgreich abgeschlossen!\n");
} else {
printf("Ein oder mehrere Testdurchlaufe sind fehlerhaft!\n");
fprintf(logFile, "Ein oder mehrere Testdurchlaufe sind fehlerhaft!\n");
printf("Ein oder mehrere Testlaeufe sind fehlerhaft!\n");
fprintf(logFile, "Ein oder mehrere Testlaeufe sind fehlerhaft!\n");
}
printf("Insgesamt gelesene Datenmenge: %zu Bytes\n", totalDataRead);
fprintf(logFile, "Insgesamt gelesene Datenmenge: %zu Bytes\n", totalDataRead);
fclose(logFile);
return 0;
}