Formål
Linux' input system lader os nemt anvende diverse HID'er i
vores applikationer. Ved at registrere vores driver med input systemet, kan
f.eks. et ADC input anvendes til at drive systems mus input.
Øvelsen
I første omgang vil vi prøve at lege lidt med eksemplet fra
bogen (ELDD): virtual mouse. Vi kompilerer driveren, indsætter den i kernen og
lader udev + evdev registrerer den, således at X11 kan anvende den og lade os
styre cursoren via driveren. Vi kan nu give inputs til den virtuelle mus ved at
skrive til dens virtuelle-input fil. Dette resulterer i at cursoren bevæger
sig.
En virkelig input driver tager input fra f.eks en analog spænding, gpio knapper, you-name-it og får disse omsat til evdev events som kan bruges som input til gpm/X11/QT serveren.
En virkelig input driver tager input fra f.eks en analog spænding, gpio knapper, you-name-it og får disse omsat til evdev events som kan bruges som input til gpm/X11/QT serveren.
a) Kompilere og test virtuel mus driver på PC (linux)
For at kompilere driverne til pc’en skal vi installere skal
man normalt installere noget på hele kernetræet, men i dette tilfælde er det nok med kun at
installere header filerne til den kørende driver.
Af praktiske årsager starter vi med at gør følgende:
sudo apt-get update
sudo apt-get install linux-image-generic
linux-headers-generic
PC’en genstartes efterfølgende.
Hernæst udfører vi følgende steps for at kompilerer den
virtuelle mus til PC:
Skifter directory til vms, som er hentet fra campus svn:
STEP 1.
cd vms
Maker:
STEP 2.
make
Tjekker hvilke input devices jeg har på min PC:
STEP 3.
ls –l /dev/input
Terminal output
Driveren indsættes i Linux på PC’en:
Terminal output
Udev og Edev har nu gjort arbejedet og derfor burdes X11 kunne detektere events fra den virtuelle mus, vha. følgende input kommando:
b) Kompilere og test virtuel mus driver på target
Driveren indsættes i Linux på PC’en:
STEP 4.
sudo insmod vms.ko
Input devices tjekkes igen:
STEP 5.
ls –l /dev/input
Terminal output
Udev og Edev har nu gjort arbejedet og derfor burdes X11 kunne detektere events fra den virtuelle mus, vha. følgende input kommando:
STEP 6.
echo <x> <y> <z> > /sys/devices/platform/vms/coordinates
ex: echo 10 10 0 > /sys/devices/platform/vms/coordinates
ex: echo 10 10 0 > /sys/devices/platform/vms/coordinates
RESULTAT: Testet på pc og det
virker. Cursoren bevæger sig.
b) Kompilere og test virtuel mus driver på target
For at kompilere til target gælder samme regler som for
PC’en.
Men før vi kan kompilere er det vigtigt at oprette vms.ko filen som dernæst overføres til
target:
cd vms
make target
scp vms.ko root@10.9.8.2:
Derefter udføres følgende steps:
Tjekker hvilke input devices jeg har på min target:
STEP 1.
ls –l /dev/input
Driveren indsættes på target:
STEP 2.
insmod vms.ko
Input devices tjekkes igen:
STEP 3.
ls –l /dev/input
Vi kan se at der er blevet oprettet en ekstra mus ”mouse3”
samt en ekstra event ”event5” ligesom da vi indsatte driveren på PC’en. Men for
at teste om det overhovedet fungerer, skal vi have et grafisk programe til at
kører på target. Derfor overføres et Qt program til target. Qt skal vide hvilke
input den skal benyttet som keyboard, mus osv., dette er angivet i nogle system
variabler. Herunde er variablen som benyttes til mus(mouse):
STEP 4.
QWS_MOUSE_PROTO
Herunder anvendes kommandoen til at bestemme mouse inputtet
for Qt på target:
STEP 5.
export
QWS_MOUSE_PROTO=”Tslib:/dev/input/touchscreen0 InstallMouse: /dev/input/mouse3”
Qt appliaktionen startes på target, der tilføjes ”&” så
applikationen kører i baggrunden og vi efterfølgende kan indtaste kommandoen i
samme terminal til at bevæge musen:
STEP 6.
./qt_test2 –qws &
Kommando til at bevæge musen:
STEP 7.
echo 10 10 0 >
/sys/devices/platform/vms/coordinates
RESULTAT: Testet på target og det virker. Cursoren bevæger
sig.


No comments:
Post a Comment