Ta kontakt

Kursplan

1. Innføring i Linux-kjernen

  • Oversikt over innbygd Linux
  • Arkitektur for Linux-kjernen
  • Brukerrom kontra kjernemodus
  • Kjernens ansvar
  • Arbeidsflyt ved utvikling av kjernen
  • Oversikt over støttede innbygde plattformer

2. Oppsett av utviklingsmiljøet

  • Forbereding av utviklingsarbeidsstasjonen
  • Konsepter for kryss-kompilering
  • Installasjon av nødvendige verktøy
  • Oppsett av BeagleBone Black-utviklingskort
  • Seriell konsollkonfigurasjon
  • Oppstart av målenheten

3. Skaffe og forstå kjenekildekoden

  • Kjerekode-trestrukturen
  • Stabile vs. langtidssiktede versjoner
  • Nedlasting av kildekode
  • Utforskning av kildekodestrukturen
  • Dokumentasjon for kjernen
  • Håndtering av kjerneversjoner

4. Konfigurasjon, kompilering og oppstart av kjernen

  • Konfigurasjon med menuconfig
  • Valg av funksjoner i kjernen
  • Kryss-kompilering av kjernen
  • Bygging av kjernebilder
  • Installasjon av kjernemoduler
  • Oversikt over oppstartere (bootloader)
  • Oppstart av en tilpasset kjerne

5. Grunnleggende om enhetstre (Device Tree)

  • Hensikten med enhetstre
  • Kilder for enhetstre (DTS-filer)
  • Filer som inneholder kompilert enhetstre (DTB)
  • Konsepter for maskinvarebeskrivelse
  • Modifisering av enhetstre-filer
  • Bygging og distribusjon av enhetstre

6. Linux-kjernemoduler

  • Arkitektur for kjerne-moduler
  • Bygging av lastbare moduler
  • Lasting og fjerning av moduler
  • Modulparametre
  • Avhengigheter mellom moduler
  • Interaksjon med kjerne-moduler
  • Felletsøkning i moduler

7. Felletsøking av Linux-kjernen

  • Kjede logging via printk()
  • Bruk av dmesg
  • Dynamisk felletsøking
  • Analyse av kernel panic
  • Oops-meldinger
  • Felletsøking med GDB
  • Enkle verktøy for ytelsessporing

8. Karaktère driver

  • Modellen for Linux-enhetsdrivere
  • Karakter enheter
  • Registrering av drivere
  • Filoperasjoner
  • Lese- og skriveoperasjoner
  • IOCTL-grensesnittet
  • Hukommelseshåndtering
  • Rydding av drivere

9. Integrasjon av drivere og tilgang til maskinvare

  • Platformedenheter og -drivere
  • GPIO-programmering
  • Håndtering av avbrudd (interrupts)
  • Tidsstyrt arbeid og utsatt kjøring
  • Tilgang til maskinvareregister
  • Jobbing med minneavbildet I/O

10. Versjonskontroll med Git

  • Git-funksjonalitet
  • Håndtering av kildekode for kjernen
  • Greininger og sammenslåing (branching and merging)
  • Oppretting av patcher
  • Review av endringer
  • Samarbeid ved utvikling av kjernen

11. Praktiske øvelser med kjerneutvikling

  • Konfigurasjon av en tilpasset kjerne
  • Bygging og distribusjon av kjernen
  • Oppretting av en enkel kjerne-modul
  • Utvikling av en grunnleggende karakterdriver
  • Modifisering av enhetstre-filer
  • Felletsøking av kjerne-problemer på BeagleBone Black

12. Beste praksis og oppsummering

  • Kodestil for kjernen
  • Skriving av vedlikeholdbare drivere
  • Vanlige fallgruber under utvikling
  • Ressurser for kjerndokumentasjon
  • Arbeidsflyt for bidrag til åpen kildekode
  • Gjennomgang av nøkke-konsepter
  • Forespørsler og svar
  • Neste steg innen utvikling av Linux-kjernen

Krav

Basis kjennskap til bruk av GNU/Linux-system

 14 Timer

Antall deltakere


Pris per deltaker

Referanser (2)

Kommende kurs

Relaterte kategorier