[Beijing Xunwei] Test de fonctionnement expérimental du sous-système i.MX6ULL Terminator Linux INPUT

1 Compilez le pilote

Un fichier Makefile est nécessaire comme le programme de test du pilote dans le chapitre précédent, mais la valeur de obj-m est changée en key_input.o. Le contenu du fichier Makefile est le suivant:

KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga
CURRENT_PATH := $(shell pwd)
obj-m := key_input.o

build: kernel_modules
kernel_modules: 
        $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:
        $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean

Tout d'abord, nous entrons deux commandes dans le terminal (définissez deux variables d'environnement):

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-

Exécutez ensuite la commande "make" pour compiler le module, et le fichier du module key_input.ko est généré une fois la compilation terminée.

2 Compilez le programme de test de l'application

Entrez la commande suivante pour compiler le programme de test d'application: Une fois la
arm-linux-gnueabihf-gcc -o key_input_test key_input_test.c
compilation terminée, le fichier exécutable key_input_test sera généré.

3 Exécutez le test

Démarrez la carte de développement, copiez le fichier du module key_input.ko compilé et l'application key_input_test dans le répertoire /lib/modules/4.1.15 (vérifiez s'il y a "/lib/modules/4.1.15" dans le système de fichiers racine du développement board Directory, si vous n'en avez pas, vous devez le créer vous-même. La carte de développement utilise le système de fichiers busybox fourni dans les données du CD et les données du CD "i.MX6UL Terminator CD data \ 08_development board system image \ 03_file image système \ 01_Busybox file system »). Avant de charger les fichiers du module du pilote, regardez quels fichiers se trouvent dans le répertoire / dev / input. Le résultat est illustré dans la Figure 3.1:
Insérez la description de l'image ici

Graphique 3.1

Il existe de nombreux événements d'événements dans le répertoire / dev / input, puis entrez la commande suivante pour charger le module:

depmod
modprobe key_input

Une fois le pilote chargé, jetons un coup d'œil aux fichiers dans le répertoire / dev / input. Le résultat est illustré dans la figure 3.2:
Insérez la description de l'image ici

Graphique 3.2

On peut voir qu'il existe un fichier event3 supplémentaire, donc / dev / input / event3 est le fichier de périphérique correspondant au pilote que nous avons enregistré. Ensuite, l'application key_input_test obtient les informations d'événement d'entrée en lisant le fichier de périphérique / dev / input / event 3. La commande de test est la suivante:
./key_input_test /dev/input/event3
Appuyez sur la touche KEY0 de la carte de développement, il y a un phénomène dans la figure 3.3:
Insérez la description de l'image ici

Graphique 3.3

On peut voir que lorsque nous appuyons ou relâchons un bouton sur la carte de développement, le contenu correspondant sera affiché sur le terminal, nous indiquant quel bouton a été enfoncé ou relâché. Dans le noyau Linux, KEY_0 vaut 11.
De plus, nous pouvons également tester le lecteur sans utiliser l'application key_input_test. Vous pouvez directement utiliser la commande hexdump pour afficher le contenu du fichier / dev / input / event3, et entrer la commande suivante:
`` `hexdump / dev / input / event3 ``
Développement de la presse Le bouton KEY0 sur la carte présente le phénomène illustré à la Figure 3.4:
Insérez la description de l'image ici

Graphique 3.4

L'image ci-dessus est la valeur de données d'événement d'origine de type input_event, exprimée en hexadécimal, la signification de ces données d'origine est la suivante:

/*****************input_event 类型********************/ 
/* 编号 */  /* tv_sec */  /* tv_usec */  /* type */  /* code */  /* value */ 
0000000     1029 5d5e   2c16 0008     0001       000b     0001 0000
0000010     1029 5d5e   2c16 0008     0000       0000     0000 0000
0000020     1029 5d5e   761f 000a     0001       000b     0000 0000
0000030     1029 5d5e   761f 000a     0000       0000      0000 0000

type est le type d'événement, la valeur de l'événement EV_KEY est 1 et la valeur de l'événement EV_SYN est 0. Par conséquent, la première ligne représente l'événement EV_KEY et la deuxième ligne représente l'événement EV_SYN. code est le code d'événement, c'est-à-dire le numéro de clé. Le numéro de clé de KEY_0 est 11 et le nombre hexadécimal correspondant est 0xb. Par conséquent, la première ligne représente l'événement clé de KEY_0 et la dernière valeur est la valeur de clé. 1 signifie appuyer, qui est 0 signifie relâcher.
Pour résumer, la signification de la valeur d'événement d'origine dans la figure ci-dessus est la suivante:
Ligne 1, l'événement de pression de touche (KEY_0).
Ligne 2, événement de synchronisation EV_SYN, car chaque fois qu'un événement clé est signalé, un événement EV_SYN doit être signalé de manière synchrone
.
À la ligne 3, l'événement de libération de clé (KEY_0).
Ligne 4, événement de synchronisation EV_SYN, identique à la ligne 2.

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/BeiJingXunWei/article/details/112213266
conseillé
Classement