This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux-kernel-dev:capitole:capitol-07 [2015/09/11 09:31] razvan |
linux-kernel-dev:capitole:capitol-07 [2015/09/11 10:27] (current) razvan [Afișare mesaj de tastă apasată] |
||
---|---|---|---|
Line 12: | Line 12: | ||
===== Exerciții ===== | ===== Exerciții ===== | ||
+ | Arhiva de suport pentru exerciții se găsește [[http://koala.cs.pub.ro/training/res/linux-kernel-dev/arc/cap-07-tasks.zip|aici]]. Descărcați arhiva și apoi decomprimați-o folosind comanda<code> | ||
+ | unzip cap-07-tasks.zip | ||
+ | </code> | ||
==== Captură de tastatură ==== | ==== Captură de tastatură ==== | ||
Line 22: | Line 25: | ||
==== Afișare mesaj de tastă apasată ==== | ==== Afișare mesaj de tastă apasată ==== | ||
- | Actualizați driverul de la punctul anterior pentru a afișa în mesaj tasta care a fost apăsată, în măsura în care este afișabilă (ASCII). Va trebui să folosiți cele două porturi de tastatură (''0x60'' și ''0x64'') și să folosiți funcția ''inb()'' pentru a citi informațiile. În portul/registrul de stare puteți vedea dacă este vorba de o tastă apăsată iar în registrul de date aveți codificare tastei. | + | Actualizați driverul de la punctul anterior pentru a afișa în mesaj tasta care a fost apăsată, în măsura în care este afișabilă (ASCII). Va trebui să folosiți cele portul de date al tastaturii (''0x60'') și să folosiți funcția ''inb()'' pentru a citi informațiile. În portul/registrul de stare puteți vedea dacă este vorba de o tastă apăsată iar în registrul de date aveți codificare tastei. |
+ | |||
+ | <note tip> | ||
+ | Va trebui să implementați funcția ''i8042_read_data()'' pentru a citi valoarea din registrul de date al tastaturii. | ||
+ | |||
+ | În handler-ul de întrerupere (adică în funcția ''kbd_interrupt_handle()'') va trebui să rețineți valoarea citită cu ajutorul funcției ''i8042_read_data()'' și apoi să apelați funcția ''is_key_press()'' și ''get_ascii()''. | ||
+ | |||
+ | Este important să rețineți valoarea registrului într-o variabilă și să **nu** apelați de două sau mai multe ori funcția ''i8042_read_data()''. | ||
+ | </note> | ||
==== Stocare taste apăsate ==== | ==== Stocare taste apăsate ==== |