Tool di sviluppo, come per esempio schede di valutazione e sviluppo e ambienti di sviluppo integrati (IDE – Integrated Development Environment), eliminano gran parte degli oneri connessi allo sviluppo di un sistema e fanno in modo che la realizzazione di un progetto non sia più un’operazione condotta per tentativi. Non può dunque sorprendere il fatto che produttori di chip e fornitori di schede abbiano investito notevoli risorse nello sviluppo di tool di sviluppo, offerti a prezzi molto competitivi o addirittura a titolo gratuito, per promuovere ulteriormente le vendite dei loro prodotti. Uno dei metodi più semplici per entrare in confidenza con il mondo dell’elettronica è utilizzare una delle numerose e diffuse schede MCU embedded, come quelle proposte da Arduino e SparkFun. Schede di questo tipo, progettate per essere facili e divertenti da utilizzare, si sono rivelate un mezzo utile sia per l’apprendimento sia per sperimentare le idee degli utilizzatori. Poiché si tratta di schede di tipo general purpose, possono essere utilizzate sia per progetti hobbistici sia per scopi di prototipazione. In ogni caso, produttori di chip come Cypress e Texas Instruments (TI) realizzano kit di sviluppo a metà strada tra dispositivi per hobbisti e schede di valutazione professionali da impiegare per la prototipazione di dispositivi elettronici che andranno successivamente in produzione. Questi kit possono rappresentare un utile trampolino di lancio nel momento in cui gli sviluppatori imparano a utilizzarli perché pur mettendo a disposizione funzionalità molto semplici, come quelle delle schede Arduino o SparkFun, consentono agli utenti di interagire direttamente con chip e dispositivi hardware che potrebbero essere successivamente trasformati in un sistema elettronico prodotto in volumi. Detto questo, molti progettisti stanno utilizzando kit destinati al mondo degli hobbisti, come appunto Arduino, alla stregua di versatili tool per lo sviluppo e il collaudo.
Uno sguardo al mondo embedded
Il mondo dello sviluppo di sistemi embedded può generare una certa confusione, vista la molteplicità di prodotti hardware (e i relativi cloni) e la varietà ancora più ampia dei tool software disponibili. Per una migliore comprensione delle numerose opzioni che vengono offerte agli sviluppatori di sistemi, sia amatoriali sia professionali, è senz’altro utile una sintetica panoramica di un tipico ambiente di sviluppo. Naturalmente, l’elemento centrale dello sviluppo embedded è la scheda di sviluppo o di valutazione basata sulla MCU target. In generale, la differenza tra una scheda di sviluppo e una scheda ospitata a bordo di un prodotto finito è data dal fatto che la scheda di sviluppo fornisce un semplice accesso ai segnali interni e ai pin di I/O e risulta molto semplice da riprogrammare. Le schede di sviluppo possono anche essere corredate con funzionalità utili per gli sviluppatori come per esempio il controllo della velocità di clock avanzato. Per quanto concerne lo sviluppo del software esso ha luogo su un PC host o laptop (o anche su un dispositivo mobile, anche se quest’ultima opzione non è ancora molto diffusa) che è collegato alla scheda di sviluppo attraverso una porta USB, come pure mediante altri tipi di interfacce come per esempio una porta seriale, in funzione dei requisiti di progetto. Sono altresì essenziali strumenti di monitoraggio e collaudo più tradizionali come multimetri e oscilloscopi. Sul PC host girerà un IDE che fornisce l’accesso ai tool di sviluppo software – editori, compilatori, debugger, gestori di librerie e via dicendo. Oltre ai produttori di tool software e IDE per sistemi embedded, anche i singoli fornitori di hardware rendono disponibili IDE, tool e librerie per i loro specifici prodotti. Il software per la simulazione e l’emulazione, come per esempio i tool per la progettazione di PCB e per l’emulazione/progettazione di circuiti, può girare su un PC per fornire un supporto complementare. Le fasi iniziali dello sviluppo possono essere effettuate completamente sul PC host utilizzando il software del simulatore che emula l’hardware target. Nelle fasi successive dello sviluppo, l’esecuzione può essere trasferita sulla scheda hardware host. Ovviamente, uno sviluppo di tipo modulare risulta particolarmente utile in quanto permetterebbe di collaudare le funzioni singolarmente al fine di individuare eventuali errori (bug) hardware e software.
La scelta del software e dell’hardware più idonei
Vista la grande quantità di scelte e combinazioni disponibili, gli sviluppatori dovrebbero scegliere con molta cura l’hardware e i relativi tool software in funzione delle esigenze previste del loro progetto. È importante effettuare in anticipo ricerche e pianificazioni perché differenti piattaforme di sviluppo risultano più o meno adatte a seconda dell’applicazione e dell’hardware esterno. Inoltre, è necessario tener conto del supporto software e delle future evoluzioni al fine di ridurre il rischio di utilizzare un software che non è più manutenuto e aggiornato da coloro che lo hanno sviluppato. Ovviamente un approccio di questo tipo assume un’importanza ancora maggiore per tutti quei progetti per i quali è prevista una futura produzione in volumi. Molto spesso, naturalmente, il miglior IDE da utilizzare è quello fornito dal costruttore della scheda di sviluppo. Si consideri per esempio il caso del progetto di un alimentatore da banco controllato tramite touchscreen programmabile basato su Arduino DUE. Quest’ultima (Figura 1) è una delle schede Arduino in grado di garantire le prestazioni più elevate basata su un microcontrollore con core ARM a 32 bit e dotata di 54 I/O digitali e 12 ingressi analogici. Originariamente questo progetto si basava quasi esclusivamente sull’IDE Arduino standard.
Tuttavia, lo sviluppatore alla fine ha fatto ricorso a un tool di sviluppo visivo separato, EEZ Studio, per gestire processi quali la progettazione e l’animazione di un’interfaccia utente grafica (GUI) sul display touchscreen a colori dell’alimentatore poiché il supporto dell’IDE di Arduino per l’espletamento di tale compito era abbastanza rudimentale. Mentre i tool IDE standard risultano molto spesso i più adatti, a volte è necessario guardare oltre per ottimizzare lo sviluppo del software.
Si prenda per esempio il caso del progetto di una finestra «intelligente» sviluppata mediante il kit HYPERLINK di TI. L’obiettivo del progetto era realizzare una finestra adatta all’uso nelle abitazioni e negli uffici che potesse essere oscurata automaticamente in funzione della luce entrante, oppure tramite timer o ancora mediante un controllo remoto grazie a una app installata su un dispositivo mobile. La funzionalità di oscuramento è possibile grazie a un foglio di pellicola elettrocromica (ovvero in grado di trasmettere o bloccare la radiazione luminosa sulla base del potenziale elettrico applicato) che riveste la finestra di vetro. La gamma di kit SimpleLink di TI sono basate su schede di sviluppo “I/O centric” destinate ad applicazioni dove la connettività riveste un ruolo centrale come per esempio automazione delle abitazioni e degli edifici e installazioni e messa in esercizio (deployment) di applicazioni IoT (Internet of Things). La scheda specifica usata in questa progetto è la MSP432 corredata da una scheda aggiuntiva per il collegamento Wi-Fi. La scheda MSP432 è stata scelta in virtù di caratteristiche quali basso costo, disponibilità di un gran numero di connessioni di I/O e i bassissimi consumi, che si traducono in un aumento della durata della batteria. La batteria rappresenta un parametro di progetto molto importante perché è necessario posizionare la scheda controller il più vicino possibile alla finestra, con l’obiettivo di integrarla in un futuro nella struttura del telaio. Per questo motivo non era possibile ricorrere a una fonte di alimentazione esterna, per ragioni sia di natura estetica sia di costo.
Sebbene i kit LaunchPad di TI si propongano come validi tool di sviluppo basati sul diffuso IDE Eclipse, in questo caso specifico gli sviluppatori hanno fatto ricorso principalmente alla piattaforma di sviluppo cloud ibrida Bluemix di IBM. Essi hanno utilizzato questa piattaforma perché è stata espressamente progettata per applicazioni che dovranno rimanere collegate al cloud durante il funzionamento: grazie a una funzionalità di questo tipo l’ampliamento del progetto per gestire più finestre risulta un’operazione particolarmente semplice. Gli sviluppatori, inoltre, hanno valutato che Bluemix garantiva un supporto migliore per iOS e la realizzazione di una app per il controllore basata su iPhone/iPad era un aspetto critico del progetto stesso. Grazie al costo estremamente ridotto dei kit di sviluppo, abbinato a un’ampia scelta per lo sviluppo software di sviluppo, la realizzazione di progetti ad alte prestazioni è praticamente alla portata di tutti. Gli esempi di progetti reali descritti in questo articolo hanno evidenziato che un minimo di ricerca e di pianificazione permette di evitare potenziali insidie che possono presentarsi in fase di sviluppo, in particolare per tutti quei progetti con obiettivi ambiziosi e con la prospettiva di trasformarsi in prodotti commerciali.