Corso Sviluppo Driver Linux per Embedded Systems
Descrizione corso
L’obiettivo del corso Sviluppo Driver Linux per Sistemi Embedded, organizzato in 4 giornate, è quello di fornire le conoscenze necessarie per lo sviluppo di driver di periferica per sistemi Linux. In particolare la quarta giornata sarà dedicata allo sviluppo di driver per periferiche I2C e SPI, tipiche dei sistemi embedded.
In ogni lezione saranno alternati concetti teorici ed esercitazioni pratiche svolte su PC assegnati ai partecipanti, durante le quali saranno sviluppati driver di esempio che permetteranno di applicare immediatamente i concetti acquisiti.
Al fine di garantire una ottimale interazione studente/docente, le classi saranno composte da non più di 5 studenti.
Il corso è rivolto ad aziende e liberi professionisti.
Introduzione
- astrazione delle periferiche in Linux
- classi di dispositivi (character, block, network)
- Linux VFS e device file
- struttura e organizzazione di un driver
Moduli del kernel Linux
- scrivere e compilare un semplice modulo
- gestire i moduli dalla linea di comando
- parametri e licenza dei moduli
- debugging di moduli del kernel
Driver a caratteri
- major e minor number
- registrare un device file a caratteri
- tabella delle operazioni su file
- trasferire dati tra spazio utente e kernel
- metodi open, close, read e write
Gestione del tempo
- timekeeping
- introduzione di ritardi
- waitqueue
Attività procrastinabili
- contesti di esecuzione del kernel e relative restrizioni
- timer legacy ed ad alta risoluzione
- tasklet
- workqueue
Gestione della concorrenza
- kernel preemption
- quando la sicronizzazione è necessaria
- variabili per-CPU
- operazioni atomiche
- barriere di memoria
- identificazione delle sezioni critiche
- spinlocks
- semafori e mutex
- abilitare e disabilitare le interruzioni
Allocazione della memoria
- introduzione alla gestione della memoria in Linux
- allocare page frames
- kmalloc e le sue varianti
- kvalloc
Rilevazione dei dispositivi e supporto per i bus
- supporto Linux per bus PCI
- supporto Linux per bus USB
Comunicazione con l'hardware
- porte di I/O
- memoria di I/O
- allocazione e mapping di spazi di I/O
- funzioni per leggere e scrivere porte e memorie di I/O
Gestione delle interruzioni
- IRQ legacy, MSI e MSI-X
- registrazione di un gestore delle interruzioni
- come scrivere un gestore delle interruzioni
- separazione tra gestori top half e bottom half
File operations avanzate
- mmap
- ioctl
- I/O bloccante e non
Driver per dispositivi I2C
- introduzione al bus I2C
- sottosistema I2C del kernel Linux
- operazioni di I/O su bus I2C
Driver per dispositivi SPI
- introduzione al bus SPI
- sottosistema SPI del kernel Linux
- operazioni di I/O su bus SPI
Il corso puo' essere svolto presso la nostra sede di Roma, in via Roggiano Gravina, 37 (zona Anagnina), oppure, su richiesta, presso la sede del cliente.
Al fine di poter attendere il corso con il massimo profitto è consigliato che i partecipanti siano in possesso delle seguenti conoscenze:
- Esperienza di programmazione nel linguaggio C.
- Familiarità con sistemi Linux.
Modulo di richiesta informazioni per il Corso Sviluppo Driver Linux per Embedded Systems
-
Share
- Tweet