Maison tutoriels informatiques Dépannage Existe-t-il un code source pour le pilote Windows DMA ?

Existe-t-il un code source pour le pilote Windows DMA ?

Jan 18, 2024 am 08:30 AM

dma windows驱动源码吗?

Les opérations associées de DMA sont présentées à la page 545 de « Compréhension approfondie du noyau Linux ». Lorsqu’on parle de DMA, il faut mentionner la question du Cache. Le livre cite l'exemple suivant pour décrire le problème de cohérence du cache :

Supposons que le pilote de périphérique remplisse certaines données dans la mémoire tampon, puis commande immédiatement au périphérique matériel de lire les données à l'aide du transfert DMA. Si DMA accède à ces cellules de mémoire RAM physique et que le contenu de la ligne de cache matériel correspondante n'a pas encore été écrit dans la RAM, le périphérique matériel lira uniquement l'ancienne valeur dans la mémoire tampon.

Il existe désormais deux façons de gérer les tampons DMA :

Mappage DMA cohérent :

Le livre est plus abstrait, en termes simples, toute réécriture du tampon DMA sera directement mise à jour dans la mémoire, également connue sous le nom de It is. un terrain synchronisé ou un terrain cohérent.

Mappage DMA de streaming :

Selon ma compréhension personnelle, le flux ici est le flux d'entrée et de sortie. Nous devons spécifier à l'avance la direction du tampon DMA, par exemple s'il faut lire le tampon ou écrire le tampon. Il est également appelé asynchrone ou non cohérent. Veuillez voir ci-dessous pour plus de détails.

Parce que dans l'architecture x86, le pilote de périphérique matériel lui-même espionnera le cache matériel accédé, il n'y a donc pas de problème de cohérence DMA dans l'architecture x86. Pour les autres architectures telles que MIPS, SPARC et POWERPC (dont ARM), il est nécessaire de s'assurer de leur cohérence DMA au niveau logiciel.

Il y a une suggestion appropriée dans le livre sur la façon de choisir entre les deux ci-dessus. Si le CPU et le processeur DMA accèdent à un tampon de manière imprévisible, alors la méthode de mappage DMA cohérente doit être forcée à être utilisée (je parle ici). à propos de l'imprévisible Comprenez qu'il n'est pas possible de déterminer quand ils accèdent au tampon). Dans d'autres cas, la méthode de mappage DMA en streaming est préférable, car le traitement d'un mappage DMA cohérent est fastidieux sur certaines architectures et peut entraîner une baisse des performances du système.

Voici une introduction détaillée au streaming DMA :

Le tampon auquel il faut accéder doit être mappé avant la transmission des données (le mappage ici signifie que certaines fonctions doivent être appelées pour informer le noyau que le tampon est diffusé), et est annulé après la transmission.

Le démarrage d'un transfert de données DMA en streaming est divisé en étapes suivantes :

1. Allouer le tampon DMA.

