This shows you the differences between two versions of the page.
so2:laboratoare:lab05 [2018/03/18 14:45] anda.nicolae [Locking] |
so2:laboratoare:lab05 [2018/03/18 19:00] (current) anda.nicolae [Controller tastatură] |
||
---|---|---|---|
Line 124: | Line 124: | ||
După ce un driver a obținut intervalul de porturi I/O dorite, trebuie să realizeze operații de citire sau scriere pe aceste porturi. Întrucât porturile fizice sunt diferențiate după numărul de biți (8, 16 sau 32 de biți), există diferite funcții de acces a porturilor în funcție de dimensiunea lor. În ''[[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h|asm/io.h]]'' sunt definite următoarele funcții de acces a porturilor: | După ce un driver a obținut intervalul de porturi I/O dorite, trebuie să realizeze operații de citire sau scriere pe aceste porturi. Întrucât porturile fizice sunt diferențiate după numărul de biți (8, 16 sau 32 de biți), există diferite funcții de acces a porturilor în funcție de dimensiunea lor. În ''[[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h|asm/io.h]]'' sunt definite următoarele funcții de acces a porturilor: | ||
- | * ''u8 [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L360|inb]](int port)'', citește porturi de dimensiune un octet (8 biți) | + | * ''u8 [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L360|inb]](unsigned long addr)'', citește porturi de dimensiune un octet (8 biți) |
- | * ''void [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L384|outb]](unsigned char byte, int port)'', scrie porturi de dimensiune un octet (8 biți) | + | * ''void [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L384|outb]](u8 value, unsigned long addr)'', scrie porturi de dimensiune un octet (8 biți) |
- | * ''u16 [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L368|inw]](int port)'', citește porturi de dimensiune doi octeți (16 biți) | + | * ''u16 [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L368|inw]](unsigned long addr)'', citește porturi de dimensiune doi octeți (16 biți) |
- | * ''void [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L392|outw]](unsigned short word, int port)'', scrie porturi de dimensiune doi octeți (16 biți) | + | * ''void [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L392|outw]](u16 value, unsigned long addr)'', scrie porturi de dimensiune doi octeți (16 biți) |
- | * ''u32 [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L376|inl]](int port)'', citește porturi de dimensiune patru octeți (32 biți) | + | * ''u32 [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L376|inl]](unsigned long addr)'', citește porturi de dimensiune patru octeți (32 biți) |
- | * ''void [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L400|outl]](unsigned long word, int port)'', scrie porturi de dimensiune patru octeți (32 biți) | + | * ''void [[https://elixir.bootlin.com/linux/v4.15/source/include/asm-generic/io.h#L400|outl]](u32 value, unsigned long addr)'', scrie porturi de dimensiune patru octeți (32 biți) |
Argumentul port specifică adresa portului de unde se citește sau se scrie, iar tipul său este dependent de platformă (poate fi ''unsigned long'' sau ''unsigned short''). | Argumentul port specifică adresa portului de unde se citește sau se scrie, iar tipul său este dependent de platformă (poate fi ''unsigned long'' sau ''unsigned short''). | ||
Line 427: | Line 427: | ||
==== Port paralel ==== | ==== Port paralel ==== | ||
- | * [[http://elf.cs.pub.ro/so2/res/lab06/Port_paralel.pdf|Documentație port paralel]] | ||
- | * [[http://elf.cs.pub.ro/so2/res/lab06/Par_control_lin.zip|Program de test pentru portul paralel (Linux)]] | ||
* [[http://www.beyondlogic.org/spp/parallel.htm|Interfacing the Standard Parallel Port]] | * [[http://www.beyondlogic.org/spp/parallel.htm|Interfacing the Standard Parallel Port]] | ||
- | * [[http://www.lvr.com/parport.htm|Parallel Port Central]] | ||
- | * [[ftp://ftp.armory.com/pub/user/rstevew/LPT/|Resurse suplimentare port paralel]] | ||
==== Controller tastatură ==== | ==== Controller tastatură ==== | ||
* [[http://en.wikipedia.org/wiki/Intel_8042|Intel 8042]] | * [[http://en.wikipedia.org/wiki/Intel_8042|Intel 8042]] | ||
- | * [[http://gunnarwrobel.de/wiki/Linux-and-the-keyboard.html|Linux and the keyboard]] | + | * [[https://elixir.bootlin.com/linux/v4.15/source/drivers/input/serio/i8042.c|drivers/input/serio/i8042.c]] |
- | * [[http://lxr.linux.no/linux+v2.6.32/drivers/input/serio/i8042.c|drivers/input/serio/i8042.c]] | + | * [[https://elixir.bootlin.com/linux/v4.15/source/drivers/input/keyboard/atkbd.c|drivers/input/keyboard/atkbd.c]] |
- | * [[http://lxr.linux.no/linux+v2.6.32/drivers/input/keyboard/atkbd.c|drivers/input/keyboard/atkbd.c]] | + | |
==== Linux ==== | ==== Linux ==== |