Embedded Linux: Tvorba ovladačů a programování kernelu (LNXKRN1)

Unixové systémy, Linux - programování

Linux je vysoce přizpůsobitelný open-source operační systém, který lze využít na širokém spektru zařízení, od superpočítačů po embedded systémy. Tento kurz se zaměřuje na programování ovladačů jádra Linuxu a na to, jak přizpůsobit Linux specifickým potřebám, hardwarovým deskám a periferiím. Naučíte se porozumět základním principům kernelového programování, od inicializace jádra až po pokročilé techniky práce s hardwarovými sběrnicemi a zamykacími mechanismy.

Kurz je ideální pro vývojáře embedded systémů a systémové programátory, kteří chtějí efektivně pracovat s Linuxem na nízké úrovni a zvládnout návrh vlastních ovladačů zařízení.

TOTO ŠKOLENÍ VÁM POMŮŽE:

  • Pochopit proces inicializace jádra Linuxu, včetně práce s device tree a initramfs
  • Naučit se vytvářet a spravovat kernelové moduly a ovladače zařízení
  • Osvojit si práci s hardwarovými sběrnicemi, jako jsou I2C, SPI, USB a PCI
  • Vytvářet rozhraní mezi uživatelským prostorem a hardwarem pomocí sysfs, procfs a debugfs
  • Zvládnout zamykací a synchronizační mechanismy v jádře, jako jsou mutexy a spinlocky

KDO BY SE MĚL KURZU ZÚČASTNIT?

  • Vývojáři embedded systémů, kteří chtějí přizpůsobit Linux specifickým deskám a zařízením
  • Systémoví programátoři, kteří se chtějí naučit vytvářet a spravovat ovladače zařízení
  • IT profesionálové, kteří potřebují hlubší porozumění kernelovým modulům a mechanismům Linuxu

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
  • Linux kernel initialization process
    1. Kernel boot image and device tree
    2. Root file system and init process
    3. Loadable modules and initramfs
  • Getting a lab environment
    1. Virtual machine environment
    2. Build environment and tools
    3. Running the first kernel code
  • Kernel code limitations and constraints
    1. Lack of stable driver API
    2. Maintenance of kernel code over time
    3. Kernel code design specifics
  • Alternatives in the userspace
    1. Device drivers for some subsystems
    2. Stable user space-facing API
    3. Free choice of programming language
  • Building kernel modules
    1. Initialization and finalization
    2. Resource acquisition and cleanup
    3. Operation structure registration
  • Creating user-space interfaces
    1. Kernel side of the virtual file system
    2. Reading, writing, and ioctl calls
    3. Purpose of procfs, sysfs, and debugfs
  • Exposing character devices
    1. Global character device numbers
    2. Dynamic miscdev allocation
    3. Publishing devices in devtmpfs
  • The mechanics of hardware drivers
    1. Device driver model in Linux
    2. Initialization and finalization 
    3. Resource acquisition and cleanup
  • Hardware bus representation
    1. Platform device pseudo-bus
    2. Non-enumerating buses (I2C, SPI, …)
    3. Enumerating buses (USB, PCI, …)
  • Connecting the user-space and hardware
    1. Hardware device presented to user-space
    2. Character devices and the block layer
    3. Plugging into the big subsystems
  • Kernel module design patterns
    1. Failed initialization unrolling
    2. Callbacks with container_of
    3. Pre-allocated buffers and FIFOs
  • Dynamic module loading infrastructure
    1. Loading and unloading procedure
    2. Symbol dependencies between modules
    3. Resource acquisition and busy modules
  • Locking and waiting mechanisms
    1. Mutexes and multiprocessing
    2. Spin locks and interrupts
    3. Timers and wait queues
  • ARM board support
    1. Device & board files
    2. Device tree binaries
    3. Pinctrls, GPIOs, and interrupts
  • Kernel development discussion
    1. Differences from bare-metal programming
    2. Real-time & performance considerations
    3. Legal, community, and public relations
Předpokládané znalosti:
Znalost unixového prostředí a programování v jazyku C.
Časový rozvrh:
5 dní (9:00hod. - 17:00hod.)

Vybrané zákaznické reference

Thermo Fisher Scientific Brno s.r.o., Petr K.
Embedded Linux: Tvorba ovladačů a programování kernelu  ( LNXKRN1)
"Dobry den, nas skolitel byl velice dobre pripraven a zodpovedel vsechny dotazy."
RETIA, a.s., Michal D.
Embedded Linux: Tvorba ovladačů a programování kernelu  ( LNXKRN1)
"Dobrá diskuse, se školením jsem spokojen."
ŠKODA DIGITAL s.r.o., Petr H.
Embedded Linux: Tvorba ovladačů a programování kernelu  ( 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%."