Course Code: ldd
Duration: 35 hours
Prerequisites:

  • Alapvető ismeretek a GNU/Linux rendszer használatáról végfelhasználóként
  • Alapvető ismeretek a parancssori felület használatáról
  • Alapvető ismeretek a felhasználói tér / alkalmazásfejlesztés területén
  • Középfokú C programozási ismeretek
  • Ajánlott, hogy részt vettél a Beágyazott GNU/Linux Rendszerarchitektúra képzésen (erősen ajánlott!) és/vagy jól ismered az ott vázolt témaköröket

Overview:

Leírás

Ez az 5 napos képzés gyakorlati gyakorlatok és előadások kombinációján keresztül mutatja be a GNU/Linux kernel belső működését és az eszközmeghajtók fejlesztését. Célja, hogy gyorsan felzárkóztasson. A képzés során a GNU/Linux eszközmeghajtók írásához szükséges folyamatokat, fogalmakat és parancsokat mutatjuk be, elméleti ismeretek és gyakorlati munka kombinációjával.

Ne találd fel újra a spanyolviaszt, hanem tanulj egy tapasztalt oktatótól, és szerezz működő tudást, amelyet hatékonyan alkalmazhatsz saját beágyazott fejlesztési projektjeidben.

Kiknek ajánljuk?

Azoknak, akiket érdekel vagy akiknek feladata a GNU/Linux eszközmeghajtók fejlesztése vagy értékelése, például szoftvermérnökök, terepmérnökök, (projekt)menedzserek, hardvermérnökök.

Course Outline:

Bevezetés

  • A GNU/Linux rövid története
  • Licencelés
  • Kernel verziószámozás
  • Kiadási ciklus
  • Kernel fák
  • Főág
  • Kernel vs. felhasználói tér
  • Mechanizmus vs. politika
  • Kernel meghajtó alternatívák
  • RTOS vs. Linux

Memóriakezelés

  • Virtuális memória vs. fizikai memória
  • Memóriafoglalás a kernelben
  • Lapok
  • Zónák
  • API
  • Slab

Kernel Patch

  • Életciklus
  • Git
  • Kernel forrás
  • Patch készítése
  • Patch ellenőrzése
  • Patch javítása
  • Patch elküldése
  • Ellenőrzött kód

Kernel Modulok

  • Kernel források beszerzése
  • Konfigurálás/építés/telepítés
  • Eszközmeghajtók (statikusan linkelt, futásidőben betöltött)
  • Init/exit
  • Licencelés
  • EXPORT SYMBOL GPL
  • Out of tree makefile
  • module-init-tools
  • Modul a kernel fában
  • Kconfig
  • Paraméterátadás
  • Sparse

Karakteres Meghajtók

  • Architektúra
  • Felhasználói/kernel interfész
  • I/O alrendszer
  • VFS
  • Sysfs (eszközök, busz, meghajtók, osztályok),
  • kobject/ktype/kset
  • Linux kernel meghajtó modell
  • Eszközfájlok
  • Karakteres meghajtó

    • Inicializálás
    • Regisztráció
    • Open, release
    • cdev, cdev add, cdev del,...
    • Major/minor számok
    • udev, udevmonitor, udevadm

Speciális Karakteres Meghajtó Műveletek

  • ioctl
  • Unlocked ioctl
  • Compat ioctl
  • Felhasználói tér API
  • Kernel tér API
  • Folyamat életciklus
  • Alvás/blokkolás
  • Alvás/felébredés
  • Várakozási sor
  • Thundering herd
  • Poll/select

Kernel Hibakeresés

  • Hibakeresés
  • Kernel hibakeresése

    • Bináris keresés git-tel
    • Hibakeresési támogatás a kernelből
    • printk syslogd, klogd, naplószintek, sebességkorlát, hibakeresési szintek, kiválasztott alrendszerek hibakeresése
    • Hibakeresés debugfs lekérdezéssel
    • Oops hibakeresés, oops kiváltása
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

Nyomkövetés

  • gcov
  • lcov
  • oprofile
  • ftrace

    • Nop nyomkövető
    • Funkció nyomkövető
    • Sched switch nyomkövető
    • Funkciógráf nyomkövető
    • Dinamikus nyomkövető
  • trace-cmd/kernelshark
  • perf
  • LTTng

