75
PORTING |
SOFTWARE
EMBEDDED
55 • FEBBRAIO • 2015
re in maniera sensibile il ciclo di progettazione.
La disponibilità di un’ampia gamma di schede di
sviluppo e di note applicative può rappresentare
un valido ausilio.
Porting del codice: alcuni suggerimenti utili
Nel caso si decida di eseguire il porting di un pro-
getto su una CPU a 32 bit è necessario prendere
in considerazione gli aspetti di seguito descritti.
Selezionare una CPU/MCU a 32 bit e il rela-
tivo IDE.
Nel caso si esegua per la prima volta
il porting su una piattaforma a 32 bit, è meglio
optare per un dispositivo semplice, riducendo
in tale modo i rischi di introdurre difetti nella
fase di in cui si sta acquisendo familiarità con
le differenze di un progetto che utilizza questo
tipo di piattaforma. Di conseguenza è meglio
scegliere un dispositivo di fascia bassa e un IDE
in grado di semplificare il processo di porting. Un
esempio è rappresentato dalla MCU PSoC4000
di Cypress Semiconductor supportata dall’am-
biente di sviluppo integrato PsoC Creator.
Scegliere un nuovo compilatore.
Quando
si effettua il porting del codice su una nuova
CPU è necessario scegliere un nuovo compila-
tore. Per le CPU a 32 bit è disponibile un’am-
pia gamma di compilatori, alcuni dei quali of-
ferti a titolo gratuito. GCC, ARM/Keil MDK
e IAR sono solo alcuni tra i numerosi esempi.
Accertarsi del corretto funzionamento dei
tool per la realizzazione e il debug.
In questo
caso è sufficiente generare un semplice program-
ma di test da utilizzare, ad esempio, a far lampeg-
giare un LED. In questo modo è possibile acquisi-
re esperienza preziosa, utile nelle fasi successive.
Riscrivere il codice assembler.
Il codice esi-
stente dovrebbe essere scritto in C (o in qualche
altro linguaggio ad alto livello). Qualsiasi porzio-
ne del codice scritto in linguaggio assembly per il
processore a 8 bit molto probabilmente non sarà
portatile. Quindi se nel progetto attuale è presen-
te del codice assembler, è buona norma eseguirne
la riscrittura in linguaggio C prima dell’inizio del
processo di porting.
Incapsulare il codice specifico della MCU.
Nel caso il codice sia di natura modulare (una
procedura consigliata di codifica), questo proces-
so potrebbe essere già stato eseguito. La porzione
di codice che interagisce direttamente con i regi-
stri della MCU, come ad esempio la lettura delle
porte di I/O, dovrebbe trovarsi in file separati ri-
spetto al resto del codice. È necessario incapsu-
lare il codice in questi file sotto forma di funzioni
con nomi generici come ad esempio UART_Recei-
ve(). A questo punto è possibile riscrivere queste
funzioni per la nuova MCU senza dover modifica-
re il resto del codice.
Altre modifiche architetturali
Una nuova CPU potrebbe consentire il trasfe-
rimento dell’esecuzione (offload) di determinate
funzioni dalla CPU alle periferiche. Un nuovo
ambiente di sviluppo potrebbe anche generare
in maniera automatica il codice. Per sfrutta-
Fig. 5 – Stadi di una pipeline del processore Cortex-M Processor (Fonte: ARM)




