21 votes

Ajout d'un nouveau pilote au code source de linux

J'ai développé un pilote de périphérique Linux. Pour l'instant, je le compile sur Ubuntu 12.04 avec le compilateur croisé pour arm et je l'incorpore dans mon image Linux arm. Mais je voudrais savoir comment je peux l'ajouter au code source Linux et donner l'option d'ajouter/supprimer à travers la configuration d'arm Linux, de sorte que je puisse le compiler avec la compilation du code source Linux ?

Des idées ?

49voto

Deepak Singh Points 684

Pour compiler votre propre pilote dans l'architecture arm, vous devez suivre les étapes mentionnées ci-dessous.

  1. Créez un répertoire comme my_drvr à l'intérieur de drivers (qui se trouve dans le code source de Linux) pour votre pilote et placez votre fichier de pilote (my_driver.c) à l'intérieur de ce répertoire. Il ressemblera à /linux_source_code/drivers/my_drvr/my_driver.c

  2. Créez un Makefile dans le répertoire de votre pilote (en utilisant vi n'importe quel éditeur) et mettez-y obj-$(CONFIG_MY_DRIVER) += my_driver.o et enregistrer ce fichier. Celui-ci apparaîtra comme suit /linux_source_code/drivers/my_drvr/Makefile

  3. Créer un Kconfig dans le répertoire de votre pilote (en utilisant l'éditeur vi) et à l'intérieur de ce fichier, mettez

    config MY\_DRIVER
    tristate "my driver" //gives your driver description like vendor name etc.
    depends on ARM
    default y if ARM
    help
      my driver module.
  4. Enregistrez ce fichier, il apparaîtra comme suit /linux_source_code/drivers/my_drvr/Kconfig

  5. Ajouter les deux Makefile et Kconfig dans les pilotes source de Linux Makefile et Kconfig qui se trouvent à l'adresse /linux_source_code/drivers/Makefile et /linux_source_code/drivers/Kconfig

  6. Dans le Makefile, ajoutez ce qui suit à la dernière ligne

     obj-y    += my\_drvr/ 

    o

     obj-$(CONFIG\_MY\_DRIVER)   += my\_drvr/
  7. Dans le fichier Kconfig, ajouter ce qui suit à la dernière ligne

    source "drivers/my\_drvr/Kconfig"
  8. Il faut enfin ajouter Kconfig dans le fichier de configuration spécifique à l'architecture, qui se trouve à l'adresse kernel_source/arch/arm/configs/--defconfig dans cette ligne, ajouter la ligne inférieure dans la dernière ligne

    CONFIG\_MY\_DRIVER=y

Note:- La dernière étape diffère selon votre architecture, vous devez donc faire attention. Vous pouvez maintenant compiler votre pilote en utilisant la commande make. (ex : sun7i_defconfig)

7voto

Omair Points 191

Vous devez ajouter une option de configuration dans le fichier Kconfig du sous-répertoire des sources du noyau dans lequel votre pilote de périphérique sera placé. Vous devez également ajouter des lignes au Makefile de ce répertoire. Bien entendu, vous devez également copier les fichiers sources dans ce répertoire.

Puisque votre pilote dépend de l'architecture ARM, dans le Kconfig, vous devez mettre une option de 'depends on' comme :

config SND_ARMAACI
tristate "ARM PrimeCell PL041 AC Link support"
depends on ARM_AMBA

et votre Makefile ressemblera à

obj-$(CONFIG_SND_ARMAACI)   += snd-aaci.o
snd-aaci-objs       := aaci.o

Ainsi, lorsque vous ferez un make menuconfig dans l'arbre des sources de votre noyau, vous trouverez l'option de configuration que vous avez mise dans le Kconfig et vous pourrez la sélectionner pour qu'elle soit compilée dans le noyau ou compilée en tant que module ou pas compilée du tout.

Recherchez des exemples dans le répertoire du sous-système auquel votre pilote est destiné.

3voto

René Kolařík Points 1184

Créer un patch et ajouter l'application de ce patch comme étape après la décompression de l'archive du noyau et avant la configuration/compilation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X