Tu sei qui

Specifica e sviluppo di sistemi software real-time

Specifica e sviluppo di sistemi software real-time

Corso di laurea magistrale in Informatica F008

SCV0218
Docente: Luigi Lavazza


CFU SSD LEZIONI LABORATORIO ANNO LINGUA
6 ING-INF/05 40 16 I o II Italiano


Obiettivi dell’insegnamento e risultati di apprendimento attesi
Il corso affronta le problematiche relative allo sviluppo dei sistemi real time, partendo dalla specifica dei requisiti e arrivando alla progettazione e all’implementazione di tali sistemi. In effetti, il software real time presenta caratteristiche che lo differenziano decisamente dal software “tradizionale”. Queste differenze hanno portato alla costruzione di piattaforme per l’esecuzione di sistemi real time specifiche, che richiedono la conoscenza delle problematiche tipiche dei sistemi real time da parte dei progettisti e dei programmatori.
Obiettivo del corso è dunque presentare agli studenti le problematiche tipiche dello sviluppo di sistemi real-time (ed embedded), e le tecniche, metodi e strumenti specifici che si possono usare nella costruzione di software real-time.
I risultati di apprendimento attesi sono i seguenti.
Conoscenza e capacità di comprensione

  • Conoscenza delle caratteristiche dei sistemi real-time e delle problematiche connesse, che li differenziano rispetto ai sistemi software tradizionali.
  • Capacità di leggere e comprendere la documentazione (data sheet) di microcontrollori e periferiche embedded.

Conoscenza e capacità di comprensione applicate

  • Conoscenza e capacità di applicare metodologie specifiche di progettazione real-time.
  • Conoscenza e capacità di applicare tecniche di programmazione e costrutti software specifici per i sistemi real-time.
  • Capacità di descrivere e modellare sistemi real-time, sia per quanto riguarda l’ambiente sia per quanto riguarda la macchina hardware/software.

Autonomia di giudizio

  • Capacità di valutare le strategie di implementazione più convenienti, in base ai requisiti e vincoli presenti.
    Capacità di apprendere
  • Grazie alla capacità –sviluppata durante tutto il corso– di rapportare puntualmente tecniche, metodi e strumenti alle caratteristiche del software real-time, lo studente sviluppa la capacità di apprendere nuove tecniche, metodi e strumenti, e anche ad affinare ed adattare autonomamente quanto appreso nel corso.

Abilità comunicative

  • Conoscere e saper usare i formalismi normalmente usati per descrivere analizzare e progettare sistemi software real-time.
  • Conoscere la terminologia inglese comunemente usata nel campo.

Prerequisiti
Il corso presuppone la conoscenza degli argomenti trattati nei corsi di

  • Architettura degli elaboratori
  • Sistemi operativi
  • Programmazione concorrente

È inoltre opportuna una almeno discreta conoscenza del linguaggio C.

Contenuti e programma del corso

  • Introduzione ai sistemi real-time. Caratteristiche e problematiche. Implementazione del più semplice sistema real-time.
    4 ore di lezione
  • I/O fondamantale
    6 ore di lezione
  • Esecutivi ciclici su hardware nudo
    2 ore di lezione
  • Le machine a stati finite come strumento di progettazione. Le machine a stati finite come strumento di programmazione (conversion in codice di una macchina).
    5 ore di lezione
  • Multi-tasking. Motivazioni e caratteristiche. Comunicazione tra task. Sincronizzazione di task.
    5 ore di lezione
  • Real-time executive
    2 ore di lezione
  • Uso delle interfacce di input/output
    2 ore di lezione
  • Progettazione dei sistemi in tempo reale. Structured design for RT.
    2 ore di lezione
  • Progettare sistemi multitasking
    2 ore di lezione
  • L’approccio object-oriented per sistemi real-time. UML per sistemi real-time
    3 ore di lezione
  • Scheduling – Priority scheduling, Priority inversion, Tecniche per eliminare la priority inversion.
    2 ore di lezione
  • Scheduling con deadline - Earliest Deadline First, Least Laxity. Periodic scheduling. Scheduling in condizioni di sovraccarico.
    2 ore di lezione
  • Scheduling – Rate Monotonic Analysis
    1 ore di lezione
  • Laboratorio – General purpose I/O, watchdog
    4 ore di laboratorio
  • Laboratorio – Timer, abilitazione degli interrupt
    4 ore di laboratorio
  • Laboratorio – USART, ridefinizione delle funzioni di I/O della libreria C. Implementazione di System Tick e di software timers. Interrupt Service Routine.
    4 ore di laboratorio
  • Laboratorio – RTX: task, semafori, eventi, mailbox. Uso dei servizi RTX per risolvere problemi classici di sincronizzazione tra task.Illustrazione del progetto d’esame.
    4 ore di laboratorio

Tipologia delle attività didattiche
Vengono tenute lezioni frontali (per complessive 40 ore) e sessioni di laboratorio
(per complessive 20 ore).
Le lezioni frontali sono dedicate ad illustrare le problematiche della programmazione Real-time e i metodi e le tecniche comunemente usati per affrontarli.
Le sessioni di laboratiro sono dedicate a illustrare l’utilizzo pratico di uno strumento di sviluppo e simulazione (KEIL μVision). Viene illustrata il pratica la programmazione di un microcontrollore ARM (per la precisione, i microcontrollori dell afamigli ST Microelectrics STM32F10x). Viene anche illustrato l’utilizzo del real-time executive RTX. Le sessioni di laboratiro sono normalmente divise in due parti: nella prima il docente illustra l’usi degli strumenti e del microcontrollore di riferimento. Nella seconda gli studenti affrontano mediante gli stessi strumenti i probemi proposti dal docente.
L’impegno personale di rielaborazione autonoma da parte dello studente è tarato sul valore canonico di 25 ore complessive per CFU.

Testi e materiale didattico
Sono consigliati i seguenti testi:
Rob Williams, “Real-Time Systems Development”, Butterworth Heinemann, 2005
Andy Wellings, “Concurrent and Real-Time Programming in Java”, Wiley, 2004
Sul sito dell’e-learning dell’Università è fornito il materiale a supporto delle lezioni svolte in laboratorio:

  • i data sheet del microcontrollore di riferimento e delle periferiche in esso integrate
  • i manuali delle librerie software e firmware utilizzate
  • i manuali di RTX
  • il codice di tutti gli esempi mostrati e le soluzioni di alcuni problemi selezionati

Modalità di verifica dell’apprendimento
L’apprendimento è verificato mediante un esame che accerta l’acquisizione delle conoscenze e delle abilità attese tramite lo svolgimento di un progetto e di una prova orale.
Il progetto riguarda la realizzazione di un programma di dimensioni ridotte ma di complessità realistica. Il progetto è teso ad accertare la capacità degli studenti di individuare le caratteristiche salienti di un problema real-time, di selezionare la strategia corretta, di implementarla e di verificarne la rispondenza ai requisiti sia funzionali sia non funzionali (in particolare, la soddisfazione dei vincoli temporali).
Il progetto comprende anche la specifica e la documentazione sistematica del problema e della soluzione mediante una delle tecniche viste a lezione.
Il progetto viene valutato in trentesimi. La prova orale verte sull’accertamento della capacità di sintesi delle conoscenze acquisite, con particolare riguardo alla capacità di identificare gli elementi di teoria da utilizzare in attività di progettazione o programmazione real-time. La prova orale può variare il voto del progetto di un massimo di tre punti.

Orario di ricevimento
Durante il periodo in cui si svolge il corso il docente riceve nei giorni in cui c’è lezione. Al di fuori di tale periodo, su appuntamento.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer