Forum: PC Hard- und Software allgemeine Problemlösung für DMA FIFO überlauf gesucht


von Benjamin A. (ben83)


Lesenswert?

Hallo Zusammen

Ich habe ein Problem mit einem DMA FIFO, dass mir überläuft und min nun 
auf der Suche nach Lösungen.

Zu meinem genauen Problem:
Ich habe eine Realtime System, dass Daten in einen FIFO schreibt. Diese 
Daten lese ich mit einer Hostapplikation, die unter Win XP/Vista läuft 
aus. Ich habe also 2 Systeme, 1 Realtime und ein Windows system, die in 
eine Richtung komunizieren.
Nun habe ich das Problem, dass die Hostapplikation unter Win XP in 
bestimmten Situationen nicht mehr nachkommt mit der Datenverarbeitung 
und irgendwann läuft das FIFO über.

Meine Frage:
Wie löst man solche Probleme grundsätzlich?
Ich hab mir überlegt, dass ich kurz vor einem Überlauf das FIFO leeren 
kann aber dann gehen mir Daten verloren, was ich nicht möchte.

Freundliche Grüsse
Ben

von gast (Gast)


Lesenswert?

Hallo,

DMA = "Direct Memory Access"
für was dann noch ein FIFO?

MfG

von Mr. M. (machine123)


Lesenswert?

Grösse des FIFOS erhöhen, drastisch. Etwas anderes bleibt meiner Meinung 
nach nicht. Es muss so gross sein, dass (theoretisch) es nie zu einem 
Überlauf kommt wenn Windows gerade andestwo beschäftigt ist.

von Benjamin A. (ben83)


Lesenswert?

Das FIFO ist eigentlich mehr als genügen gross aber klar grösser geht 
fast immer. Das habe ich mir auch überlegt, nur werden dann die Daten so 
sehr verzögert, dass die Darstellung unnatürlich wird.

von Christian R. (supachris)


Lesenswert?

Hm, entweder FIFO drastisch vergrößern, oder dafür sorgen, dass die 
mittlere Lesedatenrate aus dem FIFO größer als die mittlere 
Schreibdatenrate ist. Oder das Schreiben in den FIFO unterbinden, wenn 
der fast voll ist. Oder kommen die Daten kontinuierlich, ohne dass du 
sie stoppen kannst?

von (prx) A. K. (prx)


Lesenswert?

Trivialerweise gilt: Wenn die Daten im langfristigen Mittel schneller 
produziert werden, als sie verarbeitet werden können, dann ist 
Datenverlust nicht vermeidbar.

Andernfalls ist das eine Frage der Tiefe des FIFO.

Wo genau sitzt eigentlich das FIFO? Genau zwischendrin in der 
Schnittstellenhardware? Wäre denkbar, die Vorgänge "Übertragung" und 
"Auswertung" zu trennen und "Übertragung" eindeutig zu priorisieren.

von Benjamin A. (ben83)


Lesenswert?

@Christian:
Ja die Daten kommen kontinuierlich ohne, dass ich sie stoppen kann.

@ A.K:
Ich programmiere die Host- sowie die RT Applikation in Labview, da hab 
ich ein FIFO im FPGA auf dem RT und ein FIFO das 500 mal grösser ist auf 
dem Host.
Müsste nicht die Auswertung priorisiert werden?
Denn die Übertragung funktioniert ja gut, nur die Verarbeitung ist 
manchmal etwas zu langsam.


Danke für die Inputs bis jetzt

von (prx) A. K. (prx)


Lesenswert?

Benjamin A. wrote:

> ich ein FIFO im FPGA auf dem RT und ein FIFO das 500 mal grösser ist auf
> dem Host.

Und welches davon läuft über? Ist ja wohl die Kernfrage.

> Müsste nicht die Auswertung priorisiert werden?

Kommt drauf an ob die Vorgänge überhaupt in getrennten Prozessen/Threads 
arbeiten. Ich kenne Labview nicht.

Wenn nicht, hast du ohnehin keine Auswahl.

Wenn doch, und da noch etwas ganz anderes drauf läuft, dann ja. Wenn die 
Anwendung aber sowieso schon mit 99% CPU läuft, dann wird sie durch's 
Priorisieren auch nicht schneller, dafür säuft dir dann bei weniger als 
2 Cores garantiert der Transferprozess ab.

Ich dachte allerdings eher an den Fall, dass das FPGA-FIFO überläuft, 
weil der Transferprozess nicht fix genug reagiert.

> Denn die Übertragung funktioniert ja gut, nur die Verarbeitung ist
> manchmal etwas zu langsam.

Wenn auch ein sehr grosses FIFO im Windows noch überläuft, dann solltest 
du an einen schnelleren Prozessor denken. Oder Labview rauswerfen, wenn 
das zuviel Leistung wegnehmen sollte.

von Christian R. (supachris)


Lesenswert?

Benjamin A. wrote:
> @Christian:
> Ja die Daten kommen kontinuierlich ohne, dass ich sie stoppen kann.

Ist die mittlere Geschwindigkeit der ankommenden Daten höher als die 
mittlere Geschwindigkeit des Datentransfers zum PC (Software außen vor, 
also die Schnittstellengeschwindigkeit)?

Die Kernfrage ist, ob die Software zu langsam ist, oder ob das Konzept 
nicht passt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.