Comment créer un pilote de périphérique Linux intégré (12) (Terminé)

12ème fois: chargez le pilote de périphérique créé au démarrage

À propos de cette série

Article HowTo pour développer des pilotes de périphériques Linux embarqués en tant que modules de noyau. Tout le contenu de cet article peut être exécuté sur Raspberry Pi.

Contenu de cette époque

J'ai créé des pilotes de périphériques jusqu'à présent, mais je les ai insérés manuellement à chaque fois. Cela peut être bien pendant le développement, mais lorsque je l'incorpore réellement dans le produit, je souhaite qu'il soit automatiquement chargé au démarrage du noyau.

Charger automatiquement au démarrage

Placez le pilote de périphérique dans un emplacement formel (?)

Jusqu'à présent, j'ai construit le fichier MyDeviceModule.ko dans mon répertoire de développement. Copiez-le dans l'emplacement officiel du module du noyau. Cet emplacement dépend de la version du noyau, alors récupérez-le avec ʻuname. Après cela, vous devez mettre à jour les informations de dépendance du module du noyau. Pour ce faire, utilisez la commande depmod`.

sudo cp MyDeviceModule.ko /lib/modules/$(uname -r)/kernel/drivers/.
sudo depmod -ae

Inscrivez-vous avec le module à charger au démarrage

Avec la copie et les paramètres ci-dessus, vous pouvez maintenant charger le pilote de périphérique créé avec modprobe MyDeviceModule de n'importe où. Ce n'est pas grave si vous décrivez cela dans le script qui est exécuté au démarrage (par exemple, le script rc). Je pense qu'il existe différentes dépendances d'environnement, mais dans Raspeye, il semble que le nom du module devrait être décrit dans / etc / modules-load.d / modules.conf. En fait, je pense que cela est décidé en tenant compte de la dépendance avec d'autres modules et de la vitesse à laquelle vous voulez qu'il se charge en fonction des spécifications du produit.

sudo bash -c 'echo MyDeviceModule >> /etc/modules-load.d/modules.conf'

Confirmer

Si vous redémarrez et regardez le journal avec dmesg, vous pouvez voir que ce pilote de périphérique est chargé au démarrage.

dmesg
[    7.595531] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    7.955417] usb 1-1.3: reset high-speed USB device number 4 using dwc_otg
[    8.097012] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 5390, rev 0502 detected
[    8.124187] MyDeviceModule: loading out-of-tree module taints kernel.
[    8.131765] mydevice_i2c_probe
[    8.131785] slave address = 0x18
[    8.132270] id = 0x33
[    8.173190] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 5370 detected
[    8.224829] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[    8.231902] usbcore: registered new interface driver rt2800usb
[   11.534982] Adding 102396k swap on /var/swap.  Priority:-1 extents:1 

Pour les devadras compatibles avec l'arborescence d'appareils

Dans le cas du pilote de périphérique qui prend en charge l'arborescence de périphériques créée la dernière fois, le noyau chargera automatiquement MyDeviceModule.ko sans éditer / etc / modules-load.d / modules.conf et le charger explicitement. Je vais. Il semble que cela soit dû au fait que le noyau recherche et charge automatiquement le pilote de périphérique correspondant au périphérique enregistré dans l'arborescence des périphériques.

__ Cette série __ Conclusion

Enfin c'est fini! !! Je suis content d'avoir fini cette année ~

Pour une raison quelconque, j'y ai soudainement pensé et j'ai posté des articles sur les pilotes de périphériques Linux 12 fois au total pendant environ 10 jours. J'ai l'intention de créer le contenu pour que les débutants, y compris moi-même, puissent le comprendre tout en l'essayant. Il s'agit plutôt d'un enregistrement de ce que le débutant lui-même a étudié au cours des deux dernières semaines.

Par conséquent, je pense qu'il y a plusieurs pièces manquantes. Par exemple, le contrôle exclusif doit être utilisé lors de l'accès aux variables, mais il a été omis. Aussi, avant de traduire l'adresse, je devrais vérifier si l'adresse est accessible, mais j'ai également omis cela. Celles-ci ont été intentionnellement omises par souci de clarté dans le code et la description. Cependant, en plus de cela, je pense qu'il y a beaucoup d'erreurs qui me manquent en raison de mon manque de connaissances et de compréhension. J'espère que vous pourrez le souligner de plus en plus dans les commentaires.

