Das nächste Großprojekt - der S3C24XX-DMA-Controller

Geschrieben von MMind am Sonntag, 21. April 2013 in E-Book Reader

Nachdem die Erneuerung des Interrupt-Controllers ja nun abgeschlossen ist, folgt gleich das nächste Großprojekt — der DMA-Controller der S3C24XX-Prozessoren.

Was ist DMA

DMA steht für Direct Memory Access und soll helfen die Übertragung von Daten vom Arbeitsspeicher zu Geräten (und zurück) zu beschleunigen.

Der einfache Weg, Daten zwischen diesen auszutauschen nennt sich PIO — Programmed Input/Output. Dabei liest der Prozessor die zu übertragenden Daten häppchenweise aus dem Speicher und schreibt sie in spezielle Register des Gerätes. Gerade diese Häppchen-Arbeitsweise macht das ganze zum einen langsam und erfordert zum anderen auch eine ständige Beteiligung des Prozessors.

Hier setzt nun DMA an, indem es einen Kommunikationsweg zwischen Sender und Empfänger ohne Beteiligung des Prozessors bietet. Hier wird dem DMA-Controller nur noch mitgeteilt, welchen Speicherbereich er zu welchem Ziel übertragen soll. Nach dem Start der Übertragung hat der Prozessor mit dieser nichts mehr zu tun und kann andere Aufgaben erledigen. Nach dem Ende des Transfers wird er über einen Interrupt darüber benachrichtigt und kann dann an der entsprechenden Position weitermachen.

DMA-Controller

Aktueller Zustand

Wie bei fast allen anderen Subsystemen auch, gab es im ARM-Bereich auch bei den DMA-Controllern die Tendenz, dass jeder seine eigene Schnittstelle zwischen Gerätetreibern und DMA-Controllern kreierte — so ist der aktuelle DMA-Treiber der S3C24XX-Prozessoren in den Jahren 2003 bis 2006 entstanden — und seit dem auch nicht mehr großartig verändert worden.

In dieser Konstellation bieten natürlich nur Treiber DMA-Funktionalität, die speziell für diese Controller-Schnittstelle angepasst geschrieben wurden. Im ARM-Bereich ist dies oftmals möglich, da die Prozessoren meist spezielle Peripheriegeräte mitbringen die auch nur in diesen Prozessoren vorkommen. Schwierig wird es mit solchen privaten Schnittstellen dann, wenn sich wirklich mehrere Prozessoren dieselben Geräte teilen — so teilen sich die S3C24XX Prozessoren zum Beispiel einige wenige Geräte mit neueren Samsung-Prozessoren bis hin zum aktuellen Exynos.

DMAEngine

Seit 2006 hat sich aber auch das DMAEngine-Framework von Intel als die hardwareunabhängige Lösung für DMA-Transfers etabliert. Dort implementieren die Hardware-Treiber nicht mehr den gesamten Transfer sondern nur noch die wirklich hardwarespezifischen-Einstellungen des DMA-Controllers.

Interessanterweise gibt es zwar eine recht gute Dokumentation zur Nutzung der DMAEngine in Treibern, aber keine zum Schreiben von DMAEngine-Treibern. Es bleibt also beim Lesen von Code-Kommentaren um die Funktionsweise zusammen zu puzzeln.


Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA 1CAPTCHA 2CAPTCHA 3CAPTCHA 4CAPTCHA 5


Suche

Nach Einträgen suchen in Outside the Walled Garden:

Das Gesuchte nicht gefunden? Gib einen Kommentar in einem Eintrag ab oder nimm per E-Mail Kontakt auf!