Kursplan
Införandet
- snabb historik för GNU/Linux
- licensiering
- Versionshantering av kernel
- Släpp cykel
- Kärna träd
- Mainline
- Kärna jämfört med användarutrymme
- Mekanism kontra policy
- Alternativ till kärndrivrutiner
- RTOS jämfört med Linux
Minne Management
- Virtuellt minne jämfört med fysiskt minne
- Minnesallokering i kärnan
- Sidor
- Zoner
- Application Programming Interface
- platta
Korrigering av kärnan
- livscykel
- Git
- Kärnans källkod
- Skapa patch
- kontrollera plåster
- Fixa patch
- skepp patch
- Granskad kod
Kärna Moduler
- Hämta kernel-källor
- Konfigurera/bygga/installera
- Enhetsdrivrutiner (statiskt länkade, inlästa vid körning)
- init/exit
- licensiering
- EXPORTERA SYMBOL GPL
- MakeFile för att bygga upp ett träd
- modul-init-verktyg
- Modul i kärnträdet
- Kconfig
- Parameter som skickas
- gles
Drivrutiner för röding
- arkitektur
- Gränssnitt för användare/kärna
- I/O-delsystem
- VFS
- sysfs (enheter, buss, drivrutiner, klasser),
- kobject/ktype/kset
- Drivrutinsmodell för Linux-kernel
- Enhetens filer
- Drivrutin för röding
- Initiering
- registrering
- öppna, släpp
- cdev, cdev add, cdev del,...
- Stora/små nummer
- udev, udevmonitor, udevadm
Avancerade Charachter Driver-operationer
- ioctl
- Olåst ioctl
- compat ioctl
- API för användarutrymme
- API för kärnutrymme
- Processens livscykel
- Sova/blockera
- Sova/vakna
- Kö
- dundrande hjord
- Omröstning/Välj
Felsökning av kernel
- insekt
- Felsökning
- Felsöka kärnan
- Binär sökning med Git
- Felsökningsstöd från kärnan
- printk syslogd, klogd, loglevels, hastighetsgräns, felsökningsnivåer, felsökning selektiva delsystem
- Felsökning genom att fråga debugfs
- Hoppsan Felsökning, Hävda Hoppsan
- Magic SysRq-nyckel
- kgdb/kdb
- JTAG (J-tagg)
Spårning
- gcov
- LCOV
- oprofile
- 007:002
- NOP spårämne
- Funktion Tracer
- Spårämne för Sched-omkopplare
- Spåra funktionsdiagram
- Dynamisk spårämne
- trace-cmd/kernelshark
- Perf
- LTTng
Avbryter
- Avbrott jämfört med avsökning
- avbryta
- Avsnitt om programmet
- Återinträde
- evenemang
- Avbryt hanterare
- Hanterare för delade avbrott
- Avbryt flöde
- Avbryt kontroll
Uppskjutande arbete
- Övre/nedre halvan
- softirqs softirqs
- Uppgifter
- arbetsköer
- gängade interrrupter
Samtidighet
- Kritiskt område/avsnitt
- atomär
- Tävlingens tillstånd
- synkronisering
- låsning
- Låsande lösningar
- dödläge
- påstående
- Vad ska man låsa?
- Vad kan användas?
- Atomiska operationer
- Snurra lås
- Snurrlås för läsare-författare
- semafor
- Binär semafor
- mutex
- läsare-författare semafor
- Variabler för slutförande
- Sekventiella lås
- Inaktivera preemption
- Ordning och barriärer
Tid
- HZ
- Jiffies
- stora/små förseningar
- Timers för kärnan
I/O för maskinvara
- I/O-portar
- I/O-minne
- Hur hanterar man biverkningar vid tillgång till register?
Användare-Kärna Communication
- put(get)_user()
- Kopiera till(från)_user()
- Kernel I/O
- Mappning av minne
- procfs
- sysfs
- debugfs debugfs
- reläer
- nätlänk
- ioctl
Portabilitet
- Ordstorlek
- Ogenomskinliga typer
- Signerat/osignerat tecken
- Justering av data
- Integrerad marknadsföring
- Återanvändning av kod
- Endianess
- system bock
- Sidans storlek
- Beställning av instruktioner
- SMP/preemption/högt minne
Om inget annat anges är innehållet och denna kursöversikt licensierade under Erkännande-IckeKommersiell-DelaLika 4.0 International (CC BY-NC-SA 4.0).
Krav
- Grundläggande förtrogenhet med att använda ett GNU/Linux-system som slutanvändare
- Grundläggande kunskaper om ett kommandoradsskal
- Grundläggande kunskaper om användarutrymme/applikationsutveckling
- Kunskaper i C-programmering på mellannivå
- Bör ha deltagit i Embedded GNU/Linux Systems Architecture tidigare (rekommenderas starkt!) och/eller ha en god förståelse för de ämnen som beskrivs där
Vittnesmål (5)
Edward är en fantastisk facilitator
Zibusiso Ncube - Agricatural Research Council
Kurs - Ionic 4 and Angular for Developers
Machine Translated
Kanske kunde fler övningar vara bättre för lerning men tiden var för lite
Gianpiero Arico' - Urmet Spa
Kurs - 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
Kurs - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Kurs - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic