Sistemi real time, anno accademico 2007-2008

Questa pagina funge da raccoglitore per il materiale del corso di sistemi real time tenuto alla facoltà di ingegneria dell'università di Pavia nell'anno accademico 2007-2008. Il corso tratta di due argomenti: linux-embedded e sistemi real time.

La pagina è, ovviamente, in evoluzione. La data di ultima modifica viene aggiornata dal mio editor, perdonate l'inglese.

Last modified: Tue Sep 16 11:00:42 CEST 2008

Personale responsabile del corso

Il corso è tenuto dall'ing. Alessandro Rubini, professore a contratto, con l'aiuto dell'ing. Tullio Facchinetti, ricercatore presso il laboratorio di robotica (piano C, ala vecchia). Il numero di telefono del laboratorio è 0382-985.517, quelli del docente sono 0382-529.{424|554} oltre al cellulazzo 349-26.89.041.

Lezioni:

Argomenti delle lezioni

Ogni voce indica una lezione di due ore. Il nome tra parentesi indica chi tiene la lezione:
AR = Alessandro Rubini,
TF = Tullio Facchinetti,
GB = Giorgio Buttazzo

(pausa per prove in itinere)

Materiale delle lezioni

Il materiale proiettabile è disponibile in formato pdf (4 pagine per foglio), come pagine html+png visibili via rete, come tar compresso dell'html per usufruirne sulla propria macchina.

Il materiale viere reso disponibile man mano

Il materiale realizzato durante le esercitazioni è disponibile in formato tar compresso e zip (le andate a capo sono comunque quelle Unix). Tali archivi creano una subdirectory che contiene i file.

Dispense aggiuntive

Questo materiale aggiuntivo è stato realizzato nell'ambito del corso:

Libri Consigliati

Non c'è un libro di testo che copra esattamente gli argomenti del corso. I libri qui indicati sono consigliati come letture utili ma non sono da considerarsi obbligatori.

Appelli d'esame

Queste sono le date e le aule. Non e` prevista l'iscrizione online, ma siete invitati a comunicarmi la vostra intenzione di presentarvi per posta elettronica (se a un appello non ci sono iscritti non viene preparato il testo).

Modalità d'esame

L'esame si compone di una prova scritta e una prova pratica. Lo scritto è composto da 8 domande su gnu/linux embedded e la teoria della schedulazione, più un esercizio di schedulazione. Le domande poste nell'anno accademico 2006-2007 sono raccolte in una pagina apposita. Ricordo che gli argomenti di quest'anno non coincidono totalmente.

La prova pratica consiste nella realizzazione di un progetto su sistemi real-time o almeno linux-embedded ed è obbligatoria per passare l'esame. Ogni progetto comporta l'assegnamento da 0 a 3 punti in aggiunta al voto dello scritto. Zero non dovrebbe mai succedere, mentre il punteggio di ciascun progetto è commisurato alla sua difficoltà.

Le proposte di prova pratica sono in pp.html.

Proposte di tesi

Le proposte di tesi saranno raccolte in una pagina apposita

Altri miei articoli che possono risultare utili

Sotto http://www.linux.it/kerneldocs/ sono raccolti gli articoli che ho scritto per varie riviste e che sono autorizzato a ripubblicare. Alcuni di questi coprono argomenti di interesse in questo corso. In particolare:

File di supporto presentati durante il corso

Sul linguaggio C

La tabella di tutti gli operatori del linguaggio C operator.tbl

Un tutorial di vi, datato ma funzionale: vi.ita. Se avete un sistema GNU/Linux, il comando vimtutor vi presenterà lo stesso tutorial ma in lingua inglese.

Programmi che disegnano sullo schermo

Un programma che usando mmap disegna un segmento che si muove sullo schermo (programma mostrato a lezione): userbounce.c . Per eseguirlo occorrono i permessi dell'amministratore e bisogna adattare gli indirizzi alla propria scheda video (quindi consiglio di leggere e capire ma non provare). Per compilare, invocare "make userbounce" anche in mancanza di makefile.

Il pacchetto compresso kbounce.tar.gz contiene makefile e sorgenti di due moduli mostrati a lezione che lavorano come userbounce: kbounce usa un kernel timer per eseguire ogni 10ms, mentre rtaibounce fa lo stesso lavoro registrando un task in tempo reale e un kernel timer per spampare le statistiche sui tempi di esecuzione ogni secondo. Per compilare, dichiarare le variabili di ambiente LINUXRTAI (la directory di installazione di rtai), poi chiamare make. Esempio:

export LINUX=/data/kernels/giocondo/linux-2.6.15-rtai
export RTAI=/opt/rtai-3.3-2615
make

Libstamp e altri programmi di esempio

Il codice che scrivo con finalità esemplificative si trova nella directory /pub/samplecode del mio server e in copia speculare su linux.it:
ftp://ftp.gnudd.com/pub/samplecode/
http://www.gnudd.com/pub/samplecode/
http://ftp.linux.it/pub/People/rubini/samplecode/

Strumenti per leggere/scrivere le periferiche da spazio utente

Questi programmi si compilano con make anche senza Makefile, specificando CC= ove necessario.

Altri riferimenti gestiti dai docenti:

La pagina sul laboratorio di robotica http://robot.unipv.it/toolleeo/courses/srt2007/, manutenuta dall'ing Facchinetti, contiene tutti i PDF delle presentazioni e altri riferimenti ed è da considerarsi complementare a questa pagina.

La versione originale di questa pagina (via ftp avete tutti i file, via http la pagina che potrebbe, per un mio errore, non collegare tutti i file inclusi):
ftp://ftp.gnudd.com/pub/srt-2007/
http://gnudd.com/srt-2007/

La copia speculare notturna su linux.it, dove la banda è maggiore:
ftp://ftp.linux.it/pub/People/rubini/srt-2007/
http://ftp.linux.it/pub/People/rubini/srt-2007/

Laboratorio di robotica: http://robot.unipv.it/

Pagina ufficiale del corso: http://www.unipv.it/ingegneria/didattica/schedacorso0607.php?cod=064095

Pagina ufficiale del docente: http://www.unipv.it/ingegneria/servizi/scheda.php?mat=800016


Alessandro Rubini