Øvelses Steps
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) Vi starter i Ubuntu. For at kunne kompilere driverne til din pc. er der en række kerne specifikke filer der skal være på plads. Normalt vil det sige hele kernetræet, men her er det tilstrækkeligt med at installere header filerne til den kørende. Af praktiske grunde er det smartes at udføre samtlige 3 kommandoer nedenfor.
sudo apt-get
update
sudo apt-get
install linux-image-generic linux-headers-generic
Bemærk at hvis der installeres en ny
linux-image-generic pakke, skal I lige genstarte jeres linux bagefter
installationen.
Herefter kompilerer du den virtuelle mus
driver:
cd vms
make
Check hvilke input devices som du har på
din PC
ls -l /dev/input
Indsæt driveren i Linux på PC'en (Ubuntu)
sudo insmod vms.ko
Check igen dine input devices
ls -l /dev/input
-Her skulle gerne være blevet tilføjet et
nyt som hedder mouseXYZ.
Udev og Evdev har nu lavet arbejdet under
kølerhjelmen og X11 burde kunne detektere events fra den virtuelle mus.
Der ses en mouse3 i stedet for mouseXYZ.
Prøv nu at give den virtuelle mus inputs:
echo <x>
<y> <z> > /sys/devices/platform/vms/coordinates
ex:
echo 10 10 0 >
/sys/devices/platform/vms/coordinates
Cursoren skulle gerne bevæge sig nu.
Bevæger sig mod nedre højre hjørne.
b) Nu skal vi prøve på target. Først kompilerer mm vi modulet til Devkit8000:
cd vms
make target
scp vms.ko
root@10.9.8.2:
Som med Ubuntu, check nu på target hvilke
input devices som eksisterer før du indsætter driveren:
ls -l /dev/input
Indsæt driveren og noter mouse nr
insmod vms.ko
ls -l /dev/input
Nu mangler vi blot en grafisk applikation
at prøve det på. Kopier QT applikationen
qt_test2 til target:
cd qt/qt_test2
scp qt_test2
root@10.9.8.2:
QT skal vide hvilke input den skal benytte
som keyboard, mouse etc. Dette er angivet i nogle system variable, QWS_MOUSE_PROTO og
QWS_KEYBOARD Se opsætningen for mouse:
echo $QWS_MOUSE_PROTO
Outputtet fortæller os at den benytter
event driveren "tslib" og et device som ligger under
/dev/input/eventX. Vi vil nu tilføje vores virtuelle mus som input til system
variablen (erstat XYZ med nummeret fundet før):
export
QWS_MOUSE_PROTO="Tslib:/dev/input/touchscreen0
IntelliMouse:/dev/input/mouseXYZ"
Start QT applikationen på target:
./qt_test2 -qws
Bemærk hvordan at vi kan flytte på
slideren vha touch screen og at progress bar'en flytter sig tilsvarende. Vi vil
nu prøve at påvirke den virtuelle mus.
Opret en ny ssh forbindelse til target og skriv nogle nye relative koordinater til musen:
Opret en ny ssh forbindelse til target og skriv nogle nye relative koordinater til musen:
ssh root@10.9.8.2
echo 10 10 0 >
/sys/devices/platform/vms/coordinates
Det ses at musen bevæger sig







Ingen kommentarer:
Send en kommentar