Corso linux device drivers

Questo corso fornisce le informazioni necessarie per iniziare a sviluppare Device Drivers per Linux. Verrà insegnato come configurare, eseguire e debuggare un device driver su un reale dispositivo. Le tecniche apprese sono applicabili ai sistemi embedded ma sono indipendenti dalla piattaforma e quindi portabili su ongi architettura Tutti gli esercizi di laboratorio verranno compilati e testati su una scheda di sviluppo basata su ARM, BeagleBone Black.

BBB Nunchuck

Dettagli

  • Durata: 1 giorno (dalle 9:00 alle 18:00)
  • Tipologia: ~50% presentazioni, ~50% esercizi pratici
  • Lingua slides e materiale fornito: Inglese
  • Lingua presentazione orale: Italiano o Inglese
  • Numero partecipanti: massimo 10 persone

Attrezzatura richiesta

Ogni partecipante deve disporre di un Laptop su cui verrà installata una Macchina Virtuale fornita dal docente all’inizio del corso. Tutto il materiale necessario viene fornito da Koan tranne il PC. Pertanto i partecipanti devono avere il proprio computer portatile con:

  • Laptop PC con almeno 8 GB di RAM e 40 GB di spazio libero su disco.
  • Virtual Box installato (scaricabile da qui).
  • Lavoreremo con Lubuntu Desktop 22.04 (64 bit). (Non supportiamo altre distribuzioni, perché non possiamo testare tutte le possibili versioni).
  • Connessione a Internet (diretta o tramite il proxy aziendale).
  • Per ragioni di sicurezza è necessario che ogni partecipante esegua il backup del proprio computer prima del corso.

Hardware utilizzato

Gli esercizi pratici saranno svolti su una scheda con CPU Cortex ARM BeagleBone Black fornita in prestito durante il corso.

beagleBone Black training

Tutti gli esercizi effettuati saranno applicabili a qualsiasi altro tipo di scheda.

Materiale fornito in prestito

  • BeagleBone Black (TI AM335x)
  • Customized board with LED and button
  • Nunchuck (Accelerometer)

Cosa sarà sviluppato e testato

  • Minimal driver
  • Character drivers
  • Driver with udev management
  • Driver with timer (blink led)
  • Driver with INT (push button)
  • I2C driver for Nunchuck (Accelerometer) management

Prerequisiti

Per ottenere i migliori risultati da questo corso è consigliabile conoscere i seguenti argomenti:

  • Conoscenza di Linux embedded come descritto nel nostro training su Linux embedded
  • Conoscenza di base della shell da riga di comando
  • Conoscenza di programmazione C
  • Esperienza con Embedded GNU / Linux (kernel, spazio utente, file system root, strumenti)
  • Conoscenza e pratica dei comandi Unix o GNU / Linux
  • Conoscenza dei cross-compilatori
  • Conoscenza del kernel Linux
  • Conoscenza del bootloader u-boot

Struttura del corso

Di seguito sono elencati alcuni degli argomenti trattati durante il corso.

Device driver basics

  • Types of device driver
  • Different ways for applications to interact with the driver
  • Building and testing a simple character device driver

Kernel Modules

  • get kernel sources
  • configure/build/install
  • device drivers (statically linked, loaded at runtime)
  • Writing a module and compiling “out of tree”
  • Loading and testing on the target
  • Passing parameters
  • Modules and the GPL license
  • init/exit
  • licensing
  • EXPORT SYMBOL GPL
  • out of tree makefile
  • module-init-tools
  • module in kernel tree
  • Kconfig and Makefile

Character Device Drivers

  • architecture
  • user/kernel interface
  • I/O subsystem
  • VFS
  • sysfs (devices, bus, drivers, classes),
  • kobject/ktype/kset
  • linux kernel driver model
  • device files
  • char driver
    • initialization
    • registration
    • open, release
    • cdev, cdev add, cdev del,…
    • major/minor numbers
    • udev, udevmonitor, udevadm

Interrupts

  • interrupts vs. polling
  • interrupt
  • program sections
  • reentrancy
  • events
  • interrupt handler
  • shared interrupt handler
  • interrupt flow
  • interrupt control

Deferring Work

  • top/bottom halves
  • softirqs
  • tasklets
  • work queues
  • threaded interrupts

Prossimi Corsi Device Drivers

No Events
No Events

Prossimi Corsi

Date Type Location Language Book
06/06/2024 - 12/06/2024 Linux Embedded and Yocto Project training italiano Book