Ta kontakt
 Varighet 14 timer

Kursplan

1. Innføring i Linux-kjernen

  • Oversikt over innebygd Linux
  • Linux-kjernes arkitektur
  • Brukerrom vs. kjernerom
  • Kjernen ansvarsområder
  • Kjerneutviklingsprosess
  • Oversikt over støttede innebygde plattformer

2. Innretting av utviklingsmiljø

  • Forberedelse av utviklingsarbeidsstasjonen
  • Konsepter for krysskompilering
  • Installasjon av nødvendige utviklingsverktøy
  • Innretting av BeagleBone Black-utviklingskortet
  • Konfigurasjon av seriell konsoll
  • Opptast av målutstyret

3. Innhenting og forståelse av kjernens kildekode

  • Linux-kjernes kildekodeløype
  • Stabile kjerner vs. kjerner med langtidssupport
  • Nedlasting av kjernekildekoder
  • Utforskning av kildekodestrukturen
  • Kjedokumentasjon
  • Versjonsstyring av kjerner

4. Konfigurering, kompilering og oppstart av kjernen

  • Konfigurering av kjernen med menuconfig
  • Valg av kjernefunksjoner
  • Krysskompilering av kjernen
  • Bygging av kjernebilder
  • Installasjon av kjernemoduler
  • Oversikt over bootloadere
  • Oppstart av en tilpasset kjerne

5. Grunnleggende kunnskaper om enhetre (Device Tree)

  • Formålet med enhetre (Device Tree)
  • Enhetrekildefiler (DTS-filer)
  • Enhetreblob (DTB)
  • Konsepter for hardvarebeskrivelse
  • Modifisering av enhetre-filer
  • Bygging og utsettelse av enhetre

6. Linux-kjernemoduler

  • Arkitektur for kjernemoduler
  • Bygging av lastbare kjernemoduler
  • Lasting og avlasting av moduler
  • Moduparametre
  • Modavhengigheter
  • Interaksjon med kjernemoduler
  • Feilsøkningsteknikker for moduler

7. Feilsøking i Linux-kjernen

  • Kjeloggføring med printk()
  • Bruk av dmesg
  • Dynamisk feilsøking
  • Analyse av kjerneheng (kernel panic)
  • Oops-meldinger
  • Feilsøking med GDB
  • Grunnleggende verktøy for ytelsestracing

8. Karakterenhetssjåfører (Character Device Drivers)

  • Linux-enhetssjåførmodell
  • Karakterenheter
  • Registrering av sjåfører
  • Filtoperasjoner
  • Les- og skriveoperasjoner
  • IOCTL-grensesnitt
  • Minnestyring
  • Rensing av sjåfør

9. Integrering av sjåfører og tilgang til hardvare

  • Plattformenheter og -sjåfører
  • GPIO-programmering
  • Avbrytsbehandling (interrupt handling)
  • Tidsur og utsatt arbeid
  • Tilgang til hardvareregistre
  • Arbeid med minnekortet I/O

10. Versjonsstyring med Git

  • Git-grunnleggende
  • Styring av kjernekildekode
  • Grener og sammenmerging
  • Opprettelse av rettelsesprogrammer (patches)
  • Gjennomgang av endringer
  • Samarbeid i kjerneutvikling

11. Hands-on-laboratorier for kjerneutvikling

  • Konfigurering av en tilpasset kjerne
  • Bygging og utsettelse av kjernen
  • Opprettelse av en enkel kjernemodul
  • Utvikling av en grunnleggende karakterenhetssjåfør
  • Modifisering av enhetre-filer
  • Feilsøking av kjerneproblemer på BeagleBone Black

12. Beste praksis og oppsummering

  • Kjekoderingsstil
  • Skriv vedlikeholdbare sjåfører
  • Vanlige feil ved utvikling
  • Ressurser for kjeranedokumentasjon
  • Arbeidsflyt for bidrag til open source
  • Gjennomgang av viktige konsepter
  • Spørsmål og svar
  • Neste steg i Linux-kjerneutvikling

Krav

Grunnleggende kjennskap til bruk av et GNU/Linux-system

Antall deltakere


Pris per deltaker

Referanser (2)

Kommende kurs

Relaterte kategorier