Megszakítások

  • Megszakítások vs. lekérdezés
  • Megszakítás
  • Programrészek
  • Újrafelhasználhatóság
  • Események
  • Megszakítási kezelő
  • Megosztott megszakítási kezelő
  • Megszakítási folyam
  • Megszakítási vezérlés

Munka Elhalasztása

  • Felső/alsó felek
  • Softirqs
  • Tasklets
  • Munka sorok
  • Szálas megszakítások

Párhuzamosság

  • Kritikus régió/szakasz
  • Atomikus
  • Versenyhelyzet
  • Szinkronizáció
  • Zárolás
  • Zárolási megoldások
  • Holtpont
  • Versengés
  • Mit kell zárolni?
  • Mit lehet használni?

    • Atomikus műveletek
    • Spin lockok
    • Olvasó-író spin lockok
    • Szemafor
    • Bináris szemafor
    • Mutex
    • Olvasó-író szemafor
    • Befejezési változók
    • Szekvenciális lockok
    • Preemptáció letiltása
    • Sorrend és korlátok

Idő

  • HZ
  • Jiffies
  • Nagy/kis késések
  • Kernel időzítők

Hardver I/O

  • I/O Portok
  • I/O Memória
  • Hogyan kezeljük a regiszterek elérésének mellékhatásait?

Felhasználói-Kernel Kommunikáció

  • put(get)_user()
  • copy to(from)_user()
  • Kernel I/O
  • Memórialeképezés
  • Procfs
  • Sysfs
  • Debugfs
  • Relayfs
  • Netlink
  • ioctl

Hordozhatóság

  • Szó méret
  • Átlátszatlan típusok
  • Előjeles/előjel nélküli char
  • Adatigazítás
  • Egész számok promóciója
  • Kód újrafelhasználás
  • Bájtsorrend
  • Rendszer ketyegés
  • Lapméret
  • Utasítások sorrendje
  • SMP/preemptáció/magas memória

Ahol másként nincs jelezve, a tartalom és a tanfolyami vázlat a Creative Commons Nevezd meg! - Ne add el! - Így add tovább! 4.0 Nemzetközi (CC BY-NC-SA 4.0) licenc alatt áll.

Sites Published:

United Arab Emirates - Embedded GNU/Linux Kernel Internals and Device Drivers

Qatar - Embedded GNU/Linux Kernel Internals and Device Drivers

Egypt - Embedded GNU/Linux Kernel Internals and Device Drivers

Saudi Arabia - Embedded GNU/Linux Kernel Internals and Device Drivers

South Africa - Embedded GNU/Linux Kernel Internals and Device Drivers

Brasil - Integridade do Kernel GNU/Linux Embarcado e Drivers de Dispositivo

Canada - Embedded GNU/Linux Kernel Internals and Device Drivers

中国 - 嵌入式GNU/Linux内核与设备驱动

香港 - Embedded GNU/Linux Kernel Internals and Device Drivers

澳門 - Embedded GNU/Linux Kernel Internals and Device Drivers

台灣 - Embedded GNU/Linux Kernel Internals and Device Drivers

USA - Embedded GNU/Linux Kernel Internals and Device Drivers

Österreich - Interne Struktur des GNU/Linux-Kernels und Gerätetreiber

Schweiz - Interne Struktur des GNU/Linux-Kernels und Gerätetreiber

Deutschland - Interne Struktur des GNU/Linux-Kernels und Gerätetreiber

Czech Republic - Interní struktura jádra GNU/Linuxu a ovladače zařízení

Denmark - Embedded GNU/Linux Kernel Internals and Device Drivers

Estonia - Embedded GNU/Linux Kernel Internals and Device Drivers

Finland - Embedded GNU/Linux Kernel Internals and Device Drivers

Greece - Εσώτερο Λειτουργικό των Πυρήνων GNU/Linux και Οδηγοί Συσκευών

Magyarország - Beágyazott GNU/Linux Kernel Belső Működése és Eszközmeghajtók

Ireland - Embedded GNU/Linux Kernel Internals and Device Drivers

