Embedded Linux – Sistema Operativo Linux per Microcontrollori – Linux e uClinux

Embedded Linux – Sistema Operativo Linux per Microcontrollori – Linux e uClinux

Linux è diventato molto popolare perchè è stato lanciato come un progetto open source, sviluppato da un gruppo di programmatori molto appassionati. Può avviarsi su differenti sistemi, dai PDA ai semplici computer. Attualmente viene descritto come un OS pienamente portabile e versatile.

Linux Embedded si riferisce principalmente al Kernel Linux il quale è la base di ogni sistema operativo. Per applicazioni integrate, è personalizzato per ogni microprocessore. ARM è uno dei processori ampiamente usato con Linux come un sistema applicativo di processore. Un altro enorme vantaggio è il supporto per sistemi multiprocessore ed applicazioni simultaneamente in esecuzione.
Embedded Linux è utilizzato da diverse compagnie su piattaforme hardware per applicazioni specifiche, ad esempio Freescale lo utilizza per piattaforme i.MX.

uCLinux (Linux per MicroControllori) è una variante del sistema Linux senza l’unità di gestione memoria (MMU). È stato inizialmente creato partendo dal Kernel Linux 2.0. Oggi uCLinux è disponibile per le release del Linux Kernel 2.0, 2.4 e 2.6. Quando non è presente il supporto MMU, lo spazio del kernel e dell’utente sono la stessa cosa; inoltre non è necessario nessun sottosistema di memoria virtuale perché tutti i codici vengono eseguiti sul Privilege Level 0.

Un sistema operativo base ha differenti livelli di vantaggio: lo spazio del Kernel viene eseguito in modalità Supervisore ( Supervisor Mode) mentre le applicazioni utente in modalità Utente (User Mode). Solo lo spazio del Kernel ha accessi diretti alle risorse, alla memoria e ai dispositivi I/O.

Linux on Hardware
Fig.1 Linux sull’hardware

Come rendere differenti una versione di Linux per un PC ed una per applicazioni integrate? Innanzitutto dovete sapere che un sistema embedded di solito non ha un monitor né una tastiera o mouse per l’interazione con l’interfaccia utente (UI). Le applicazioni embedded usano connessioni con il mondo reale in analogico e in digitale, sia per l’ingresso che per l’uscita, pulsanti e switch per l’inserimento dei dati, protocolli UART/LAN/USB/ecc. per il trasferimento dei dati.

Input/Output on PC Machine vs Embedded System
Fig.2 Ingressi e uscite su un personal computer e su un sistema Embedded (Esempio)

Il Bootloader
Uno dei componenti più importanti in ogni applicazione embedded è il Bootloader. Le sue funzioni principali sono: inizializzazione dell’hardware sulla scheda, caricamento e avviamento del Kernel dalla memoria ROM. La memoria ROM è usata perché è una memoria non volatile (non richiede alimentazione per mantenere il contenuto).

Fig.3 Bootloader is located on first addresses.
Fig.3 Il Bootloader è posizionato sui primi indirizzi di memoria.
Come scrivere un driver Linux

Ogni driver Linux, chiamato anche modulo, necessita di due funzioni di base: init_module() e cleanup_module().
Esempio di un semplice Hello eLinux:


Per l’integrazione nel Kernel Liunux abbiamo bisogno di un’altra operazione:

- insmod (inserisci driver)
Per rimuovere il driver, bisogna eseguire il seguente comando:
-rmmod (rimuovi driver)
Per verificare se un driver è stato correttamente integrato:
-lsmod (elenca tutti i driver correnti)

Valutazione della scheda
Un’ottima scheda di sviluppo con processore ARM è stata distribuita da Cirrus Company. La EP9312 è un sistema su chip (system-on-chip) basato sul ARM920-T con velocità di 200MHz. E’ munito di alcune periferie per l’interfacciarsi con il mondo esterno: Ethernet, USB Host, display, ADC.

EP9312: ARM9, System-on-Chip Processor with Integrated IDE

Leggi anche la variante inglese: Embedded Linux - Linux Operating System for Microcontrollers

Scarica subito una copia gratis

Una risposta

  1. Avatar photo Emanuele 10 Agosto 2012

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend