Fonction OUTB 2 C

Fonction OUTB 2 C
«Le CPU a plusieurs connexions au matériel externe, y compris les LCD et les disques durs. Les CPU sont utilisés pour transférer des données dans et hors des périphériques. Ce taux de transfert total de transactions pourrait aller des bits aux téraoctets. Lorsque les données sont envoyées entre un CPU et un périphérique, le CPU fournit de nombreux ports, souvent connus sous le nom d'entrée et de sortie, ou IO. Ces ports sont utilisés par le CPU pour gérer divers appareils intelligents. En travaillant dans n'importe quel langage de programmation, vous pouvez avoir utilisé de nombreuses fonctions et variables en utilisant certains numéros de port ou informations concernant les ports. Juste comme ça, la bibliothèque Linux Posix C a également proposé de telles fonctions. Certaines des fonctions C appartiennent à la famille d'entrée et de sortie de bas niveau d'un POSIX pour effectuer des opérations d'entrée et de sortie de bas niveau. La fonction OUTB () 2 C de POSIX en fait partie.

OUTB semble être une encapsulation de fonction pour une commande d'assemblage de la même désignation utilisée pour communiquer avec les périphériques de mappé de port, tels que la machine à écrire sur les systèmes compatibles IBM PC, qui utilisent la plage d'adresses d'E / S 0x60-0x6f. Dans cet article, nous discuterons de l'utilisation de la fonction OUTB () C lors de l'utilisation de l'Ubuntu 20.04 Système d'exploitation Linux. Pour comprendre le fonctionnement de la fonction OUTB (), vous devez d'abord jeter un œil aux E / S post-mappe."

Qu'est-ce que les E / S à port port?

Les E / S mappées de mémoire et de mappé de port sont les deux façons courantes que les puces informatiques se lient à des appareils externes. Néanmoins, toutes les approches semblent être équivalentes en ce qui concerne la périphérie. Les E / S mappées de port sont accessibles via un ensemble spécifique de commandes CPU et un espace d'adressage spécialisé distinct et spécialisé. Les commandes IN et Out peuvent être vues sur les processeurs informatiques Intel.

Pour donner aux appareils d'E / S un espace d'adressage différent du stockage ordinaire, soit une broche «E / S» supplémentaire a été ajoutée au point d'accès du CPU, soit un bus entier a été réservé pour les E / S. Il s'agit d'une technique de communication CPU à périphérique qui est utilisée lorsque des commandes uniques sont nécessaires car le processeur doit communiquer avec la RAM et les périphériques. Ceci est fréquemment appelé E / S isolé car l'adresse d'E / S est distincte de celle du stockage primaire. La manière alternative et la plus populaire est actuellement des E / S à cartographie de mémoire, dans lesquelles aucune commande supplémentaire n'est requise car tout partage le même espace d'adressage. Les E / S mappés à la mémoire sont accessibles de la même manière que la mémoire du programme et / ou la mémoire de l'utilisateur car il est entraîné dans le même espace d'adressage.

Les opérations d'entrée et de sortie de port de bas niveau sont gérées par ce groupe de méthodes POSIX. Les méthodes B-Suffix sont des procédures de largeur d'octets, les méthodes du W-Suffix sont des procédures de largeur de mot et les méthodes _P-Suffix retardent jusqu'à ce que l'E / S soit terminée. Les opérations OUT * effectuent une sortie de port, tandis que les processus IN * font l'entrée du port. Bien qu'ils puissent toujours être utilisés en mode utilisateur, ils sont généralement conçus pour une utilisation intérieure.

#inclure
VOID OUTB (valeur char non signée, port court non signé);

Nous devons utiliser O, O2 ou un compilateur équivalent. Étant donné que les méthodes sont spécifiées sous forme de macros en ligne, des références problématiques de temps de connexion peuvent résulter si l'optimisation n'est pas activée. Pour demander au noyau de permettre au programme en mode utilisateur utiliser les ports d'E / S concernés, vous pouvez utiliser les commandes IOperm (2) ou, éventuellement, les commandes IOPL (2). Si vous ne jouez pas cela, le programme obtiendra un défaut de segmentation. Des fonctions spécifiques au matériel comme OUTB () et les compagnons contrairement au fonctionnement de la plupart des systèmes DOS, le paramètre de valeur est fourni en premier et le paramètre du port suit.

Exemple

Jetons un coup d'œil à l'utilisation de la fonction OUTB () dans le programme C. Ce programme sera une petite démonstration de la façon dont nous pouvons l'utiliser dans n'importe quel code de programme C sans regarder sa sortie, je.e., La plupart du temps, il ne sortira pas comme nous le voulons. Donc, nous devons d'abord créer un fichier C dans notre système d'exploitation Linux. Ouvrez la borne de la coque via l'utilisation de «Ctrl + Alt + T».

Après cela, utilisez l'instruction tactile de Linux avec le nom d'un fichier «outb.C ”à créer avec le«.C ”Extension à sa fin. Ce fichier peut être trouvé dans le répertoire de travail actuel de votre système Linux, i.e., "maison". Ouvrez l'explorateur de fichiers et doublez sur le fichier pour l'ouvrir.

Le fichier vide serait ouvert sur votre écran. Écrivez le code C à faire afficher la fonction de la fonction OUTB () et appuyez sur le bouton Enregistrer pour l'enregistrer. Nous avons commencé ce code C avec l'utilisation de certains en-têtes principaux de C. Premièrement, nous avons ajouté la «configuration.En-tête h ”pour configurer le code C. Le «sys / io.H ”est l'en-tête principal requis pour l'utilisation et l'exécution de la fonction OUTB () dans le programme C. Donc, nous l'avons également ajouté. Après cela, le sys / ioctl.H et Linux / Parport.L'en-tête H a été utilisé pour l'utilisation d'informations liées au port. Le standard standard.h et stdlib.Les en-têtes H sont utilisés pour utiliser les entrées et les sorties standard dans le programme.

L'initialisation de la variable addr a lancé la fonction principale (). La fonction ioperm () est utilisée pour définir les bits d'autorisation d'accès au port et passer le résultat au résultat variable. La fonction OUTB () est là pour effectuer la sortie du port. Vous pouvez exécuter ce programme sur votre système avec le compilateur GCC.

Conclusion

Quant aux avantages et aux inconvénients, l'échange d'informations et d'autobus d'adresse peut rendre l'accès à la mémoire lent car les appareils périphériques fonctionnent plus lentement que RAM. La flexibilité des E / S offerte par les plates-formes mappées par la mémoire, en revanche, réduit la quantité de logique interne nécessaire par le processeur, permettant la mise en œuvre de processeurs plus rapides, moins coûteux et économes en puissance. Parallèlement aux systèmes RISC, la justification consiste à réduire la complexité pour obtenir un système plus ciblé et fiable, qui est utile pour les appareils intégrés, par exemple. Ce guide a l'un des exemples de base pour démontrer l'idée de la fonction OUTB dans le langage C.