Luxembourg - Embedded GNU/Linux Kernel Internals and Device Drivers

Latvia - Embedded GNU/Linux Kernel Internals and Device Drivers

España - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Italia - Interni del kernel GNU/Linux e driver di dispositivo

Lithuania - Embedded GNU/Linux Kernel Internals and Device Drivers

Nederland - Inwendige werking van de GNU/Linux-kernel en apparaatstuurprogramma's

Norway - Inne i Linux-kjernen for innbygde systemer og enhetsdrivere

Portugal - Integridade do Kernel GNU/Linux Embarcado e Drivers de Dispositivo

România - Internele Nucleului GNU/Linux și Driverele de Dispozitive

Sverige - Inbyggd GNU/Linux-kärninterna funktioner och enhetsdrivrutiner

Türkiye - Gömülü GNU/Linux Çekirdek İç Yapıları ve Cihaz Sürücüleri

Malta - Embedded GNU/Linux Kernel Internals and Device Drivers

Belgique - Internalités du noyau GNU/Linux et pilotes de périphériques intégrés

France - Internalités du noyau GNU/Linux et pilotes de périphériques intégrés

日本 - 埋め込み GNU/Linux カーネルの内部構造とデバイスドライバ

Australia - Embedded GNU/Linux Kernel Internals and Device Drivers

Malaysia - Embedded GNU/Linux Kernel Internals and Device Drivers

New Zealand - Embedded GNU/Linux Kernel Internals and Device Drivers

Philippines - Embedded GNU/Linux Kernel Internals and Device Drivers

Singapore - Embedded GNU/Linux Kernel Internals and Device Drivers

Thailand - Embedded GNU/Linux Kernel Internals and Device Drivers

Vietnam - Kiến trúc Nhân GNU/Linux Nhúng và Trình điều khiển Thiết bị

India - Embedded GNU/Linux Kernel Internals and Device Drivers

Argentina - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Chile - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Costa Rica - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Ecuador - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Guatemala - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Colombia - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

México - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Panama - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Peru - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Uruguay - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Venezuela - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Polska - Wewnętrzne mechanizmy jądra GNU/Linux i sterowniki urządzeń

United Kingdom - Embedded GNU/Linux Kernel Internals and Device Drivers

South Korea - 임베디드 GNU/리눅스 커널 내부 구조 및 장치 드라이버

Pakistan - Embedded GNU/Linux Kernel Internals and Device Drivers

Sri Lanka - Embedded GNU/Linux Kernel Internals and Device Drivers

Bulgaria - Вградени вътрешни принципи на ядрото GNU/Linux и драйвери на устройства

Bolivia - Integridades internas del kernel y controladores de dispositivos GNU/Linux integrados

Indonesia - Embedded GNU/Linux Kernel Internals and Device Drivers

Kazakhstan - Embedded GNU/Linux Kernel Internals and Device Drivers

Moldova - Internele Nucleului GNU/Linux și Driverele de Dispozitive

Morocco - Embedded GNU/Linux Kernel Internals and Device Drivers

Tunisia - Embedded GNU/Linux Kernel Internals and Device Drivers

Kuwait - Embedded GNU/Linux Kernel Internals and Device Drivers

Oman - Embedded GNU/Linux Kernel Internals and Device Drivers

Slovakia - Embedded GNU/Linux Kernel Internals and Device Drivers

Kenya - Embedded GNU/Linux Kernel Internals and Device Drivers

Nigeria - Embedded GNU/Linux Kernel Internals and Device Drivers

Botswana - Embedded GNU/Linux Kernel Internals and Device Drivers

Slovenia - Embedded GNU/Linux Kernel Internals and Device Drivers

Croatia - Embedded GNU/Linux Kernel Internals and Device Drivers

Serbia - Embedded GNU/Linux Kernel Internals and Device Drivers

Bhutan - Embedded GNU/Linux Kernel Internals and Device Drivers

Nepal - Embedded GNU/Linux Kernel Internals and Device Drivers

Uzbekistan - Embedded GNU/Linux Kernel Internals and Device Drivers

US Government - Embedded GNU/Linux Kernel Internals and Device Drivers