Heim Computer-Tutorials Fehlerbehebung Gibt es Quellcode für den DMA-Windows-Treiber?

Gibt es Quellcode für den DMA-Windows-Treiber?

Jan 18, 2024 am 08:30 AM

dma windows驱动源码吗?

Die zugehörigen Vorgänge von DMA werden auf Seite 545 von „Detailliertes Verständnis des Linux-Kernels“ vorgestellt. Wenn wir über DMA sprechen, müssen wir das Problem des Caches erwähnen. Das Buch zitiert das folgende Beispiel, um das Cache-Konsistenzproblem zu beschreiben:

Angenommen, der Gerätetreiber füllt einige Daten in den Speicherpuffer und weist dann das Hardwaregerät sofort an, die Daten mithilfe der DMA-Übertragung zu lesen. Wenn DMA auf diese physischen RAM-Speicherzellen zugreift und der Inhalt der entsprechenden Hardware-Cache-Zeile noch nicht in den RAM geschrieben wurde, liest das Hardware-Gerät höchstens den alten Wert im Speicherpuffer.

Es gibt jetzt zwei Möglichkeiten, mit DMA-Puffer umzugehen:

Konsistente DMA-Zuordnung:

Das Buch ist abstrakter: Jede Neuschreibung des DMA-Puffers wird direkt im Speicher aktualisiert, was auch als „Es ist“ bekannt ist ein Land, das synchron ist oder ein Land, das konsistent ist.

Streaming-DMA-Zuordnung:

Nach persönlichem Verständnis ist der Stream hier der Eingabe- und Ausgabestream. Wir müssen die Richtung des DMA-Puffers im Voraus angeben, z. B. ob der Puffer gelesen oder geschrieben werden soll. Es wird auch als asynchron oder inkonsistent bezeichnet. Einzelheiten finden Sie weiter unten.

Da in der x86-Architektur der Hardware-Gerätetreiber selbst den Zugriff auf den Hardware-Cache überwacht, gibt es in der x86-Architektur kein DMA-Konsistenzproblem. Für andere Architekturen wie MIPS, SPARC und POWERPC (einschließlich ARM) ist es notwendig, deren DMA-Konsistenz in der Software sicherzustellen.

Im Buch gibt es einen passenden Vorschlag, wie man zwischen den beiden oben genannten wählen kann. Wenn die CPU und der DMA-Prozessor auf unvorhersehbare Weise auf einen Puffer zugreifen, muss die Verwendung der konsistenten DMA-Zuordnungsmethode erzwungen werden (hier spreche ich). (Verstehen Sie, dass es nicht möglich ist, zu bestimmen, wann auf den Puffer zugegriffen wird.) In anderen Fällen ist die Streaming-DMA-Zuordnung vorzuziehen, da der Umgang mit einer konsistenten DMA-Zuordnung auf einigen Architekturen umständlich ist und zu einer geringeren Systemleistung führen kann.

Hier finden Sie eine detaillierte Einführung in das Streaming von DMA:

Der Puffer, auf den zugegriffen werden muss, muss vor der Datenübertragung zugeordnet werden (die Zuordnung hier bedeutet, dass einige Funktionen aufgerufen werden müssen, um den Kernel darüber zu informieren, dass der Puffer gestreamt wird). und wird nach der Übertragung abgebrochen.

Das Starten einer Streaming-DMA-Datenübertragung ist in die folgenden Schritte unterteilt:

1.

