Datenzähler
This commit is contained in:
+27
-16
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user