Bądźmy w kontakcie

Plan Szkolenia

1. Wprowadzenie do jądra Linuxa

  • Przegląd systemów Linux dla urządzeń wbudowanych
  • Architektura jądra Linux
  • Przestrzeń użytkownika (user space) versus przestrzeń jądra (kernel space)
  • Zadania wykonywane przez jądro
  • Proces deweloperski dla jądra
  • Przegląd obsługiwanych platform wbudowanych

2. Konfiguracja środowiska programistycznego

  • Przygotowanie stacji roboczej do pracy deweloperskiej
  • Zasady cross-compilacji (kompilacji krzyżowej)
  • Instalacja niezbędnych narzędzi deweloperskich
  • Konfiguracja płyty developerskiej BeagleBone Black
  • Konfiguracja konsoli szeregowej
  • Rozruch urządzenia docelowego

3. Pobieranie i zrozumienie kodu źródłowego jądra

  • Zasób (drzewo) kodu źródłowego jądra Linux
  • Jądra stabilne versus jądra z długimterminowym wsparciem (LTS)
  • Pobieranie źródeł jądra
  • Eksploracja struktury kodu źródłowego
  • Dokumentacja jądra
  • Zarządzanie wersjami jądra

4. Konfiguracja, kompilacja i rozruch jądra

  • Konfiguracja jądra przy użyciu narzędzia menuconfig
  • Wybieranie funkcji jądra
  • Kompilacja krzyżowa jądra
  • Budowanie obrazów jądra
  • Instalacja modułów jądra
  • Přehled bootloadera
  • Rozruch własnego (niestandardowego) jądra

5. Podstawy Device Tree

  • Cel istnienia Device Tree
  • Pliki źródłowe Device Tree (DTS)
  • Blob Device Tree (DTB)
  • Koncepcje opisu sprzętu
  • Modyfikacja plików Device Tree
  • Budowanie i wdrażanie Device Tree

6. Moduły jądra Linuxa

  • Architektura modułów jądra
  • Budowanie ładowalnych modułów jądra
  • Ładowanie i odłączanie modułów
  • Parametry modułów
  • Zależności modułów
  • Interakcja z modułami jądra
  • Techniki debugowania modułów

7. Debugowanie jądra Linuxa

  • Dziennik jądra za pomocą funkcji printk()
  • Korzystanie z narzędzia dmesg
  • Dynamiczne debugowanie
  • Analiza paniców jądra
  • Komunikaty Oops
  • Debugowanie przy użyciu GDB
  • Podstawowe narzędzia do śledzenia wydajności

8. Sterowniki urządzeń char (znakowych)

  • Model sterowników urządzeń w Linuksie
  • Urządzenia znakowe
  • Konfiguracja rejestracji sterowników
  • Operacje na plikach
  • Operacje odczytu i zapisu
  • Interfejs IOCTL
  • Zarządzanie pamięcią
  • Czyszczenie (cleanup) sterownika

9. Integracja sterowników i dostęp do sprzętu

  • Urządzenia platformowe (Platform devices) i ich sterowniki
  • Programowanie GPIO
  • Obsługa przerwań
  • Zegary i odroczone zadania (deferred work)
  • Dostęp do rejestrów sprzętowych
  • Praca z I/O mapowanym w pamięci (Memory-mapped I/O)

10. Wersjonowanie kodu z użyciem Gita

  • Podstawy Gita
  • Zarządzanie źródłami jądra
  • Rozgałęzianie i łączenie gałęzi (Branching and merging)
  • Tworzenie łat (patches)
  • Przeglądanie zmian
  • Współpraca w trakcie dewelopowania jądra

11. Praktyczne laboratoria programowania jądra

  • Konfiguracja niestandardowego jądra
  • Budowanie i wdrażanie jądra
  • Tworzenie prostego modułu jądra
  • Rozwój podstawowego sterownika urządzenia char
  • Modyfikacja plików Device Tree
  • Debugowanie problemów z jądrem na płycie BeagleBone Black

12. Najlepsze praktyki i podsumowanie

  • Styl programowania w jądrze
  • Pisanie sterowników łatwo utrzymywanych
  • Pospolite pułapki deweloperskie
  • Zasoby dokumentacji jądra
  • Proces współtworzenia oprogramowania open-source
  • Przegląd kluczowych pojęć
  • Odpowiedzi na pytania
  • Kolejne kroki w dewelopowaniu jądra Linuxa

Wymagania

Podstawowa znajomość systemu GNU/Linux

 14 godzin

Liczba uczestników


Cena za uczestnika (netto)

Opinie uczestników (6)

Propozycje terminów

Powiązane Kategorie