Wenn das DMA-Gerät nicht den S/G-Modus (Scatter/Gather) verwendet, muss sichergestellt werden, dass der Puffer physisch kontinuierlich ist. Der Linux-Kernel verfügt über zwei Funktionen, um kontinuierlichen Speicher zuzuweisen: kmalloc() und __get_free_pages( ). Beide Funktionen weisen den Maximalwert für die Zuweisung von Bytes als Einheit auf, der Maximalwert liegt bei etwa 64 KB, __get_free_pages() weist Seiten als Einheit zu und kann maximal 2^ Seiten zuweisen Der Bestellparameter wird durch das Makro MAX_ORDER in der Datei include/linux/Mmzone.h bestimmt (in der Standardkernelversion 2.6.18 ist dieses Makro als 10 definiert. Das heißt, theoretisch kann die Funktion __get_free_pages für up gelten

Nachdem Sie den Lese- und Schreibzugriff auf den DMA-Puffer gestartet haben, aktivieren Sie die Funktion dma_map_single(), um die Streaming-DMA-Zuordnung einzurichten Geben Sie die lineare Adresse des Puffers als Parameter ein und geben Sie die entsprechende Busadresse zurück.

Wenn die DMA-Übertragung abgeschlossen ist, müssen Sie die Funktion dma_unmap_single() freigeben (1). Um Konsistenzprobleme zu vermeiden, sollte der Treiber die Funktion dma_sync_single_for_device() aufrufen, um die Cache-Zeile entsprechend dem DMA-Puffer zu aktualisieren Greifen Sie auf den Speicherpuffer zu, bevor eine DMA-Datenübertragung abgeschlossen ist. Bei Bedarf sollte der Treiber jedoch die Funktion dma_sync_single_for_cpu() aufrufen, um die entsprechende Hardware-Cache-Zeile ungültig zu machen, bevor der Puffer gelesen wird

(3). wird auch mit __get_free_pages implementiert, die Freigabepufferfunktion, die kmalloc entspricht, ist kfree, und die Freigabepufferfunktion, die __get_free_pages entspricht, ist free_pages. Die spezifischen Anwendungs- und Freigabefunktionen im Zusammenhang mit __get_free_pages sind wie folgt:

Anwendungsfunktion:

alloc_pages(gfp_mask ,order) gibt die Adresse des ersten zugewiesenen Seitenrahmendeskriptors zurück, oder NULL, wenn die Zuweisung fehlschlägt. __get_free_pages(gfp_mask,order) ähnelt alloc_pages(), gibt jedoch den ersten Seitenrahmendeskriptor zurück. Wenn Sie die der linearen Adresse entsprechende Seitenrahmennummer erhalten müssen, müssen Sie das Makro virt_to_page(addr) aufrufen, um die lineare Adresse zu generieren. Die Freigabefunktion: __free_pages(page, order) betont hier hauptsächlich, dass die Seite freigegeben werden soll der Puffer. Die Seitenrahmennummer, in der sich die lineare erste Adresse befindet. free_pages(page, order) Diese Funktion ähnelt __free_pages(page, order), aber der Parameter, den sie empfängt, ist die lineare Adressadresse des ersten freizugebenden Seitenrahmens

Das obige ist der detaillierte Inhalt vonGibt es Quellcode für den DMA-Windows-Treiber?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist neu in Windows 11 KB5054979 und wie Sie Update -Probleme beheben Was ist neu in Windows 11 KB5054979 und wie Sie Update -Probleme beheben Apr 03, 2025 pm 06:01 PM

Windows 11 KB5054979 Update: Installationshandbuch und Fehlerbehebung Für die Windows 11 24H2 -Version hat Microsoft das kumulative Update KB5054979 veröffentlicht, das mehrere Verbesserungen und Fehlerbehebungen enthält. In diesem Artikel wird Sie über die Installation dieses Updates geleitet und eine Lösung für den Installationsfehler bereitgestellt. Über Windows 11 24H2 KB5054979 KB5054979 wurde am 27. März 2025 veröffentlicht und ist ein Sicherheitsaktualisierung für Windows 11 24H2 -Versionen.NET Framework 3.5 und 4.8.1. Dieses Update verbessert die Sicherheit und

Wie kann ich KB5053602 in Windows 11 nicht installieren? Wie kann ich KB5053602 in Windows 11 nicht installieren? Mar 13, 2025 am 10:00 AM

Der am 11. März 2025 veröffentlichte KB5053602 -Patch zielt auf Windows 11 Editions 22H2 und 23H2 ab und erhöht das Betriebssystem auf OS.

Spotlight auf KB5053606 nicht für Windows 10 installiert, genaue Schritte Spotlight auf KB5053606 nicht für Windows 10 installiert, genaue Schritte Mar 13, 2025 pm 08:02 PM

Windows 10 KB5053606 Update Installation fehlgeschlagen? Dieser Leitfaden bietet effektive Lösungen! Viele Benutzer haben Probleme, das Windows 10 KB5053606 -Update zu installieren, das am Dienstag im Patch von Microsoft im März 2025 veröffentlicht wurde, z. Updates können beim Herunterladen oder Installation oder Fehlercodes angezeigt werden, wie z. B. 0x800F0922, 0xD000034, 0x80070437 und 0x80072efe. KB5053606 -Installationsfehler wird normalerweise durch eine Vielzahl von Gründen verursacht, einschließlich Windows -Update -Komponentenfehler, Systemdateiversorgung und Festplatte

Wie kann ich in Microsoft Office 'Etwas schiefgegangen' -Fehler -Tag 7Q6Ch beheben? Wie kann ich in Microsoft Office 'Etwas schiefgegangen' -Fehler -Tag 7Q6Ch beheben? Mar 15, 2025 am 02:00 AM

Das Fehler -Tag 7Q6Ch in Microsoft Office „Etwas schiefgegangen ist“ stört Ihren Workflow bei wesentlichen Aufgaben wie das Erstellen von Dokumenten oder die Bearbeitung von E -Mails A.

Was ist, wenn KB5053598 unter Windows 11 nicht installiert wird? Fixes hier Was ist, wenn KB5053598 unter Windows 11 nicht installiert wird? Fixes hier Mar 13, 2025 pm 08:03 PM

Microsofts Update vom 11. März 2025, KB5053598, ist ein entscheidender Patch für Windows 11 24H2 (Betriebssystem Build 26100.3476). Dieser Minitool -Leitfaden deckt alles ab, was Sie wissen müssen, einschließlich der Fehlerbehebung bei Installationsproblemen. Was ist neu in KB5053598? Veröffentlicht auf

GTA V Enhanced ERR_GFX_D3D_NOD3D12, schnelle Lösung auf 4 Wege GTA V Enhanced ERR_GFX_D3D_NOD3D12, schnelle Lösung auf 4 Wege Mar 14, 2025 pm 08:04 PM

GTA 5 Enhanced ERR_GFX_D3D_NOD3D12 FEHLER -FERTUNG Grand Theft Auto V Enhanced (GTA 5 Enhanced) ist ein aktualisiertes Spiel, aber einige Spieler begegnen auf den Fehler "ERR_GFX_D3D_NOD3D12: DIRECTX 12 Adapter oder Runner Found" beim Starten. Dieser Artikel enthält mehrere Lösungen. Fehlerursache: Dieser Fehler zeigt normalerweise an, dass Ihrem System eine DirectX 12 -Laufzeitbibliothek oder eine kompatible DirectX 12 -Grafikkarte fehlt. Lösung: Methode 1: Installieren Sie die DirectX -Laufzeitbibliothek Inspektion

KI-Limit-Dateispeicherort und gespeicherte Dateischutzanleitung KI-Limit-Dateispeicherort und gespeicherte Dateischutzanleitung Mar 17, 2025 pm 10:05 PM

Mastering AI Limits Speicherort und Schutz der Datei speichern: Ein umfassender Leitfaden Planen, in das actionreiche Science-Fiction-RPG, KI-Limit einzusteigen, am 27. März 2025 starten? Das Verständnis Ihres Speicherorts der Datei speichern und robuste Schutzmethoden implementieren, ist

Wie kann ich KB5053598 in Windows 11 nicht installieren? Wie kann ich KB5053598 in Windows 11 nicht installieren? Mar 13, 2025 am 10:01 AM

Windows 11 erhält regelmäßige Updates, um die Sicherheit zu verbessern, Fehler zu beheben und neue Funktionen einzuführen. Ein Aspekt dieses Aktualisierungsprozesses ist der Patch -Dienstag, der auftritt

See all articles