Implémentation d'un pilote de clavier pour un système Linux embarqué (1)
1 Introduction
Linux a été largement utilisé dans les systèmes embarqués en raison de ses nombreux avantages tels qu'un noyau puissant et stable, une extension et une réduction faciles et une prise en charge matérielle riche. De nombreux systèmes Linux embarqués, en particulier ceux ayant une forte interaction avec les utilisateurs, doivent souvent être équipés d'un clavier spécial. À l'heure actuelle, les développeurs doivent écrire des pilotes pour leurs propres claviers spéciaux en fonction des conditions réelles.
2 Introduction au pilote de clavier Linux
La plupart des pilotes sous Linux adoptent une architecture hiérarchique, et les pilotes de clavier ne font pas exception. Sous Linux, le pilote du clavier est implémenté en deux couches. Parmi eux, la couche supérieure est une couche d'abstraction générale du clavier, qui remplit certaines fonctions du pilote de clavier qui ne dépendent pas du matériel spécifique sous-jacent, et est responsable de la fourniture de services à la couche sous-jacente, la couche inférieure est la couche de traitement matériel ; , qui est étroitement lié au matériel spécifique et est principalement responsable du traitement matériel. Les parties publiques supérieures du pilote de clavier se trouvent dans driver/keyboard.c. La chose la plus importante dans ce fichier est la fonction handle_scancode exportée par le noyau à l'aide de la macro EXPORT_SYMBOL. La fonction complétée par handle_scancode est la suivante : convertissez d'abord le code de numérisation en code clé, puis convertissez le code clé en code cible en fonction de la pression sur Maj, Alt et autres touches étendues, généralement un code ASCII, et enfin mettez le code ASCII. dans le tampon du terminal et planifie un tasklet pour qu'il fasse écho sur le moniteur. On peut voir que cette fonction complète une partie du travail de base dans le pilote de clavier, et ces fonctions logiques de base ne dépendent pas du matériel sous-jacent, elles peuvent donc être isolées et exportées vers les appels de fonction de traitement matériel sous-jacent. Plusieurs autres fonctions de rappel sont également définies dans ce fichier, qui sont appelées par les parties publiques de niveau supérieur du pilote de clavier et implémentées par les fonctions de traitement matériel sous-jacentes. Par exemple, kbd_init_hw, kbd_translate, kbd_unexpected_up et ainsi de suite. Parmi eux, kbd_translate est appelé par handle_scancode, qui est responsable de la conversion du code de numérisation en code clé ; la partie de traitement matériel sous-jacente du pilote de clavier a différentes implémentations selon le matériel. Par exemple, les fonctions de traitement matériel sous-jacentes du clavier standard sur la plate-forme PC sont concentrées dans driver/Pc_keyb.c. Ce fichier comprend la fonction de traitement des interruptions du clavier clavier_interrupt, la fonction de conversion du code de numérisation en code clé pckbd_translate et d'autres fonctions étroitement liées au matériel sous-jacent.
Sous cette architecture, il est particulièrement clair d'ajouter un clavier spécial au système. Les développeurs n'ont qu'à écrire les fonctions de traitement matériel sous-jacentes dans le pilote pour piloter le clavier. D'une manière générale, la tâche la plus importante dans la fonction de traitement matériel sous-jacente est d'obtenir le code de scan de la touche enfoncée dans le traitement de l'interruption du clavier et d'appeler handle_scancode avec celui-ci comme paramètre. Le code de scan peut être défini par vous-même, mais il doit le faire. l'identifier de manière unique. La position de la touche enfoncée sur le clavier. De plus, les développeurs doivent également fournir la fonction de conversion correspondante kbd_translate des codes d'analyse personnalisés en codes clés. La conversion spécifique du code clé, le placement du code cible dans le tampon d'entrée du terminal et l'écho sont tous complétés par handle_scancode. Nous pouvons également voir ici que la fonction d'exportation du noyau handle_scancode joue un rôle clé dans le collage de la couche d'abstraction générale supérieure et de la couche de traitement matériel sous-jacente dans l'ensemble du pilote de clavier.
3 Exemple d'application
Ci-dessous, nous utiliserons un exemple d'application spécifique pour illustrer le processus spécifique d'écriture d'un pilote pour un clavier spécial dans un système Linux embarqué.
3.1 Description du module matériel
La construction de ce système utilise la carte de développement S3C2410 de Samsung comme plate-forme matérielle. Le module matériel du clavier spécial est principalement composé de deux puces SN74hc164 et d'un circuit de balayage matriciel à 4 lignes et 16 colonnes. SN74hc164 est un registre à décalage d'entrée série et de sortie parallèle de 8 bits, composé de 8 bascules D connectées en série. Son principe de fonctionnement est simplement le suivant. La puce SN74hc164 transmet l'entrée série sur les broches A et B vers les broches de sortie QA à QH en parallèle après 8 impulsions d'horloge sur le front montant de l'impulsion d'horloge CLK. Sa table de vérité est présentée à la figure 1.
Une fois les deux puces SN74hc164 connectées en série, connectez respectivement leur broche CLK et leur broche CLR aux ports GPB2 et GPB4 de la carte de développement S3C2410, et connectez les broches A et B de la première puce SN74hc164 connectée à Le port GPB1 de la carte de développement, ces trois ports GPIO sont configurés comme ports de sortie. De cette façon, nous utilisons deux registres SN74hc164 pour occuper seulement 3 ports GPIO et fournir une entrée aux 16 colonnes du circuit de balayage matriciel, économisant ainsi des coûts et évitant le gaspillage de ressources GPIO. Mais cela entraîne également certains problèmes dans la mise en œuvre du pilote de clavier. Le pilote doit d'abord piloter le SN74hc164, puis il peut contrôler les 16 colonnes du circuit matriciel. Les quatre broches de rangée du circuit matriciel sont respectivement connectées aux ports GPG6, GPG7, GPG8 et GPG9 du S3C2410, et ces quatre ports sont configurés comme sources d'interruption. Lorsqu'aucune touche n'est enfoncée, elle est directement lue comme un potentiel élevé. Lors de son utilisation, les 16 colonnes du clavier sont d'abord réglées au potentiel bas via la puce SN74hc164. Lorsqu'une touche est enfoncée, le port GPG de la rangée correspondante aura une tension. sauter de haut en bas Cela déclenche une interruption.
3.2 Description du module logiciel
Ce qui précède est le contenu de l'implémentation du pilote de clavier d'un système Linux embarqué (1). Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www). .php.cn) !

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Les principales différences entre Centos et Ubuntu sont: l'origine (Centos provient de Red Hat, pour les entreprises; Ubuntu provient de Debian, pour les particuliers), la gestion des packages (Centos utilise Yum, se concentrant sur la stabilité; Ubuntu utilise APT, pour une fréquence de mise à jour élevée), le cycle de support (CentOS fournit 10 ans de soutien, Ubuntu fournit un large soutien de LT tutoriels et documents), utilisations (Centos est biaisé vers les serveurs, Ubuntu convient aux serveurs et aux ordinateurs de bureau), d'autres différences incluent la simplicité de l'installation (Centos est mince)

