Installare un kernel RT su BeagleBone Black

Ieri pomeriggio, dopo anni che non compilavo un Kernel, ho cross-compilato (BeagleBoneBlack ha un processore ARM) il kernel 3.8 con l’opzione PREEMPT_RT. Ed è andato tutto a buon fine.

Direttamente dalle riminiscenze dell’esame di Sistemi Operativi, i kernel multitasking possono essere essenzialmente di due tipi: cooperative o preemptive.

Senza entrare troppo nel dettaglio delle nuove tecnologie quali multi-core e multi/hyper-threading, essenzialmente una CPU può eseguire una istruzione alla volta. Pertanto per realizzare sistemi operativi multitasking è necessario creare una sorta di “gestore” (la parte del kernel che si occupa della gestione dei processi) che invia alla CPU le istruzioni da eseguire.

Tornando alle due tipologie, “cooperative” significa che un processo, non appena preso il controllo della CPU, esegue le sue istruzioni e poi ne rilascia, volontariamente, il controllo. Una gestione di tipo “preemptive”, invece, assegna ad ogni processo uno slot definito di tempo nella CPU e, al termine, forza il processo in esecuzione a “cedere il passo”.

Ovviamente la realtà non è proprio così: i processi di scheduling sono molto più complessi ma diciamo che come visione generale può andare bene.

La domanda successiva che viene in mente è: ma perché installare un Kernel Preemptive ?

Beh, in certe situazioni (automazione, controllo industriale…) è necessario riuscire ad avere tempistiche precise sia di calcolo che di trasmissione dei segnali: solamente un kernel in “real time” permette di assicurare l’esecuzione di un processo in un certo arco temporale.

Tornando al progetto del Quadricottero, penso ad esempio al controllo degli ESC (Electronic Speed Controlo) che gestiscono i motori: è fondamentale avere sia il controllo che precise tempistiche di gestione degli stessi, altrimenti il quadricottero cade !

Comunque, per chi volesse sperimentare il “real time” su BBB, le istruzioni per farlo (ed anche per sostituire Angstrom con una Debian) sono qui: http://dev.ardupilot.com/wiki/building-for-beaglebone-black-on-linux/

Eventualmente, per i più ardimentosi, nel repository ufficiale è già disponibile anche il kernel 3.13 e relative patch: https://github.com/beagleboard/kernel

Unica nota: per ottenere l’IP della BeagleBoard è necessario installare sul PC di lavoro un server DHCP (come udhcpd) e configurarlo. Controllando il log di sistema (tail -f /var/log/syslog) oppure utilizzando “nmap -sP [range IP]” è possibile risalire all’IP assegnato 

(Visitato in totale 6 volte, oggi 1 visite)
1 comment

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.