- Nazwa przedmiotu:
- Sterowniki urządzeń - podstawy programowania
- Koordynator przedmiotu:
- dr inż. Wojciech Zabołotny
- Status przedmiotu:
- Fakultatywny dowolnego wyboru
- Poziom kształcenia:
- Studia II stopnia
- Program:
- Elektronika
- Grupa przedmiotów:
- Przedmioty techniczne - podstawowe
- Kod przedmiotu:
- STER
- Semestr nominalny:
- 1 / rok ak. 2019/2020
- Liczba punktów ECTS:
- 5
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- Obecność na wykładzie: 30 godzin
Konsultacje projektowe: 30 godzin
Zapoznanie się z literaturą: 20 godzin
Samodzielna praca nad projektem: 45 godzin
Łączny nakład pracy studenta: 125 godzin (5 ECTS)
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- Obecność na wykładzie: 30 godzin
Konsultacje projektowe: 30 godzin
Łącznie: 60 godzin (2 ECTS)
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- Samodzielna praca nad projektem: 45 godzin
Konsultacje projektowe: 30 godzin
Łącznie: 75 godzin (3 ECTS)
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład30h
- Ćwiczenia0h
- Laboratorium0h
- Projekt30h
- Lekcje komputerowe0h
- Wymagania wstępne:
- Studenci powinni posiadać umiejętność programowania w języku C oraz podstawową znajomość systemu UNIX (ewentualnie Linux). Wskazana jest znajomość języka angielskiego na poziomie pozwalającym korzystać z literatury anglojęzycznej.
- Limit liczby studentów:
- 30
- Cel przedmiotu:
- Celem przedmiotu jest poznanie podstawowych zagadnień związanych z tworzeniem sterowników urządzeń dla współczesnych systemów operacyjnych oraz zdobycie praktycznej umiejętności tworzenia sterowników dla jednego z systemów operacyjnych dostępnych dla platformy sprzętowej PC lub typowych systemów wbudowanych.
- Treści kształcenia:
- W trakcie wykładu jest omawiana rola i struktura sterowników urządzeń w typowych systemach operacyjnych o różnej architekturze. Są uwzględnione różne rodzaje urządzeń (znakowe, blokowe, interfejsy sieciowe). Jest omawiana implementacja procedur obsługujących różne metody komunikacji między procesorem systemu a urządzeniami peryferyjnymi. Szczególna uwaga jest zwracana na problemy związane z wielozadaniowością i wielowątkowością oraz obsługą przerwań i DMA.
Zdobyta w trakcie wykładu wiedza jest weryfikowana i ugruntowana praktycznie w trakcie realizacji projektu, który obejmuje stworzenie nowego sterownika urządzenia dla wybranego systemu operacyjnego.
Treść wykładu:
1. Rola sterowników urządzeń. Architektura współczesnych systemów operacyjnych, systemy z jądrem monolitycznym, z mikrojądrem i z jądrem modularnym.
2. Współczesne systemy operacyjne, sprzętowe mechanizmy ochrony udostępniane przez procesory i ich wykorzystanie przez systemy operacyjne. Techniki dostępu do urządzeń zewnętrznych z uwzględnieniem mechanizmów ochrony.
3. Podstawowa struktura sterowników w wybranych systemach operacyjnych.
Klasy urządzeń – znakowe, blokowe, interfejsy sieciowe.
Przykładowy sterownik urządzenia znakowego.
Interfejs aplikacji sterownika urządzeń. Korzystanie z urządzenia przez programy użytkownika.
4. Techniki uruchamiania i testowania sterowników urządzeń w różnych konfiguracjach sprzętowych. Wykorzystanie narzędzi symulacyjnych (QEMU, OVP) do uruchamiania i testowania sterowników
5. Zarządzanie pamięcią we współczesnych systemach operacyjnych. Korzystanie z mechanizmów zarządzania pamięcią przez sterowniki urządzeń.
Przekazywanie danych między przestrzenią jądra a przestrzenią użytkownika.
6. Podstawowe metody komunikacji urządzeń peryferyjnych z systemami komputerowymi (pamięć, porty I/O).
Metody implementacji procedur obsługi przerwań w systemach operacyjnych. Priorytet przerwań. Problemy związane z czasem reakcji systemu na przerwanie.
7. Realizacja zależności czasowych w sterownikach urządzeń.
Wielozadaniowość, współbieżność, wielowątkowość i ich wpływ na programowanie sterowników urządzeń. Problemy związane z tworzeniem sterowników dla systemów wieloprocesorowych.
8. Zaawansowane mechanizmy wymiany danych. Problemy związane z DMA i dzieleniem dostępu do magistrali systemowej.
9. Przydzielanie zasobów (przestrzeni adresowej, przerwań itp.) urządzeniom peryferyjnym. Magistrale PCI i PCI Express jako przykład rozwiązania
10. Sterowniki urządzeń blokowych.
11. “Wielowarstwowe” sterowniki urządzeń. Komunikacja między sterownikami w obrębie jądra systemu.
12. Sterowniki urządzeń sieciowych.
13. Sterowniki systemów plików.
14. Sterowniki urządzeń współpracujących z interfejsem USB.
15. Sterowniki urządzeń podłączanych do magistral typowych dla systemów wbudowanych (I2C, SPI itp.). Narzędzia i biblioteki usprawniające tworzenie sterowników urządzeń.
Projekt obejmuje stworzenie i uruchomienie nowego sterownika urządzenia dla jednego z omawianych systemów operacyjnych (Linux, FreeBSD). Projekt może być realizowany na typowej platformie PC, lub na systemie wbudowanym. W uzasadnionych przypadkach możliwa jest realizacja projektu w środowisku emulowanym (QEMU lub OVP + model urządzenia).
Projekt może także dotyczyć urządzeń wirtualnych lub np. sterownika nowego systemu plików, albo poważnej modyfikacji istniejących sterowników.
Niezależnie od przygotowanego zestawu tematów projektów, możliwe będzie zgłoszenie przez studenta własnego tematu, pod warunkiem, że będzie on oryginalny i będzie możliwa jego weryfikacja (ze względu na możliwości sprzętowe).
- Metody oceny:
- Ocena wystawiana jest na podstawie zrealizowanego projektu. Ocena projektu obejmuje: demonstrację działającego projektu, analizę implementacji i dokumentacji oraz dyskusję ze studentem nad zastosowanymi rozwiązaniami
- Egzamin:
- nie
- Literatura:
- 1. Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman, "Linux Device Drivers, 3rd Edition", O'Reilly Media, 2005, dostępne on-line: http://lwn.net/Kernel/LDD3/
2. Robert Lowe, “Linux Kernel Development”, Sams Publishing, 2003
3. Robert Lowe, "Linux Kernel. Przewodnik programisty", Helion, 2004
4. Daniel P. Bovet, Marco Cesati, "Understanding the Linux Kernel Third Edition", O'Reilly Media, 2005,
5. Oracle Solaris "Writing Device Drivers", dostępne on-line: http://docs.oracle.com/cd/E19082-01/819-3196/index.html
6. "Windows Driver Development", Microsoft, dostępne on-line:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff557573
- Witryna www przedmiotu:
- https://eres.elka.pw.edu.pl/eres/wwersje$.startup?Z_ID_PRZEDMIOTU=STER
- Uwagi:
Efekty uczenia się
Profil ogólnoakademicki - wiedza
- Charakterystyka W1
- Posiada wiedzę na temat funkcji sterowników urządzeń oraz typowych klas urządzeń (znakowe, blokowe, interfejsy sieciowe) oraz systemów plików
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_W02, K_W03, K_W04, K_W05
Powiązane charakterystyki obszarowe:
- Charakterystyka W2
- Posiada wiedzę na temat mechanizmów zapewniających wydajną komunikację między urządzeniami peryferyjnymi i jądrem systemu oraz aplikacjami użytkownika
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_W02, K_W03, K_W04, K_W05
Powiązane charakterystyki obszarowe:
- Charakterystyka W3
- Posiada wiedzę na temat mechanizmów zapewniających właściwą synchronizację wątków przy obsłudze przerwań oraz w systemach wieloprocesorowych
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_W02, K_W03, K_W04, K_W05
Powiązane charakterystyki obszarowe:
- Charakterystyka W4
- Posiada wiedzę o mechanizmach ochrony oraz mechanizmach zarządzania pamięcią oraz sposobach ich wykorzystania przy tworzeniu sterowników urządzeń
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_W04
Powiązane charakterystyki obszarowe:
- Charakterystyka W5
- Posiada wiedzę o typowych magistralach wejścia/wyjścia we współczesnych komputerach i systemach wbudowanych i o zasadach tworzenia sterowników urządzeń podłączonych do tych magistral
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_W02, K_W03, K_W04, K_W05
Powiązane charakterystyki obszarowe:
- Charakterystyka W6
- Posiada wiedzę o narzędziach umożliwiających efektywne testowanie i uruchamianie kodu sterowników
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_W02, K_W03, K_W04, K_W06
Powiązane charakterystyki obszarowe:
Profil ogólnoakademicki - umiejętności
- Charakterystyka U1
- Potrafi studiować literaturę i dokumentację zarówno polskojęzyczną, jak i anglojęzyczną w celu uzupełnienia wiedzy
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_U01, K_U05
Powiązane charakterystyki obszarowe:
- Charakterystyka U2
- Potrafi skorzystać z forów i list dyskusyjnych w celu uzyskania wiedzy wykraczającej poza dokumentację i literaturę
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_U02, K_U05, K_U12
Powiązane charakterystyki obszarowe:
- Charakterystyka U3
- Potrafi analizować kod jądra systemu i istniejących sterowników w celu właściwego wyboru rozwiązań
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_U01, K_U12, K_U13
Powiązane charakterystyki obszarowe:
- Charakterystyka U4
- Potrafi wybrać właściwe rozwiązania do realizacji kodu projektowanego sterownika, potrafi go zaimplementować i uruchomić
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_U07, K_U08, K_U10, K_U13
Powiązane charakterystyki obszarowe:
- Charakterystyka U5
- Potrafi stworzyć aplikację umożliwiającą przetestowanie tworzonego sterownika i opracować scenariusz jego testowania
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_U16, K_U07, K_U08, K_U09, K_U10, K_U12, K_U13, K_U14, K_U15
Powiązane charakterystyki obszarowe:
Profil ogólnoakademicki - kompetencje społeczne
- Charakterystyka K1
- Potrafi rozwiązać zadanie projektowe, rozumiejąc wymagania, potrafiąc wybrać rozwiązania pasujące do wymagań i istniejących ograniczeń
Weryfikacja: Projekt, omówienie projektu
Powiązane charakterystyki kierunkowe:
K_K01
Powiązane charakterystyki obszarowe: