Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet 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
-
Beim FDC kommt man ums DMA nicht herrum, aber da mein FDC nicht so recht fertig werden will, kann ich dazu wenig sagen momentan.
-
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.
-
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
-
So in etwa :)
Oder du mapst einfach die jeweilige Page des Prozesses in den unteren 1 MB Bereich.
-
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
-
d.h. du musst warscheinlich das ganze unter 1 MB kopieren, bzw. das bei großen sachen häppchenweise machen.