Thank you for sending your enquiry! One of our team member will contact you shortly.
Thank you for sending your booking! One of our team member will contact you shortly.
Návrh Školení
Úvod
- rychlá historie licencování GNU/Linux licencování verzování jádra cyklus vydávání stromů jádra jádro vs. mechanismus uživatelského prostoru vs. politika alternativy ovladače jádra RTOS vs. Linux
Paměť Management
- Alokace virtuální paměti vs. fyzická paměť v zónách stránek jádra API slab
Patch jádra
- life cycle git kernel source create patch check patch fix patch ship patch audited code
Moduly jádra
- získat zdroje jádra konfigurace/sestavení/instalace ovladačů zařízení (staticky propojené, načtené za běhu) licencování init/exit EXPORT SYMBOL GPL mimo strom makefile module-init-tools modul ve stromu jádra Parametr Kconfig předávání sparse
Ovladače Char
- architektura uživatelské/rozhraní jádra I/O subsystém VFS sysfs (zařízení, sběrnice, ovladače, třídy), kobject/ktype/kset linuxové jádro model ovladače soubory zařízení char inicializace ovladače registrace otevřena, vydání cdev, cdev add, cdev del,... hlavní/moll čísla udev, udevmonitor, udevadm
Pokročilé operace ovladače Charachter
- ioctl odemčený ioctl compat ioctl uživatelský prostor API jádrový prostor API životní cyklus procesu spánek/blokování spánek/probuzení fronta čekání hřímající stádo hlasování/výběr
Ladění jádra
- ladění chyb ladění binárního vyhledávání jádra s podporou ladění git z jádra printk syslogd, klogd, loglevels, rychlostní limit, úrovně ladění, ladění selektivních subsystémů ladění dotazem debugfs oops ladění, tvrzení oops Magic SysRq Klíč kgdb/kdb JTAG
Sledování
- gcov lcov oprofile ftrace nop tracer funkce tracer sched switch tracer funkce graf tracer dynamický tracer
přerušení vs. přerušení dotazování programové sekce reentrancy události obsluha přerušení sdílená obsluha přerušení tok přerušení řízení přerušení
- Odložení práce
horní/spodní poloviny softirqs tasklets pracovní fronty vláknová přerušení
- Konkurence
kritická oblast/sekce atomový závod synchronizace zamykání řešení zamykání uváznutí spor co zamknout? co se dá použít? atomové operace otočné zámky čtečka-zapisovač otočné zámky semafor binární semafor mutex čtečka-zapisovač semafor dokončovací proměnné sekvenční zámky zakázat preempci pořadí a bariéry
- Čas
HZ Jiffies velké/malé zpoždění jaderných časovačů
- Hardware I/O
I/O porty I/O paměť Jak se vypořádat s vedlejšími efekty přístupu k registrům?
- Uživatelské jádro Communication
put(get)_user() copy to(from)_user() Mapování I/O paměti jádra procfs sysfs debugfs relayfs netlink ioctl
- Přenosnost
velikost slova neprůhledné typy podepsaný/nepodepsaný znak zarovnání dat integrální propagační kód opětovné použití endianess systém zaškrtnutí velikosti stránky instrukce objednávání SMP/preemption/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 dříve navštěvovat Embedded GNU/Linux Systems Architecture (důrazně doporučujeme!) a/nebo dobře rozumět tématům, která jsou zde uvedena
35 hodiny
Reference (3)
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Kurz - The Yocto Project - An Overview - hands-on
Způsob vysvětlování trenéra.
Marcos Rosas - Banco Azteca S.A. C.V.
Kurz - Flutter Development Bootcamp with Dart
Machine Translated
On time, training resources is readily available