Un simple pilote de périphérique caractère
J'ai écrit un simple caractère pilote de périphérique & voulait cross-compiler pour craneboard (architecture ARM). Mon nom de fichier est gDev.c
. J'ai copié le fichier de kernel/drivers/char
répertoire dans craneboard source. J'ai modifié le Kconfig
fichier dans le même répertoire & ajouté les lignes suivantes.
config TEST_GCHARD
tristate "My Character driver"
default m
J'ai ajouté la ligne suivante dans le fichier Makefile dans le même répertoire.
obj-$(CONFIG_TEST_GCHARD) += gDev.o
J'ai ajouté la ligne suivante dans le am3517_crane_defconfig
dans arch/arm/configs
répertoire.
CONFIG_TEST_GCHARD=m
Mon problème est que quand je l'ai mis comme m
dans am3517_crane_defconfig
, le fichier n'est pas inclus pour la compilation. Mais, si je le modifier comme y
, il est compilé. Mais, j'ai besoin d'un module qui je dois insmod
après le conseil des bottes. Merci de me guider si je suis absent de toutes les étapes. Merci.
OriginalL'auteur Gomu | 2013-09-13
Vous devez vous connecter pour publier un commentaire.
C'est parce que vous avez à construire les modules dans un processus distinct:
Aussi, vous pouvez les installer avec:
Si ce n'est pas pour votre propre système, mais pour un autre, comme un imbriqués les uns, il le faut "installer" dans un répertoire spécifique qui vous permettra de copier ensuite sur la cible, à l'aide de
INSTALL_MOD_PATH
:distclean
en premier, suivi param3517_crane_defconfig
et enfinuImage
. Maintenant, lamodules
doit être administrée entre l'am3517_crane_defconfig
etuImage
commandes. Suis-je le droit?Je n'ai
make distclean
, suivie parmake am3517_crane_defconfig
et enfinmake all uImage
. Il a compilé tout, y compris les modules etuImage
a été créé. J'ai copié sur la carte SD & après qu'elle eut démarré, j'ai essayéinsmod gDev.ko
. J'ai eu une erreurNo such file or directory
.A
gDev.ko
dans votre répertoire de travail? Si oui, essayez de gzipping (gzip -f gDev.ko
) et de faireinsmod gDev.ko.gz
.Pouvez-vous me dire quel chemin je dois donner dans INSTALL_MOD_PATH? J'ai de la racine du système de fichiers dans un répertoire séparé. Faut-il point? Si oui, dans quel répertoire? /lib/modules? Ou /tmp comme vous l'avez mentionné?
J'ai donné le INSTALL_MOD_PATH vers le répertoire rootfs. Mais, la encore, après le conseil des bottes, j'ai besoin d'aller à l'emplacement exact
/lib/modules/2.6.32/kernel/drivers/char
à insmod le module. Est-il un autre moyen pour insmod à partir de n'importe quel emplacement? Merci.OriginalL'auteur eepp
ici, va le pilote dans megharajchard.c
Faire pour le même.
charger le script
décharger script
D'une application C pour tester les fonctionnalités du pilote.
OriginalL'auteur Megharaj