J'ai développé un pilote de périphérique Linux. À partir de maintenant, je le compile sur Ubuntu 12.04 avec un compilateur croisé pour arm, puis je l'insmode dans mon image Linux de bras. Mais je veux savoir comment je peux l'ajouter dans le code source Linux et donner et l'option d'ajouter/supprimer via la configuration d'arm Linux, afin de pouvoir le compiler avec la compilation du code source Linux?
Des idées?
Pour effectuer une compilation croisée de votre propre pilote dans l'architecture de bras, vous devez suivre certaines étapes comme indiqué ci-dessous.
Créez un répertoire comme my_drvr dans les pilotes (qui se trouve dans le code source Linux) pour votre pilote et placez votre fichier de pilote (my_driver.c) dans ce répertoire. Il ressemblera à /linux_source_code/drivers/my_drvr/my_driver.c
Créez un Makefile dans votre répertoire de pilotes (en utilisant vi n'importe quel éditeur) et à l'intérieur de ce put obj-$(CONFIG_MY_DRIVER) += my_driver.o
et enregistrez ce fichier. Cela apparaîtra comme /linux_source_code/drivers/my_drvr/Makefile
Créez un fichier Kconfig
dans votre répertoire de pilotes (en utilisant vi n'importe quel éditeur) et dans ce put
config MY_DRIVER tristate "mon pilote" // donne la description de votre pilote comme le nom du fournisseur, etc. dépend du BRAS par défaut y si le BRAS aide mon module de pilote.
Enregistrez ce fichier, cela apparaîtra comme /linux_source_code/drivers/my_drvr/Kconfig
Ajoutez les fichiers Makefile
et Kconfig
dans les fichiers source des pilotes Linux Makefile
et Kconfig
qui sont à /linux_source_code/drivers/Makefile
Et /linux_source_code/drivers/Kconfig
Dans le Makefile, ajoutez ci-dessous à la dernière ligne
obj-y + = my_drvr /
ou
obj - $ (CONFIG_MY_DRIVER) + = my_drvr /
Dans le fichier Kconfig, ajoutez ci-dessous à la dernière ligne
source "drivers/my_drvr/Kconfig"
Enfin, vous devez ajouter le fichier Kconfig
dans le fichier de configuration spécifique à l'architecture qui sera à kernel_source/Arch/arm/configs/--defconfig
Dans cette ligne d'ajout ci-dessous dans la dernière
CONFIG_MY_DRIVER = y
Remarque: - La dernière étape sera différente en fonction de votre architecture, de sorte que vous devez faire attention. Vous pouvez maintenant compiler votre pilote en utilisant la commande make. (par exemple: Sun7i_defconfig)
Vous devez ajouter une option de configuration dans le fichier Kconfig du sous-répertoire source du noyau dans lequel votre pilote de périphérique sera placé. Vous devez également ajouter des lignes au Makefile de ce répertoire. De toute évidence, vous devez également copier les fichiers source dans ce répertoire.
Puisque votre pilote dépend de l'architecture ARM, dans le Kconfig, vous devez mettre une option de 'dépend de' 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
Alors maintenant, quand vous faites un make menuconfig dans votre arbre source du noyau, vous trouverez l'option de configuration que vous mettez dans le Kconfig et vous pourrez le sélectionner pour être compilé dans le noyau ou construit en tant que module ou pas compilé du tout.
Recherchez des exemples dans le répertoire du sous-système auquel votre pilote est destiné.
Créez un patch et ajoutez l'application de ce patch comme une étape après la décompression de l'archive tar du noyau et avant la configuration/compilation.