Étapes d'installation de CentOS: Téléchargez l'image ISO et Burn Bootable Media; démarrer et sélectionner la source d'installation; sélectionnez la langue et la disposition du clavier; configurer le réseau; partitionner le disque dur; définir l'horloge système; créer l'utilisateur racine; sélectionnez le progiciel; démarrer l'installation; Redémarrez et démarrez à partir du disque dur une fois l'installation terminée.

Centos sera fermé en 2024 parce que sa distribution en amont, Rhel 8, a été fermée. Cette fermeture affectera le système CentOS 8, l'empêchant de continuer à recevoir des mises à jour. Les utilisateurs doivent planifier la migration et les options recommandées incluent CentOS Stream, Almalinux et Rocky Linux pour garder le système en sécurité et stable.

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

CentOS a été interrompu, les alternatives comprennent: 1. Rocky Linux (meilleure compatibilité); 2. Almalinux (compatible avec CentOS); 3. Serveur Ubuntu (configuration requise); 4. Red Hat Enterprise Linux (version commerciale, licence payante); 5. Oracle Linux (compatible avec Centos et Rhel). Lors de la migration, les considérations sont: la compatibilité, la disponibilité, le soutien, le coût et le soutien communautaire.

Une fois CentOS arrêté, les utilisateurs peuvent prendre les mesures suivantes pour y faire face: sélectionnez une distribution compatible: comme Almalinux, Rocky Linux et CentOS Stream. Migrez vers les distributions commerciales: telles que Red Hat Enterprise Linux, Oracle Linux. Passez à Centos 9 Stream: Rolling Distribution, fournissant les dernières technologies. Sélectionnez d'autres distributions Linux: comme Ubuntu, Debian. Évaluez d'autres options telles que les conteneurs, les machines virtuelles ou les plates-formes cloud.

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

Vs Code Système Exigences: Système d'exploitation: Windows 10 et supérieur, MacOS 10.12 et supérieur, processeur de distribution Linux: minimum 1,6 GHz, recommandé 2,0 GHz et au-dessus de la mémoire: minimum 512 Mo, recommandée 4 Go et plus d'espace de stockage: Minimum 250 Mo, recommandée 1 Go et plus d'autres exigences: connexion du réseau stable, xorg / wayland (Linux) recommandé et recommandée et plus
