FACOLTA' DI INGEGNERIA       Universita' di Pavia
Home
  Didattica > Insegnamenti0809 > Sistemi real-time
Organizzazione e Sedi
Immatricolarsi ai C.d.L.
Immatricolarsi ai C.d.L.M.
Orientamento
Didattica
Prenotazione Aule
Master
Esami: Iscrizioni online
Ricerca Scientifica
Servizi
Rapporti con Imprese
Tirocini didattici
Eventi e Iniziative
Bandi e Offerte lavoro
Esami di Stato
Mobilità/Erasmus
Rapporti di riesame
Assicurazione Qualità
Guida dello Studente
Scorciatoie
Cerca nel sito
Sistemi real-time

Insegnamento Anno Accademico 08-09

Docente/i: Alessandro Rubini  

Denominazione del corso: Sistemi real-time
Codice del corso: 064095
Corso di laurea: Ingegneria Informatica
Settore scientifico disciplinare: ING-INF/05
L'insegnamento è caratterizzante per: Ingegneria Informatica
Crediti formativi: CFU 5
Sito web del corso: http://gnudd.com/srt-2007/

Obiettivi formativi specifici

Lo scopo del corso e` fornire metodologie per lo sviluppo di sistemi in cui sia richiesto il rispetto di vincoli temporali sui processi applicativi e presentare lo sviluppo di sistemi embedded in ambiente GNU/Linux. Al termine del corso lo studente dovrebbe essere in grado di analizzare un problema di controllo in tempo reale e progettarne l'implementazione, come pure saper affrontare le normali problematiche che si incontrano nella realizzazione di un elaboratore industriale per usi specifici.

Programma del corso

Il corso e` diviso in due parti. Nella prima vengono trattate le problematiche di schedulazione e gestione di risorse condivise nei sistemi in tempo reale stretto. Nella seconda vengono trattati i sistemi embedded basati su kernel Linux: dal boot loader alla programmazione in spazio kernel alla realizzazione di un file system.

Sistemi in tempo reale stretto

  • Concetti introduttivi: problematiche di progetto di un sistema real-time; architetture gerarchiche modulari; tempo reale e prevedibilità; concetto di garanzia; requisiti ideali di un sistema real-time; modelli di processo e tipi di vincoli; problemi di schedulazione; tassonomia dei sistemi real-time.
  • Algoritmi di schedulazione: schedulazione di processi aperiodici; schedulazione preemptive e non preemptive; gestione di attività periodiche; server aperiodici a priorità statica e dinamica.
  • Protocolli l'accesso a risorse condivise: il problema dell'inversione di priorità e analisi delle possibili soluzioni; valutazione dei tempi di bloccaggio; considerazioni implementative.
  • Gestione dei sovraccarichi: controllo del carico dovuto ad attività aperiodiche attivate da eventi casuali; sovraccarichi in sistemi caratterizzati da attività periodiche; tecnica del job-skipping; cenni su processi periodici elastici, problema dell'overrun, tecniche di protezione temporale e meccanismi di resource reservation.
  • Meccanismi a supporto dei sistemi real-time: meccanismi di nucleo per il supporto di software real-time; temporizzazione; considerazioni sull'overhead di sistema; comunicazione sincrona e asincrona, bloccante e non bloccante; gestione delle interruzioni.
  • A supporto dell'attività didattica, verrà portato avanti lo studio dell'architettura del kernel real-time S.Ha.R.K., che implementa in modo modulare ed intercambiabile numerose soluzioni presentate durante il corso.

Programmazione di sistema

  • Ripasso di linguaggio C: preprocessore, macro variadiche, puntatori a funzione, allocazione statica e dinamica, stringhe e vettori, strutture dati, little-endian e big-endian, allinemanto dei dati, programmazione orientata agli oggetti in C.
  • Compilazione: compilatore assembler e linker, cross-compilazione, decompilazione e debugging, uso del gcc, compilazione di applicazioni, compilazione del boot loader, compilazione del kernel.
  • Struttura di un sistema GNU/Linux: kernel, spazio utente, chiamate di sistema, procedura di avvio del sistema, il processo init, primitive di comunicazione tra processi.
  • Memoria fisica e memoria virtuale: concetti di memoria virtuale e loro implementazione, DMA, accesso alle periferiche tramite mmap.
  • Gestione delle interruzioni: interruzioni ed eccezioni, gestori di interruzione, multiplexing e condivisione, interruzioni sulla soglia e sul livello, corse critiche.
  • Problematiche di concorrenza: accesso a risorse condivise e corse critiche, strumenti software per gestire l'accesso concorrente.

Linux Embedded

  • Definizione di sistema embedded, requisiti di memoria, processori supportati.
  • Componenti di una distribuzione embedded: busybox, glibc, uclibc. Tipi di filesystem
  • Dispositivi di memoria di massa: NOR flash, NAND flash, dispositivi esterni (USB, SD, HD, ecc.).
  • Applicazioni soft-real-time: primitive per la schedulazione in tempo reale, limitazioni del modello

Bus periferici

  • PCI: indirizzamento geografico, enumerazione, allocazione nello spazio fisico, allocazione nello spazio virtuale, primitive di accesso alle periferiche, problematiche di rimozione e inserimento a caldo
  • USB: full speed e high speed, controllori USB, classi di dispositivi, registrazione di un driver, gestione di URB e callback, accesso alle periferiche dallo spazio utente.
  • I2C: controllori I2C e accesso bit-banging, primitive software per la definizione di un bus i2c, accesso alle periferiche da spazio kernel e da spazio utente.
  • CAN: protocollo di comunicazione, controllori hw, caratteristiche "real-time" del bus, esempi di applicazioni.

Estensioni real-time del kernel Linux
Introduzione alle varie proposte disponibili: RTLinux-GPL, RTAI, Xenomai.

Prerequisiti

Nozioni generali sui sistemi operativi e analisi matematica. Conoscenza di base del linguaggio C (che verra` approfondito durante il corso).

Tipologia delle attività formative

Lezioni (ore/anno in aula): 25
Esercitazioni (ore/anno in aula): 25
Laboratori (ore/anno in aula): 0
Progetti (ore/anno in aula): 0

Materiale didattico consigliato

Materiale didattico fornito dal docente.

Giorgio Buttazzo. Sistemi in tempo reale. Pitagora Editrice, Bologna, 1995.

Modalità di verifica dell'apprendimento

L’esame consiste in una prova scritta che comprende domande aperte su GNU/Linux embedded e un esercizio di schedulazione real-time. Inoltre e` obbligatoria la realizzazione di un progetto ("prova pratica"), da concordare con il docente. Il progetto potra` essere svolto autonomamente sul proprio PC usando GNU/Linux o Shark, oppure nel laboratorio di robotica, con l'assistenza del docente e del personale del laboratorio. Il progetto svolto in laboratorio puo` essere realizzato su Shark, su Linux embedded in ambiente ARM, su microcontrollori con sistema operativo Erika o microcontrollori senza sistema operativo a bordo.

Copyright © Facoltà di Ingegneria - Università di Pavia