Sterowniki urządzeń - podstawy programowania Projekt pt

Transkrypt

Sterowniki urządzeń - podstawy programowania Projekt pt
Michał Chmielowiec
Sterowniki urządzeń - podstawy programowania
Projekt pt.
"Sterownik wyświetlacza graficznego z interfejsem SPI dla systemu Raspbian"
1. Sprzęt
- platforma komputerowa Raspberry Pi Model B, opis procesora dostępny pod adresem:
http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
-wyświetlacz telefonu Nokia 3310/5110 ze sterownikiem PCD8544, opis pod adresem:
https://www.sparkfun.com/datasheets/LCD/Monochrome/Nokia5110.pdf
-sposób podłączenia wyświetlacza do płytki komputera:
Ponadto należy wyjście VOUT wyświetlacza podłączyć przez kondensator
elektrolityczny 1-10 uF do masy (GND).
2. Opis najważniejszych funkcji sterownika:
nokia_disp_init()- funckcja rejestruje sterownik w systemie, wyświetla nadany mu
numer "Major" w komunikacie jądra. Ponadto w funkcji następuje mapowanie do
pamięci rejestrów odpowiedzialnych za obsługę sprzętowego
interfejsu SPI
procesora (za pomocą funkcji ioremap). Następnie funkcja wywołuje
trzy
funkcje: set_SPI_function(); set_GPIO_function();
init_disp();
set_SPI_function() - funckja ustawia odpowiednie bity w rejestrach obsługujących
interfejs SPI, między innymi ustalana jest odpowiednia częstotliwość zegara SPI,
soposob przesyłu ramki (bit ustalony jest przy zboczu opadającym), a także aktywny
stan linii CE0 (stan niski);
set_GPIO_function() - w rejestrach obsługujących port GPIO procesora piny GPIO
17 i 18 ustawiane są jako wyjścia;
init_disp() - funkcja ustala na milisekundę stan niski na linii RES resetując
wyświetlacz. Następnie za pomocą funkcji lcd_write_byte() wysyłane są
instrukcje inicjalizujące wyświetlacz (między innymi ystalany jest tryb adresowania
pamięci RAM). Następnie funkcja wywołuje funkcję lcd_clear();
lcd_write_byte() - funkcja za wysyła bajt za pomocą interfejsu SPI ustalając przy
tym odpowiedni stan na linii D/C (dane do pamięci ram lub instrukcja sterująca);
lcd_clear() - funkcja zapisuje zerami całą pamięć RAM wyświetlacza wykorzystująć
funkcję lcd_write_byte();
lcd_text() - funkcja parsuje ciąg znaków szukając odpowiednika każdego znaku w
tablicy font[]. Tablica font zawiera wzory znaków ASCII gotowe do kopiowania
do pamięci wyświetlacza. Niestety wyświetlacz nie posiada trybu tekstowego;
my_write() - funckja kopiuje otrzymany ciąg znaków z przestrzeni użytkownika do
bufora, następnie za pomocą lcd_text() wyświetla je na wyświetlaczu;
my_read() - funckja kopiuje bufor do przestrzeni użytkownika;
nokia_disp_exit(void) – funckja "odmapowuje" pamięć która była zajęta przez
mapowanie na nią rejestrów obsługi SPI.
3. Wykorzystanie sterownika
Aby wykorzystać sterownik należy go skompilować (polecenie make) załadować
poleceniem insmod, odczytać przydzielony numer "Major" poleceniem dmesg oraz
utworzyć plik urządzenia znakowego poleceniem mknod. W plikach źródłowych znajduje
się również prosty program testujący sterownik (test.c), który korzysta z pliku my_dev z
folderu z programem.
4. Efekty pracy

Podobne dokumenty