Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: sp am 19. December 2004, 14:18

Titel: DMA im PM
Beitrag von: sp am 19. December 2004, 14:18
Hallo

Gibt es im PM etwas grundsätzliches bei der Nutzung von DMA zu beachten?
Also was ist z.B. wenn ich etwas an eine Stelle über die 1 MB Genze übertragen möchte? Ich nutze noch kein Paging und arbeite in C++, falls das wichtig sein sollte.


sp
Titel: DMA im PM
Beitrag von: Roshl am 22. December 2004, 13:09
Beim FDC kommt man ums DMA nicht herrum, aber da mein FDC nicht so recht fertig werden will, kann ich dazu wenig sagen momentan.
Titel: DMA im PM
Beitrag von: TeeJay am 22. December 2004, 14:43
Soweit ich mich erinnere sind die meisten Geräte nur bis unterhalb von 1 MB DMA fähig. ALso die "alten" Geräte.
Einige können auch bis 16 MB gehen.
Titel: DMA im PM
Beitrag von: lobmann am 22. December 2004, 15:01
Jo genau richtig, das Problem ist das is zu jedem DMA Kanal nen Page-Register zugeschaltet wird um über 1MB adressieren zu können, läuft so ähnlich wie die Adressierung im RM. Beim Floppy wird dieses Page-register soweit ich weiss ignoriert
Titel: DMA im PM
Beitrag von: TeeJay am 22. December 2004, 17:36
So in etwa :)

Oder du mapst einfach die jeweilige Page des Prozesses in den unteren 1 MB Bereich.
Titel: DMA im PM
Beitrag von: GhostCoder am 22. December 2004, 19:33
Hiho,

eine Page mappen heißt einfach nur, eine virtuelle Page auf eine lineare Addresse "zeigen" zu lassen...
Wo die Page im userspace liegt, ist ja egal. Nur das Ziel zum kopieren mittels DMA muss ja unter der 1mb Marke liegen.

MfG GhostCoder
Titel: DMA im PM
Beitrag von: joachim_neu am 22. December 2004, 19:35
d.h. du musst warscheinlich das ganze unter 1 MB kopieren, bzw. das bei großen sachen häppchenweise machen.