EDA/SW/T&M
IoT
64
- ELETTRONICA OGGI 441 - NOVEMBRE/DICEMBRE 2014
l‘accesso a basso livello a un
dispositivo hardware specifico
attraverso una periferica o un
altro driver. La differenza tra
un driver e una periferica è ben
delineata. Quest‘ultima defini-
sce le informazioni base relati-
ve all‘hardware ma non rende
disponibili ulteriori funziona-
lità. Informazioni di questo tipo
possono essere utilizzate da un
driver posto al di sopra della
periferica. I driver, come pure
le relative interfacce, sono spe-
cifici di un determinato dispo-
sitivo hardware. Ne consegue
che se l‘applicazione contiene
codice che permette di acce-
dere all‘interfaccia API del dri-
ver, essa risulterà dipendente
dall‘hardware. I driver operano
a un livello basso di astrazione
e l‘utilizzo di un dispositivo a
livello di driver richiede la co-
noscenza di quella particolare
interfaccia del driver.
Alcuni driver sono disponibili
sotto forma di wrapper inclusi
in una libreria (library wrap-
per): essi mettono a disposizi-
one solamente una routine di
inizializzazione che viene rich-
iamata da un‘applicazione al
fine di configurare pin, clock e
registri. Dopo l‘inizializzazione è
possibile utilizzare le librerie dei driver delle periferiche del
fornitore di silicio.
Servizi dello stack
Questi servizi (rappresentati con il colore blue in Fig. 1) sono
i livelli più astratti di funzionalità. Essi forniscono un accesso
standardizzato e indipendente dall‘hardware ai dispositivi. I
servizi dello stack assicurano la portabilità di un applicazi-
one. Per esempio, se l‘applicazione utilizza in servizio TCP/
IP generico, esso resta inalterato nel caso una connessio-
ne Ethernet sia sostituita da un collegamento PPP o seriale.
Un’applicazione TCP/IP portatile opera esattamente allo stes-
so modo, sia che sia connessa a un UART o a una periferica
EMAC, poiché la piattaforma software gestisce i dettagli di
più basso livello.
Servizi software
Alcuni servizi sono statici e non
occorre che siano istanziati.
Essi non hanno una relazione
(diretta) come le periferiche
o altri servizi e semplificano il
supporto di funzionalità comuni
come il multithreading POSIX,
CMSIS, gestione degli interrupt
o del timer software. Questi
servizi software (Fig. 2) posso-
no essere aggiunti automatica-
mente nel caso fossero richiesti
da altri servizi.
Integrazione della
piattaforma software
Per integrare la piattaforma
software in un progetto con tool
TASKING per core Cortex ARM
basato su Eclipse è richiesto un
numero molto ridotto di opera-
zioni. In primo luogo è neces-
sario aggiungere al progetto il
documento della piattaforma
software.
I servizi software e gli stack dei
dispositivi richiesti sono ag-
giunti mediante il menu „Add“
abilitando il relative box di ve-
rifica (Fig. 3).
Una volta scelto uno stack del
dispositivo nel documento della
piattaforma software è possibi-
le selezionare gli stack disponi-
bili per quel dispositivo, mediante l‘opzione Grow stack up
oppure Grow stack down. Nella figura 4 sono riportati i bloc-
chi dello stack relativi a un‘interfaccia USART.
Gli stack del dispositivo possono essere configurati modifi-
cando le opzioni nella finestra „Proprietà“. Nella figura 5, ad
esempio, sono riportate le opzioni di configurazione relative
a un driver per un MAC Ethernet.
Una volta configurata la piattaforma software, tutti i file C e
i file di intestazione appartenenti ai dispositivi utilizzati sono
aggiunti (copiati) al progetto Eclipse. In caso di modifica dei
parametri del dispositivo, i file di progetto possono essere
aggiornati mediante il tasto „Generate Code“.
Dal codice sorgente del progetto embedded le funzioni della
piattaforma software sono richiamate come le altre funzioni
del linguaggio C. L‘assegnazione delle funzioni, i loro para-
Fig. 6 – Funzioni HTTP