Contattataci

Struttura del corso

1. Introduzione al Kernel Linux

  • Panoramica su Embedded Linux
  • Architettura del kernel Linux
  • Spazio utente vs. spazio kernel
  • Responsabilità del kernel
  • Flusso di lavoro per lo sviluppo del kernel
  • Panoramica delle piattaforme embedded supportate

2. Configurazione dell'Ambiente di Sviluppo

  • Preparazione della workstation di sviluppo
  • Concetti di cross-compilazione
  • Installazione degli strumenti di sviluppo necessari
  • Configurazione della scheda di sviluppo BeagleBone Black
  • Configurazione della console seriale
  • Avvio del dispositivo di destinazione

3. Acquisizione e Comprensione del Codice Sorgente del Kernel

  • Albero dei sorgenti del kernel Linux
  • Kernel stabili vs. kernel a lungo termine (LTS)
  • Download dei sorgenti del kernel
  • Esplorazione della struttura del codice sorgente
  • Documentazione del kernel
  • Gestione delle versioni del kernel

4. Configurazione, Compilazione e Avvio del Kernel

  • Configurazione del kernel con menuconfig
  • Selezione delle funzionalità del kernel
  • Compilazione cross del kernel
  • Creazione delle immagini del kernel
  • Installazione dei moduli del kernel
  • Panoramica sul bootloader
  • Avvio di un kernel personalizzato

5. Fondamenti dello Device Tree

  • Purposes dello Device Tree
  • File sorgente Device Tree (DTS)
  • Device Tree Blob (DTB)
  • Concetti di descrizione hardware
  • Modifica dei file Device Tree
  • Compilazione e distribuzione degli Device Tree

6. Moduli del Kernel Linux

  • Architettura dei moduli del kernel
  • Costruzione di moduli del kernel caricabili
  • Caricamento e scaricamento dei moduli
  • Parametri dei moduli
  • Dipendenze tra moduli
  • Interazione con i moduli del kernel
  • Tecniche di debug dei moduli

7. Debug del Kernel Linux

  • Logging del kernel con printk()
  • Utilizzo di dmesg
  • Debug dinamico
  • Analisi dei kernel panic
  • Messaggi Oops
  • Debug con GDB
  • Strumenti di base per il tracciamento delle prestazioni

8. Driver per Dispositivi Caratteri

  • Modello dei driver di dispositivo in Linux
  • Dispositivi caratteri
  • Registrazione dei driver
  • Operazioni sui file
  • Operazioni di lettura e scrittura
  • Interfaccia IOCTL
  • Gestione della memoria
  • Pulizia del driver

9. Integrazione dei Driver e Accesso all'Hardware

  • Dispositivi e driver di piattaforma
  • Programmazione GPIO
  • Gestione delle interruzioni
  • Timer e lavori differiti
  • Accesso ai registri hardware
  • Lavoro con I/O memorizzabile (memory-mapped I/O)

10. Controllo delle Versioni con Git

  • Fondamenti di Git
  • Gestione del codice sorgente del kernel
  • Rami e fusioni (branching e merging)
  • Creazione di patch
  • Revisione delle modifiche
  • Collaborazione nello sviluppo del kernel

11. Laboratori Pratici per lo Sviluppo del Kernel

  • Configurazione di un kernel personalizzato
  • Compilazione e distribuzione del kernel
  • Creazione di un semplice modulo del kernel
  • Sviluppo di un driver base per dispositivo caratteri
  • Modifica dei file Device Tree
  • Debug di problemi del kernel su BeagleBone Black

12. Best Practices e Riepilogo

  • Stile di codifica del kernel
  • Scrittura di driver mantenibili
  • Errori comuni nello sviluppo
  • Risorse per la documentazione del kernel
  • Flusso di lavoro per i contributi open-source
  • Revisione dei concetti chiave
  • Domande e risposte
  • Prossimi passi per lo sviluppo del kernel Linux

Requisiti

Conoscenza basilare dell'uso di un sistema GNU/Linux

 14 ore

Numero di Partecipanti


Prezzo per partecipante

Recensioni (2)

Corsi in Arrivo

Categorie relative