Lorsque le périphérique DMA n'utilise pas le mode S/G (scatter/gather), il faut s'assurer que le tampon est physiquement continu. Le noyau Linux a deux fonctions pour allouer de la mémoire continue : kmalloc() et __get_free_pages( ). Les deux fonctions ont la valeur maximale pour allouer de la mémoire continue. kmalloc alloue des octets comme une unité, le maximum est d'environ 64 Ko, __get_free_pages() alloue des pages comme une unité et peut allouer un maximum de 2 ^ nombre d'ordre de pages. le paramètre order Déterminé par la macro MAX_ORDER dans le fichier include/linux/Mmzone.h (dans la version par défaut du noyau 2.6.18, cette macro est définie à 10. C'est-à-dire qu'en théorie, la fonction __get_free_pages peut s'appliquer jusqu'à à 1 à la fois

2. Établissez le mappage de streaming.

Après l'accès en lecture et en écriture au tampon DMA, et avant de démarrer le transfert du périphérique DMA, activez la fonction dma_map_single() pour établir le mappage DMA de streaming. l'adresse linéaire du tampon comme paramètres et renvoie l'adresse de bus correspondante

3. Libérez le mappage de streaming

Lorsque le transfert DMA est terminé, nous devons libérer la fonction dma_unmap_single(). (1). Afin d'éviter la mise en cache. Pour des problèmes de cohérence, le pilote doit appeler la fonction dma_sync_single_for_device() pour actualiser la ligne de cache correspondant au tampon DMA si nécessaire

(2). accéder au tampon mémoire avant qu'un transfert de données DMA ne soit terminé, mais si nécessaire, le pilote doit appeler la fonction dma_sync_single_for_cpu() pour invalider la ligne de cache matériel correspondante avant de lire le tampon

(3 ). est également implémenté à l'aide de __get_free_pages, la fonction de tampon de version correspondant à kmalloc est kfree et la fonction de tampon de version correspondant à __get_free_pages est free_pages. Les fonctions d'application et de version spécifiques liées à __get_free_pages sont les suivantes :

Fonction d'application :

alloc_pages(gfp_mask. ,order) renvoie l'adresse du premier descripteur de cadre de page alloué, ou NULL si l'allocation échoue. __get_free_pages(gfp_mask,order) est similaire à alloc_pages(), mais il renvoie le premier descripteur de cadre de page. L'adresse linéaire d'une page allouée. . Si vous avez besoin d'obtenir le numéro de cadre de page correspondant à l'adresse linéaire, vous devez appeler la macro virt_to_page(addr) pour générer l'adresse linéaire. La fonction release : __free_pages(page, order) souligne ici principalement que la page est à. libère le tampon. Le numéro du cadre de page où se trouve la première adresse linéaire free_pages(page, order) Cette fonction est similaire à __free_pages(page, order), mais le paramètre qu'elle reçoit est l'adresse linéaire du premier cadre de page à être. libéré

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quoi de neuf dans Windows 11 KB5054979 et comment résoudre les problèmes de mise à jour Quoi de neuf dans Windows 11 KB5054979 et comment résoudre les problèmes de mise à jour Apr 03, 2025 pm 06:01 PM

Windows 11 KB5054979 Mise à jour: Guide d'installation et dépannage Pour la version Windows 11 24h2, Microsoft a publié la mise à jour cumulative KB5054979, qui comprend plusieurs améliorations et correctifs de bogues. Cet article vous guidera sur la façon d'installer cette mise à jour et de fournir une solution à la panne d'installation. À propos de Windows 11 24h2 KB5054979 KB5054979 a été publié le 27 mars 2025 et est une mise à jour de sécurité pour Windows 11 24h2 versions.net Framework 3.5 et 4.8.1. Cette mise à jour améliore la sécurité et

Comment corriger la balise d'erreur 'quelque chose qui a mal tourné' 7q6ch dans Microsoft Office? Comment corriger la balise d'erreur 'quelque chose qui a mal tourné' 7q6ch dans Microsoft Office? Mar 15, 2025 am 02:00 AM

La balise d'erreur «quelque chose qui a mal tourné» 7q6ch dans Microsoft Office perturbe votre flux de travail pendant les tâches essentielles telles que la création de documents ou la gestion des e-mails

GTA V amélioré ERR_GFX_D3D_NOD3D12, Correction rapide de 4 manières GTA V amélioré ERR_GFX_D3D_NOD3D12, Correction rapide de 4 manières Mar 14, 2025 pm 08:04 PM

GTA 5 ERR_GFX_D3D_NOD3D12 Guide de correction d'erreur Grand Theft Auto v amélioré (GTA 5 Enhanced) est un jeu mis à niveau, mais certains joueurs rencontrent l'erreur "ERR_GFX_D3D_NOD3D12: DirectX 12 ou le coureur trouvé" Erreur lors du démarrage. Cet article fournit plusieurs solutions. Cause de l'erreur: cette erreur indique généralement que votre système manque une bibliothèque d'exécution DirectX 12 ou une carte graphique DirectX 12 compatible. Solution: Méthode 1: Installez la bibliothèque d'exécution DirectX Inspection

AI limiter l'emplacement du fichier et le guide de protection des fichiers enregistrée AI limiter l'emplacement du fichier et le guide de protection des fichiers enregistrée Mar 17, 2025 pm 10:05 PM

La maîtrise de l'emplacement et de la protection des fichiers de sauvegarde de l'AI limite: un guide complet Vous prévoyez de plonger dans le RPG de science-fiction riche en action, Limite AI, lançant le 27 mars 2025? Comprendre votre emplacement de fichier de sauvegarde et mettre en œuvre des méthodes de protection robuste est

Horaire I Enregistrer l'emplacement du fichier: comment accéder et sauvegarder Horaire I Enregistrer l'emplacement du fichier: comment accéder et sauvegarder Mar 27, 2025 pm 08:03 PM

Trouver votre horaire, j'enregistre des fichiers est crucial pour gérer et protéger les progrès de votre jeu. Ce guide vous montre comment localiser et sauvegarder vos données de sauvegarde. Où sont situés les fichiers de calendrier I Save? La sortie d'accès anticipé de l'annexe I a recueilli une position

KB5053598 Émission de problèmes: RDP Disconnection et BSOD KB5053598 Émission de problèmes: RDP Disconnection et BSOD Mar 14, 2025 pm 08:10 PM

La mise à jour du patch de mars 2025 mardi, KB5053598, a provoqué des problèmes généralisés pour les utilisateurs de Windows 11. Beaucoup signalent les déconnexions RDP et les erreurs d'écran bleu (BSOD). Ce guide offre des solutions à ces problèmes. Windows 11 KB5053598 Mise à jour: RDP Disconne

Windows 10 KB5055063: Quoi de neuf et comment le télécharger Windows 10 KB5055063: Quoi de neuf et comment le télécharger Mar 31, 2025 pm 03:54 PM

Windows 10 KB5055063 Mise à jour Détails et dépannage d'installation KB5055063 est une mise à jour du .NET Framework pour la version Windows 10 22H2, y compris des améliorations et des correctifs importantes. Cet article explorera KB5055063 en profondeur, y compris les méthodes de téléchargement et diverses façons de résoudre les problèmes de défaillance de l'installation. Introduction à Windows 10 KB5055063 KB5055063 est une mise à jour cumulative pour .NET Framework 3.5, 4.8 et 4.8.1 pour Windows 10 version 22H2, le 25 mars 2025

Correction et conseils éprouvés pour KB5054980 NON installant Correction et conseils éprouvés pour KB5054980 NON installant Mar 31, 2025 pm 02:40 PM

Dépannage KB5054980 Problèmes d'installation sur Windows 11 Microsoft a sorti KB5054980 le 25 mars 2025, pour les versions Windows 11 22H2 et 23H2. Bien que cette mise à jour n'inclue pas de nouvelles fonctionnalités de sécurité, elle intègre tous les SecUri précédemment publiés

See all articles