Návrh Školení
Zavedení
- rychlá historie GNU/Linux
- udělování licencí
- verzování jádra
- cyklus uvolňování
- jádrové stromy
- hlavní linie
- jádro vs. uživatelský prostor
- mechanismus vs. politika
- alternativy ovladače jádra
- RTOS vs. Linux
Paměť Management
- Virtuální paměť versus fyzická paměť
- alokace paměti v jádře
- stránky
- zóny
- API
- deska
Patch jádra
- životní cyklus
- git
- zdroj jádra
- vytvořit patch
- zkontrolovat patch
- opravit patch
- lodní záplata
- auditovaný kód
Moduly jádra
- získat zdrojové kódy jádra
- konfigurovat/sestavit/instalovat
- ovladače zařízení (staticky propojené, načtené za běhu)
- init/exit
- udělování licencí
- SYMBOL EXPORTU GPL
- mimo strom makefile
- modul-init-tools
- modulu ve stromu jádra
- Kconfig
- předávání parametrů
- řídký
Ovladače Char
- architektura
- uživatelské/kernel rozhraní
- I/O subsystém
- VFS
- sysfs (zařízení, autobus, ovladače, třídy),
- kobject/ktype/kset
- model ovladače pro linuxové jádro
- soubory zařízení
- char řidič
- inicializace
- registrace
- otevřít, uvolnit
- cdev, cdev přidat, cdev del,...
- hlavní/vedlejší čísla
- udev, udevmonitor, udevadm
Pokročilé operace ovladače Charachter
- ioctl
- odemčený ioctl
- kompatibilní ioctl
- API uživatelského prostoru
- kernel space API
- životní cyklus procesu
- spánek/blokování
- spaní/probuzení
- čekací fronta
- hřmící stádo
- anketa/výběr
Ladění jádra
- chyba
- ladění
- ladění jádra
- binární vyhledávání pomocí git
- podpora ladění z jádra
- printk syslogd, klogd, loglevels, rate limit, debug level, debug selective subsystems
- ladění dotazem debugfs
- oops ladění, tvrzení oops
- Magický klíč SysRq
- kgdb/kdb
- JTAG
Sledování
- gcov
- lcov
- profil
- ftrace
- nop tracer
- sledovač funkcí
- sched switch tracer
- sledovač funkčních grafů
- dynamický tracer
- trace-cmd/kernelshark
- výkon
- LTTng
Přerušuje
- přerušení vs. dotazování
- přerušit
- programové sekce
- opětovného vstupu
- události
- obsluha přerušení
- sdílená obsluha přerušení
- přerušit tok
- ovládání přerušení
Odložení práce
- horní/spodní poloviny
- softirqs
- úkoly
- pracovní fronty
- závitová přerušení
Souběžnost
- kritická oblast/úsek
- atomový
- závodní podmínky
- synchronizace
- zamykání
- řešení zamykání
- uváznutí
- tvrzení
- co zamknout?
- co se dá použít?
- atomové operace
- otočné zámky
- otočné zámky čtenář-zapisovač
- semafor
- binární semafor
- mutex
- semafor čtenář-spisovatel
- proměnné dokončení
- sekvenční zámky
- zakázat preempci
- pořádek a překážky
Čas
- HZ
- Jiffies
- velká/malá zpoždění
- časovače jádra
Hardware I/O
- I/O porty
- I/O paměť
- Jak se vypořádat s vedlejšími účinky přístupu k registrům?
Uživatelské jádro Communication
- put(get)_user()
- zkopírovat do (from)_user()
- I/O jádra
- mapování paměti
- profs
- sysfs
- debugfs
- reléfs
- netlink
- ioctl
Přenosnost
- velikost slova
- neprůhledné typy
- podepsaný/nepodepsaný char
- zarovnání dat
- integrální propagace
- opětovné použití kódu
- endianess
- systémové klíště
- velikost stránky
- objednávání instrukcí
- SMP/preempce/vysoká paměť
Pokud není uvedeno jinak, obsah a tato osnova kurzu podléhají licenci Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Požadavky
- Základní znalost používání systému GNU/Linux jako koncového uživatele
- Základní znalost prostředí příkazového řádku
- Základní znalost uživatelského prostoru / vývoje aplikací
- Středně pokročilá znalost programování v C
- Měli jste se již dříve zúčastnit Embedded GNU/Linux Systems Architecture (důrazně doporučujeme!) a/nebo dobře rozumět tématům, která jsou zde uvedena
Reference (5)
Edward je úžasný facilitátor
Zibusiso Ncube - Agricatural Research Council
Kurz - Ionic 4 and Angular for Developers
Machine Translated
Možná by více cvičení mohlo být pro učení lepší, ale času bylo málo
Gianpiero Arico' - Urmet Spa
Kurz - Embedded Linux Systems Architecture
Machine Translated
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
Kurz - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Kurz - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic