Szkolenia The Linux Foundation

Cel szkolenia dlearning

kod: LFD435

Ten 4-dniowy kurs ma na celu pokazanie doświadczonym programistom, jak tworzyć sterowniki urządzeń dla wbudowanych systemów Linux i przekazać im podstawowe zrozumienie oraz znajomość jądra Linux.

Po opanowaniu tego materiału będziesz zaznajomiony z różnymi rodzajami sterowników urządzeń używanych w Linux i zostaniesz wprowadzony do wielu odpowiednich interfejsów API, które będą używane podczas pisania sterowników urządzenia. Laboratoria ilustrujące te koncepcje zostaną wykonane na sprzęcie ARM, aby programiści zaznajomili się z kompilacją krzyżową i tworzeniem sterowników. Dołączony zestaw programistyczny (można zachować) zostanie wykorzystany do zilustrowania testowania sterowników jądra przy użyciu technik TFTP i NFSroot.

Omówimy wewnętrzne elementy jądra i algorytmy, ale szczegółowo przeanalizujemy jedynie tylko te funkcje, które są zwykle używane w sterownikach urządzeń. Więcej szczegółów na temat innych zagadnień takich jak planowanie, zarządzanie pamięcią, itp., odnaleźć można w bardziej skoncentrowanym na jądrze kursie.

