Intrati in legatura

Schița de curs

1. Introducere în nucleul Linux

  • Panorama generală a Linux-ului integrat
  • Arechitectura nucleului Linux
  • Diferența dintre spațiul utilizator și spațiul kernel
  • Responsabilitățile nucleului
  • Fluxul de lucru pentru dezvoltarea nucleului
  • Panorama generală a platformelor embedded suportate

2. Configurarea mediului de dezvoltare

  • Pregătirea stației de lucru pentru dezvoltare
  • Concepte de compilare încrucișată (cross-compilation)
  • Instalarea instrumentelor de dezvoltare necesare
  • Configurarea plăcii de dezvoltare BeagleBone Black
  • Configurarea consolei seriale
  • Încărcarea în memorie (booting) a dispozitivului țintă

3. Obținerea și înțelegerea codului sursă al nucleului

  • Arborele de cod sursă al nucleului Linux
  • Nuclei stabili versus nuclee cu suport pe termen lung (LTS)
  • Descărcarea surselor nucleului
  • Explorarea structurii codului sursă
  • Documentația nucleului
  • Gestionarea versiunilor nucleului

4. Configurarea, compilarea și încărcarea în memorie a nucleului

  • Configurarea nucleului folosind menuconfig
  • Selectarea caracteristicilor nucleului
  • Compilarea încrucișată a nucleului
  • Construirea imaginilor nucleului
  • Instalarea modulelor nucleului
  • Panorama generală a bootloader-ului
  • Încărcarea în memorie a unui nucleu personalizat

5. Fundamentele Arborelui de Dispozitive (Device Tree)

  • Scopul Arborelui de Dispozitive
  • Fișiere sursă ale Arborelui de Dispozitive (DTS)
  • Blob-ul Arborelui de Dispozitive (DTB)
  • Concepte de descriere a hardware-ului
  • Modificarea fișierelor Arborelui de Dispozitive
  • Construirea și deploy-ul Arborescilor de Dispozitive

6. Modulele nucleului Linux

  • Arechitectura modulelor nucleului
  • Compilarea modulelor încărcabile ale nucleului
  • Încărcarea și descărcarea modulelor
  • Parametrii modulului
  • Dependențele modulelor
  • Interacțiunea cu modulele nucleului
  • Tehnici de depanare a modulelor

7. Depanarea nucleului Linux

  • Înregistrarea jurnalelor nucleului prin printk()
  • Utilizarea utilitarului dmesg
  • Depanarea dinamică
  • Analiza panicii nucleului
  • Mesaje Oops
  • Depanarea cu GDB
  • Instrumente de bază pentru trasarea performanței

8. Drivere de dispozitive de tip caracter

  • Modelul de drivere de dispozitive Linux
  • Dispozitive de tip caracter
  • Înregistrarea driverelor
  • Operații cu fișiere
  • Operațiile de citire și scriere
  • Interfața IOCTL
  • Gestionarea memoriei
  • Curățarea driverului

9. Integrarea driverelor și accesul la hardware

  • Dispozitive și drivere de platformă
  • Programarea GPIO
  • Gestionarea întreruperilor
  • Timmere și sarcini amânate (deferred work)
  • Accesul la registrile hardware
  • Lucrul cu E/I mapat în memorie

10. Controlul versiunilor cu Git

  • Fundamentele Git
  • Gestionarea codului sursă al nucleului
  • Rămuri și fuziuni (branching and merging)
  • Crearea patch-urilor
  • Revizuirea modificărilor
  • Colaborarea în dezvoltarea nucleului

11. Laboratoare practice de dezvoltare a nucleului

  • Configurarea unui nucleu personalizat
  • Construirea și deploy-ul nucleului
  • Crearea unui modul simplu pentru nucleu
  • Dezvoltarea unui driver de dispozitiv de tip caracter de bază
  • Modificarea fișierelor Arborelui de Dispozitive
  • Depanarea problemelor nucleului pe BeagleBone Black

12. Practici recomandate și rezumat

  • Stilul de codare pentru nucleu
  • Scrierea driverelor care sunt ușor de întreținut
  • Pitfall-uri comune în dezvoltare
  • Resurse de documentație a nucleului
  • Fluxul de lucru pentru contribuția la open-source
  • Revizuirea conceptelor cheie
  • Întrebări și răspunsuri
  • Pașii următori pentru dezvoltarea nucleului Linux

Cerințe

Familiaritate de bază cu utilizarea unui sistem GNU/Linux

 14 Ore

Numărul de participanți


Pret per participant

Mărturii (2)

Cursuri viitoare

Categorii înrudite