Linux – vývoj embedded ovladačů a jádra (LNXKRN1)
Unixové systémy, Linux - programování
Základní ovladače pro některá zařízení můžete provozovat ve formě programu v uživatelském prostoru. Přesto může nastat chvíle, kdy potřebujete spouštět svůj kód v jádře nebo upravovat existující kód podle potřeb svého projektu. K tomu je potřeba připravit si virtuální stroj nebo cílový hardware a můžeme začít experimentovat.
Linux je tu s námi od roku 1991 a jednotlivé části od té doby prošly mnoha změnami. Nabízí objektově orientovaný subsystém pro ovladače, který umožňuje relativně snadno pracovat se zařízeními ovládanými přes řadiče paměti a I/O, stejně jako dedikované sběrnice jako I2C, SPI, USB nebo PCI Express.
Tento kurz lze objednat v původní variantě s jazykem C. Na požádání lze připravit variantu pro Rust, a pokud nemáte pud sebezáchovy, tak i pro C++. Obvykle pracujeme na architekturách X86-64 nebo ARM64.
TOTO ŠKOLENÍ VÁM POMŮŽE:
- Seznámit se s fungováním kódu uvnitř jádra operačního systému a subsystémem ovladačů
- Naučit se vytvářet ovladače a pracovat se sběrnicemi a zařízeními v Linuxu
- Osvojit si synchronizaci kódu napříč jádry CPU a kódu asynchronních přerušení
KDO BY SE MĚL KURZU ZÚČASTNIT?
- Vývojáři, kteří vytvářejí embedded produkty založené na linuxových platformách
- Tvůrci ovladačů zařízení pro hardware vytvářený na míru konkrétnímu projektu
- Týmy, které se zabývají portováním embedded projektů na linuxové platformy
- Zájemci o fungování linuxového jádra a ovladačů na všech platformách včetně běžných počítačů
Privátní školení a termíny na míru
Toto téma je možné zrealizovat pouze jako privátní, a to nejen formou uzavřeného firemního kurzu, ale také jako individuální konzultaci pro jednotlivce.
V případě kurzu na míru je níže uvedená osnova pouze inspirací. Finální obsah vzdělávání, jeho délka i termíny budou přizpůsobeny konkrétním vstupním znalostem, potřebám a cílům účastníků.
Cenovou nabídku vám rádi připravíme na základě vstupů zaslaných e-mailem nebo zadaných prostřednictvím poptávkového formuláře. Cena privátního školení vychází z náročnosti požadované obsahové náplně školení, časového rozsahu a celkového počtu přihlášených osob.
KDE A KDY KURZ PROBÍHÁ?
Kontaktujte nás
S námi
máte na výběr: Přijďte na
kurz osobně do naší učebny, nebo se ke kurzu
připojte online. Pokud preferujete online formu, uveďte prosím do poznámky v objednávce "Připojím se virtuálně".
Více informací k hybridní formě školení
naleznete zde.
Náplň kurzu:
Skrýt detaily
-
Inicializace jádra Linuxu
-
Bootovací obraz jádra a device tree
-
Kořenový souborový systém a proces init
-
Zaváděcí moduly a initramfs
-
Zřízení laboratorního prostředí
-
Prostředí virtuálního stroje
-
Buildovací prostředí a nástroje
-
Spuštění prvního kódu v jádře
-
Omezení a specifika kódu v jádře
-
Neexistence stabilního API pro ovladače
-
Údržba kódu jádra v čase
-
Specifika návrhu kódu jádra
-
Alternativy v uživatelském prostoru
-
Ovladače zařízení v uživatelském prostoru
-
Stabilní API směrem k uživatelskému prostoru
-
Volnější volba programovacího jazyka
-
Sestavování modulů jádra
-
Inicializace a finalizace
-
Získání a uvolnění prostředků
-
Registrace struktur operací
-
Vytváření rozhraní pro uživatelský prostor
-
Virtuální souborový systém
-
Operace čtení, zápisu a ioctl
-
Úloha procfs, sysfs a debugfs
-
Zpřístupnění znakových zařízení
-
Globální číselník znakových zařízení
-
Dynamická alokace miscdev
-
Publikování zařízení v devtmpfs
-
Mechanika hardwarových ovladačů
-
Model ovladačů zařízení v Linuxu
-
Inicializace a finalizace
-
Získání a uvolnění prostředků
-
Reprezentace hardwarových sběrnic
-
Zařízení dostupná CPU instrukcím
-
Sběrnice bez výčtu zařízení (I2C, SPI, …)
-
Chytré sběrnice s výčtem a identifikací (USB, PCI, …)
-
Propojení uživatelského prostoru s hardwarem
-
Hardwarové zařízení prezentované aplikacím
-
Znaková zařízení a bloková vrstva
-
Napojení na specializované subsystémy
-
Návrhové vzory modulů jádra
-
Rollback neúspěšné inicializace
-
Zpětná volání s
container_of
-
Předalokované buffery a FIFO
-
Infrastruktura dynamického načítání modulů
-
Postup načítání a uvolňování
-
Závislosti symbolů mezi moduly
-
Správa prostředků a blokované odstranění
-
Mechanismy zamykání a čekání
-
Mutexy a práce s kernelovými vlákny
-
Spinlocky, přerušení a synchronizace
-
Časovače a fronty s čekáním
-
Podpora desek ARM
-
Device & board files
-
Binární device tree
-
Pinctrl, GPIO a přerušení
-
Diskuse o vývoji jádra
-
Rozdíly oproti bare-metal programování
-
Reálný čas a výkonnostní aspekty
-
Právní, komunitní a PR otázky
-
Předpokládané znalosti:
-
Dobrá znalost programování v jazyce C.
-
Časový rozvrh:
-
5 dní (9:00hod. - 17:00hod.)
Vybrané zákaznické reference
Thermo Fisher Scientific Brno s.r.o., Petr K.
Linux – vývoj embedded ovladačů a jádra (
LNXKRN1)
"Dobry den,
nas skolitel byl velice dobre pripraven a zodpovedel vsechny dotazy."
RETIA, a.s., Michal D.
Linux – vývoj embedded ovladačů a jádra (
LNXKRN1)
"Dobrá diskuse, se školením jsem spokojen."
ŠKODA DIGITAL s.r.o., Petr H.
Linux – vývoj embedded ovladačů a jádra (
LNXKRN1)
"Školení bylo směrované přesně na míru tomu, co jsem si od školení sliboval, že se dozvím, takže za mě 100%."