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
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.
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)
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.
Questo materiale aggiuntivo è stato realizzato nell'ambito del corso:
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.
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).
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.
Le proposte di tesi saranno raccolte in una pagina apposita
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:
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.
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
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/
make anche senza
Makefile, specificando CC= ove necessario.
mapper.c: stampa su
stdout i dati che legge tramite mmap.wmapper.c: legge da
stdin e scrive tramite mmap.devmem2.c: legge o scrive
un singolo registro dalla memoria fisica tramite /dev/mem.inp.c: legge un byte da una "porta"
di input (solo il PC ha il concetto di "porta" separato dalla "memoria").outp.c: scrive un byte su una "porta"
di output (solo il PC ha il concetto di "porta" separato dalla "memoria").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