Programowanie sterowników urządzeń w jądrze Linux - Linux Device Drivers Development

Kurs na praktycznych przykładach dostarcza wiedzę niezbędną do rozpoczęcia projektowania i implementacji sterowników urządzeń w jądrze Linux. Omawiana jest organizacja kodu źródłowego sterowników, sposoby komunikacji jądra z przestrzenią użytkownika, usługi i mechanizmy dostarczane przez jądro sterownikom, oraz sposoby debugowania kodu. Praktyczne ćwiczenia przeprowadzane są na komputach o architekturze ARM, zarówno fizycznyh, jak i emulowanych.

Cel szkolenia:

  • poznanie zasad działania jądra Linux;
  • poznanie sposobów analizowania i debugowania jądra;
  • poznanie algorytmów, mechanizmów i ich warstw: planisty, wywołań systemowych, zarządzania pamięcią;
  • poznanie zasad i dobrych praktyk związanych z tworzeniem sterowników w Linuksie;
  • wykształcenie praktycznych umiejętności pisania sterowników (obsługi pamięci, przerwań, komunikacji z przestrzenią użytkownika, współbieżności itp.);
  • poznanie frameworków dostarczanych przez jądro: model sterowników urządzeń, urdządzenia klas: misc, input, net, framebuffer i inne;
  • nabycie praktycznych umiejętności programowa w jądrze, debugowania go i rozwiązywania problemów.

Program szkolenia:

  • Wprowadzenie do programowania w jądrze Linux.
  • Przygotowanie środowiska pracy, programy pomocnicze i ich wersje.
  • Praca z kodem źródłowym jądra i zewnętrznych modułów w środowisku Eclipse.
  • Uruchamianie jądra systemu, rola bootloadera. U-BOOT.
  • Moduły jądra - zarządzanie modułami, organizacja kodu jądra.
  • Zarządzanie pamięcią, przestrzeń adresowa, alokacja pamięci, działanie systemu w środowisku z niewystarczającą ilością pamięci (kmalloc, kzalloc, vmalloc, get_free_pages, ioremap, SLAB, SLUB, SLOB, oom_killer)
  • Komunikacja ze sprzętem (wejście-wyjście).
  • Komunikacja z przestrzenią użytkownika: wywołania systemowe. Działanie wywołań systemowych w architekturach x86 i ARM.
  • Procesy: pamięć wirtualna, przestrzeń adresowa procesu, cykl życia procesu, tworzenie procesu, atrybuty procesu, task_struct, implementacja wątków.
  • Planista: O(1), CFQ, cgroup, implementacja planisty, klasy szeregowania procesów (SCHED_OTHER, SHCED_FIFO, SCHED_RR, SCHED_DEADLINE), priorytety procesów, afiniczność.
  • Wirtualny system plików - budowa i implementacja.
  • Zaawansowane operacje na plikach w VFS - komunikacja z przestrzenią użytkownika - metody synchroniczne i asynchroniczne, ioctl, mmap, AIO.
  • Czas w jądrze systemu: pomiar upływu czasu, wstrzymanie uruchomienia - usypianie na określony czas, oczekiwanie na zdarzenia, timery, timery wysokiej rozdzielczości.
  • Przerwania: sposób obsługi i rejestracji przerwań w jądrze, dolne połówki (softirq, tasklet, workqueue), przerwania w wątkach (RT).
  • Wejście-wyjście oparte na przerwaniach: synchronizacja proces-jądro, waitqueue, przykłady rzeczywistych sterowników,
  • Wielowątkowość i synchronizacja zasobów (zmienne atomowe, mutexy, semafory, spinlock, zmienne warunkowe, algorytmy niewymagające blokowania - RCU).
  • Frameworki dla typowych klas urządzeń.
  • Zunifikowany model urządzeń w Linuksie. W jaki sposób system widzi sprzęt i organizuje urządzenia? Start systemu, magistrala, sterownik magistrali, sterownik kontrolera, urządzenie, automatyczne kojarzenie sterowników z urządzeniami,
  • Magistrala platform. Specyfikowanie urządzeń przy pomocy Device-Tree.
  • Magistrala PCI, specyfika urządzeń i sterowników PCI.
  • Magistrala USB, specyfika urządzeń i sterowników USB.
  • Urządzenia blokowe - struktura sterownika i wydajność.
  • Urządzenia sieciowe - struktura sterownika, kontrola transmisji, interfejs gniazd, strojenie parametrów,
  • Podsystem urządzeń wejściowych interfejsu użytkownika (input).
  • Sterownik bufora ramki (grafika).
  • DMA, zasada działania, alokacja pamięci dla DMA, synchronizacja.
  • Debugowanie jądra systemu.

Szkolenie odbędzie się w dniach 16-19 lutego 2015 r. w Warszawie. Cena - 3500 zł.

Posłuchaj
00:00

http://bis-linux.com/pl/kernel_development

Powiązane treści
Sterowniki silników małej mocy
Języki programowania dla systemów wielordzeniowych
Zobacz więcej w kategorii: Technika
Komunikacja
Moduły komunikacyjne do sieci 5G
Komunikacja
Technologia 5G - kierunki rozwoju
Projektowanie i badania
Nowe możliwości projektowe w Arm Keil MDK v6
Komunikacja
Konserwacja predykcyjna w oparciu o uczenie maszynowe i IIoT
Zasilanie
Kryteria wyboru konwertera DC-DC do aplikacji medycznych
Optoelektronika
Inteligentne wyświetlacze firmy DWIN w ofercie Unisystemu
Zobacz więcej z tagiem: Artykuły
Targi zagraniczne
Międzynarodowa wystawa i warsztaty na temat kompatybilności elektromagnetycznej EMV 2025
Statyczne
Logowanie
Targi krajowe
Warsaw Industry Week 2025 - 9. edycja
Zapytania ofertowe
Unikalny branżowy system komunikacji B2B Znajdź produkty i usługi, których potrzebujesz Katalog ponad 7000 firm i 60 tys. produktów