DMA in multithread Applikation
-
Hallo,
eine eher komplizierte Frage, ich hoffe mir kann trotzdem jemand helfen bzw. gute Anregungen geben.
Also ich habe eine Anwendung erstellt, die zwei externe Geräte ansteuert, die beide Daten per DMA zum PC transferieren. Es läuft für jedes Gerät ein eigener Thread, der die Daten von diesem holt und verarbeitet. Um zu chekcn ob neue Daten verfügbar sind verwenden beide Threads Events Handles, auf die mittels WaitForSingleObject gewartet wird.
Nun mein Problem: wenn ich ein Gerät anhalte (per dll Funktion), was nötig ist um gewisse Einstellungen zu ändern, dann bekomme ich beim anderen einen Timeout von WaitForSingleObject und das Gerät meldet DMA Error. Die Threads beinflussen sich ansonsten nicht. Kann sich jemand erklären, was da passiert? Stört das stop-Signal des einen irgendwie den DMA Transfer des anderen? Is sowas möglich? Ich verstehe sonst nichts von DMA, aber mir ist sonst nicht klar, wie sich die beiden Threads beinflussen können.Danke!