Le contenu décrit dans cette série n'est qu'une petite partie du pilote de périphérique Linux. De plus, la méthode et les règles de mise en œuvre changent chaque jour. Vous devez toujours lire le code source et la documentation Linux pour obtenir les informations les plus récentes. Nous espérons que cette série servira de tremplin pour franchir une telle étape.

Enfin, nous tenons à exprimer notre profonde gratitude à M. Yutaka Hirata pour avoir écrit "Linux Device Driver Programming". On dit souvent que vous pouvez lire le code source et les documents, mais au début, les livres qui ont été expliqués en japonais de manière facile à comprendre étaient très utiles.

http://elixir.free-electrons.com/linux/v4.14/source https://people.freedesktop.org/~narmstrong/meson_drm_doc/index.html

Recommended Posts

Comment créer un pilote de périphérique Linux intégré (12) (Terminé)
Comment créer un pilote de périphérique Linux intégré (8)
Comment créer un pilote de périphérique Linux intégré (1)
Comment créer un pilote de périphérique Linux intégré (4)
Comment créer un pilote de périphérique Linux intégré (7)
Comment créer un pilote de périphérique Linux intégré (2)
Comment créer un pilote de périphérique Linux intégré (3)
Comment créer un pilote de périphérique Linux intégré (5)
Comment créer un pilote de périphérique Linux intégré (10)
Comment créer un pilote de périphérique Linux intégré (9)
Comment faire reconnaître Yubico Yubikey par Manjaro Linux
Comment créer un outil CLI interactif avec Golang
Comment créer un serveur HTTPS avec Go / Gin
[Python] Comment créer une matrice de contiguïté / liste de contiguïté [Théorie des graphes]
Comment créer un laboratoire de piratage - Kali Linux (2020.1) VirtualBox 64 bits Partie 2-
Comment créer un laboratoire de piratage - Kali Linux (2020.1) VirtualBox 64-bit edition -
Comment créer un fichier ISO (image CD) sous Linux
Comment faire une traduction japonais-anglais
Comment transformer une chaîne en tableau ou un tableau en chaîne en Python
Comment obtenir le pilote d'imprimante pour Oki Mac sous Linux
Comment créer un bot slack
Comment créer un robot - Avancé
Comment créer une fonction récursive
Comment installer MBDyn (Linux Ubuntu)
[Blender] Comment créer un plug-in Blender
[Blender] Comment rendre les scripts Blender multilingues
Comment créer un robot - Basic
Comment créer un pilote de langage MongoDB C
Comment vérifier la version du système d'exploitation Linux
Comment créer un bot LINE à intelligence artificielle avec l'API de messagerie Flask + LINE
Comment rendre les caractères de Word Cloud monochromatiques
Comment créer mon propre serveur Linux
Comment rendre le sélénium aussi léger que possible
[Linux] Comment subdiviser des fichiers et des dossiers
Comment installer aws-session-manager-plugin sur Manajro Linux
[Python] Comment rendre une classe itérable
python3 Comment installer un module externe
Comment créer un environnement NVIDIA Docker
Comment convertir Python en fichier exe
Je veux savoir comment fonctionne LINUX!
[Linux] Comment utiliser la commande echo
Comment mettre à jour PHP sur Amazon Linux 2
Comment afficher des pictogrammes sur Manjaro Linux
Comment installer des packages sur Alpine Linux
[Cocos2d-x] Comment créer une liaison de script (partie 2)
Comment faire fonctionner Linux depuis la console
Comment installer le sous-système Windows pour Linux
Comment mettre hors tension de Linux sur Ultra96-V2
Comment mettre à jour la sécurité sur CentOS Linux 8
Je veux faire un programme d'automatisation!
Comment installer php7.4 sur Linux (Ubuntu)
Comment créer un indicateur personnalisé Backtrader
Comment créer un plan de site Pelican
[Cocos2d-x] Comment créer une liaison de script (partie 1)