wie funktioniert dma
-
Hey leute,
wie DMA grob funktioniert glaube ich zu wissen, was jedoch offen bleibt (und ich auch mit hilfe von google und co nicht finden konnte) ist:
(ohne DMA)
Der Prozesser gibt Gerät A einen Auftrag, indem er die entsprechenden Bits im Controller von Gerät A setzt. Nach Fertigstellung des Auftrags wird von Gerät A ein Interrupt ausgelöst, danach liest der Prozessor aus dem Controller von Gerät A die entsprechenden Speicherwörter heraus und speichert diese im RAM an die Stelle (beispielsweise) 0x11223344, 0x11223345, ... usw.soweit so gut...
(mit DMA)
was hier geschieht weiß ich leider nicht so genau, ich versuche es einfach mal:Der Prozessor gibt, wie oben, Gerät A einen Auftrag.
Irgendwie bekommt der DMA-Controller nach Fertigstellung des Auftrags mit, dass der Auftrag fertiggestellt wurde und schreibt die entsprechenden Bytes aus dem Controller von Gerät A irgendwo in den Hauptspeicher und löst anschließenden einen Interrupt aus.Was ich, wie man dem Text oben schon fast entnehmen kann, nicht verstehe ist:
1)
wie bekommt der DMA-Controller mit, dass das Gerät seinen Auftrag fertig gestellt hat?Wohin im RAM schreibt der DMA-Controller die Daten genau, bzw wie wird ihm das mitgeteilt?
Leider habe ich zu diesen Problemen nichts gefunden, hoffe jemand von euch kann mir da weiterhelfen
Gruß
-
MatheStein schrieb:
Was ich, wie man dem Text oben schon fast entnehmen kann, nicht verstehe ist:
1)
wie bekommt der DMA-Controller mit, dass das Gerät seinen Auftrag fertig gestellt hat?Wohin im RAM schreibt der DMA-Controller die Daten genau, bzw wie wird ihm das mitgeteilt?
Was ich schreibe geht aus Erfahrungen mit irgendwelchem Microcontrollern hervor, wie das bei gemeinen PCs ausschaut weiss ich nicht, es würde mich aber wundern wenn sich die Mechanismen grundlegend unterscheiden würden.
zu 1) Auch über einen interrupt (dieser muss ja nicht unbedingt eine ISR triggern, das interrupt flag kann ja auch gepollt werden)
zu 2) Entweder fix (sprich nicht änderbar) an eine Stelle im Adressraum, oder halt eben konfigurierbar an eine Stelle im Adressraum
-
MatheStein schrieb:
wie bekommt der DMA-Controller mit, dass das Gerät seinen Auftrag fertig gestellt hat?
im normalfall garnicht, d.h. der DMA-vorgang muss manuell gestartet werden (z.b. wenn die softweare erkannt hat, dass das gerät jetzt senden möchte). dann allerdings schaufelt der DMA-controller die daten, die CPU kann sich derweil um andere dinge kümmern.
MatheStein schrieb:
Wohin im RAM schreibt der DMA-Controller die Daten genau, bzw wie wird ihm das mitgeteilt?
das muss konfiguriert werden. der DMA-controller hat dafür einige register wie z.b., datenrichtung, word-size, burst-size, bitorientierung, speicheradresse usw.
^^btw, ebenfalls nicht-PC bezogen.