Plan szkolenia Rozwiń listę

  1. Wprowadzenie
    • Przedmiot szkolenia
    • Cele
    • Linux Foundation
    • Linux Foundation Training
    • Dystrybucje Linux
    • Przygotowanie systemu
    • Rzeczy zmieniają się w Linux
    • Dokumentacja i linki
    • Rejestracja kursu
  2. Czynności przygotowawcze
    • Procedury
    • Wersje jądra
    • Źródła jądra i użycie Git
    • Sprzęt
    • Drzewo inscenizacji
  3. Jak pracować w projektach OSS **
    • Omówienie wniesienia prawidłowego udziału
    • Badanie i zrozumienie DNA projektu
    • Określ czym chcesz się zająć
    • Zidentyfikowanie osób odpowiedzialnych, ich przepływu pracy i metod
    • Uzyskaj wczesne wejście i pracę w otwartym środowisku
    • Przekazuj przyrostowe bity, zamiast dużych fragmentów kodu
    • Zostaw swoje ego przed drzwiami: nie bądź wrażliwy
    • Bądź cierpliwy, rozwijaj relacje długoterminowe, bądź pomocny
  4. Cross-Development Toolchain
    • The Compiler Triplet
    • Wbudowany Linux Distribution Cross Compiler
    • Linaro
    • CodeSourcery
    • Crosstool-ng
    • Buildroot
    • OpenEmbedded
    • Yocto
  5. Podstawowa konfiguracja Target Development Board Setup
    • Cele laboratorium
    • Laboratorium
  6. Uruchamianie Target Development Board przez Ethernet
    • Cele laboratorium
    • Laboratorium
  7. Konfiguracja jądra, kompilacja, uruchamianie<
    • Konfiguracja jądra dla Development Board
    • Laboratorium
  8. Sterowniki urządzeń
    • Typy urządzeń
    • Mechanizm a polityka
    • Unikanie bloków binarnych
    • Zarządzanie energią
    • Jak aplikacje korzystają ze sterowników urządzeń
    • Przechodzenie przez wywołania systemowe dostępu do urządzenia
    • Numery błędów
    • Printk()
    • Devres: Managed Device Resources
    • Laboratorium
  9. Moduły i sterowniki urządzeń
    • Makra module_driver()
    • Moduły i Hot Plug
    • Laboratorium
  10. Zarządzanie pamięcią i alokacją
    • Pamięć wirtualna i fizyczna
    • Strefy pamięci
    • Tabela stron
    • Kmalloc()
    • _get_free_pages()
    • Vmalloc()
    • Płyty i alokacje pamięci podręcznej
    • Laboratorium
  11. Urządzenia znakowe
    • Węzły urządzeń
    • Liczby główne i drugorzędne
    • Rezerwacja dużych/mniejszych numerów
    • Dostęp do węzła urządzenia
    • Rejestracja urządzenia
    • Udev
    • Dev_printk() i Associates
    • Struktura file_operations
    • Punkty wejścia sterowników
    • Struktury plików i Inode
    • Różne sterowniki znaków
    • Laboratorium
  12. Funkcje jądra
    • Komponenty jądra
    • Przestrzeń użytkownika a przestrzeń jądra
    • Czym są wywołania systemowe?
    • Dostępne wywołania systemowe
    • Algorytmy planowania i struktury zadań
    • Kontekst procesu
    • Laboratorium
  13. Przesyłanie między użytkownikiem a przestrzenią jądra
    • Przesyłanie między przestrzeniami
    • Put(get)_user() i copy_to(from)_user()
    • Bezpośredni transfer: Jądro I/O i mapowanie pamięci
    • Jądro I/O
    • Mapowanie stron użytkownika
    • Mapowanie pamięci
    • Funkcje przestrzeni użytkownika dla mmap()
    • Punkt wejścia sterownika dla mmap()
    • Dostęp do plików z jądra
    • Laboratorium
  14. Sterowniki platformy
    • Czym są sterowniki platformy?
    • Główne struktury danych
    • Rejestrowanie urządzeń platformy
    • Przykład
    • Twarde dane platformy
    • Nowa droga: drzewa urządzeń
    • Laboratorium
  15. Drzewa urządzeń
    • Czym są drzewa urządzeń?
    • Co robią a czego nie drzewa urządzeń
    • Składnia drzewa urządzeń
    • Przechodzenie przez drzewa urządzeń
    • Powiązania drzewa urządzeń
    • Obsługa drzewa urządzeń w programach rozruchowych
    • Korzystanie z danych drzewa urządzeń w sterownikach
    • Współistnienie i konwersja starych sterowników
    • Laboratorium
  16. Przerwania i wątki
    • Czym są przerwania i wątki?
    • Wyjątki
    • Przerwania asynchroniczne
    • MSI
    • Aktywowanie/dezaktywowanie przerwań
    • Czego nie można robić w trakcie przerwania
    • Struktura danych IRQ
    • Instalowanie programu obsługi przerwań
    • Laboratorium
  17. Pomiary czasu
    • Rodzaje pomiarów czasu
    • Jiffies
    • Uzyskiwanie aktualnego czasu
    • Źródła zegara
    • Zegar czasu rzeczywistego
    • Programowalny interwalometr
    • Licznik znaczników czasu
    • HPET
    • Going Tickless
  18. Zegary jądra
    • Wstawianie opóźnień
    • Czym są zegary jądra?
    • Funkcje zegara o niskiej rozdzielczości
    • Implementacja zegara o niskiej rozdzielczości
    • Zegary wysokiej rozdzielczości
    • Korzystanie z zegarów wysokiej rozdzielczości
    • Laboratorium
  19. Ioctls
    • Czym są Ioctls?
    • Punkty wejścia sterowników dla Ioctls
    • Zablokowane i bezzamkowe Ioctle
    • Definiowanie Ioctls
    • Laboratorium
  20. Unified Device Model i sysfs
    • Unified Device Model
    • Podstawowe struktury
    • Prawdziwe urządzenia
    • Sysfs
    • Przykłady kset i kobject
    • Laboratorium
  21. Firmware
    • Czym jest Firmware?
    • Ładowanie Firmware
    • Laboratorium
  22. Usypianie i Kolejki Oczekujące
    • Czym są Kolejki Oczekujące?
    • Usypianie i wybudzanie
    • Przechodzenie do szczegółów usypiania
    • Ekskluzywne usypianie
    • Szczegóły wybudzania
    • Ankietowanie
    • Laboratorium
  23. Obsługa przerwania: Odroczone funkcje i sterowniki użytkownika
    • Połówki górne i dolne
    • Softirqs
    • Zadania
    • Kolejki Robocze
    • Nowe API Kolejki Roboczej
    • Tworzenie wątków jądra
    • Wątkowe programy obsługi przerwań
    • Obsługa przerwań w przestrzeni użytkownika
    • Laboratorium
  24. Sprzęt I/O
    • Bariery pamięci
    • Przydzielanie i mapowanie pamięci I/O
    • Dostęp do pamięci I/O
  25. Bezpośredni dostęp do pamięci (DMA) **
    • Czym jest DMA?
    • Ograniczenia pamięci DMA
    • Maski DMA
    • DMA API
    • Pule DMA
    • Scatter/Gather Mappings
    • Laboratorium
  26. Urządzenia technologii pamięci - MTD (System Plików Pamięci Flash)
    • Czym są urządzenia MTD?
    • NAND vs. NOR vs. eMMC
    • Moduły sterownika i użytkownika
    • System plików Flash
    • Laboratorium
  27. Sterowniki USB
    • Czy jest USB?
    • Topologia USB
    • Terminologia
    • Punkty końcowe
    • Deskryptory
    • Klasy urządzeń USB
    • Obsługa USB w Linux
    • Rejestrowanie sterowników urządzeń USB
    • Przenoszenie danych
    • Przykład sterownika USB
    • Laboratorium
  28. Ankieta zamknięcia i oceny
    • Ankieta ewaluacyjna

** Te sekcje mogą być uznane za częściowo lub w całości opcjonalne. Zawierają materiały źródłowe, tematy specjalistyczne lub przedmioty zaawansowane. Instruktor może zdecydować się na ich realizację lub nie, w zależności od doświadczenia uczestników i ograniczeń czasowych.

Pobierz konspekt szkolenia w formacie PDF

Dodatkowe informacje

Wymagania

Znajomość podstawowych interfejsów i metod jądra, takich jak pisanie, kompilowanie, ładowanie i rozładowywanie modułów, używanie podstawowych operacji synchronizacji oraz podstaw alokacji i zarządzania pamięcią, takich jak omawiane podczas kursu LFD420 (Kernel Internals and Development).

Poziom trudności
Czas trwania 4 dni
Certyfikat

Uczestnicy otrzymają certyfikaty podpisane przez The Linux Foundation.

Prowadzący

Certyfikowany trener The Linux Foundation.

Szkolenia powiązane tematycznie

Programowanie

Systemy operacyjne

Linux