Specifica e sviluppo di sistemi software real-time

Download Report

Transcript Specifica e sviluppo di sistemi software real-time

Specifica e sviluppo di sistemi software real-time
Corso di laurea magistrale in Informatica F008
A.A. 2013/14
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.