La vita prima di Arduino
- dino scappaticci
- 26 feb 2017
- Tempo di lettura: 5 min

Nella didattica e nella progettazione va di moda la piattaforma hardware chiamata Arduino. In questo post vediamo nel dettaglio di cosa parliamo e come ha cambiato l'attività di prototipazione.
Ogni sistema a microprocessore ha una serie di necessità, che sono principalmente raccolte in Hardware, software e tool di sviluppo.
Quello di cui vi racconto è cosa succedeva nei meravigliosi anni 90, quando tutto il processo di realizzazione di un prodotto doveva essere scritto e prodotto ad hoc, pensando in maniera dettagliata il progetto nel suo insieme. Il time to market di un prodotto in questo modo, potete ben capire, era quasi indeterminato.

Hardware
Le variabili in gioco erano principalmente la costruzione di una scheda con a bordo: alimentazione, un microprocessore, della RAM, una flash EPROM e una interfaccia RS232. A contorno vi sono le varie periferiche che devono realizzare il lavoro per cui era destinato il progetto.
Costruire una scheda funzionante non è cosa da poco, ci troviamo di fronte ad un bus, una sezione di alimentazione e tutto deve funzionare al primo colpo (non succedeva mai) perché il costo di produzione di una scheda era considerevole, ristamparla con modifiche voleva dire uscire fuori dal budget.
Una volta montata la scheda, andava testata elettricamente per verificare che tutte le connessioni erano corrette e quindi si procedeva a montare in successione i chip a uno a uno verificando che non vi erano problemi. Unico sistema di verifica era un oscilloscopio e tanta pazienza.
Boot Loader
A questo punto abbiamo una bella scheda che in effetti non fa nulla. Serve un software che deve essere programmato fisicamente sulla eprom. Questo software permette di trasferire i file compilati sulla eprom ed inizializzare i registri della CPU, lo stack, l'heap e attivare la seriale. Senza di esso, ogni modifica ai programmi deve essere fatto con un programmatore di eprom esterno, con una perdita di tempo notevole inoltre non è possibile programmare in C e tutto diventa decisamente più complicato.
Il boot loader presenta diverse difficoltà, è programmato in assembler, diverso da CPU a CPU, e per ogni CPU possono cambiare: numero di bit 8, 16 e 32, Big Endian o little Endian e dulcis in fundo bug sul bus non previsti o il Watch Dog che ti entra in funzione e non te ne accorgi.
Ad ogni test e modifica, la flash o le flash (a seconda dei bit) devono essere rimosse e riprogrammata esternamente. Diciamo che porta via molto tempo a volte anche settimane, specialmente se la CPU era nuova e non l'avevi mai usata
Compilatore
Il compilatore è quel tool che ti permette di prendere un sorgente scritto in c/c++ trasformare il codice in linguaggio macchina e quindi un linker che collega tutte le varie chiamate creando di fatto il file che verrà inviato nella eprom e quindi eseguito dalla cpu.
Impostare il compilatore e capire le sue funzionalità non era cosa facilissima. Non esistono standard come oggi. Ogni CPU ha il suo compilatore che doveva essere acquistato a parte..
Software di test
A questo punto possiamo pensare di costruire il nostro bel programma di Hello Word, ma non abbiamo un display, l'unica alternativa è utilizzare la seriale ed un terminale, ma dobbiamo scrivere i driver per comunicare con un terminale. La soluzione è molto semplice, la trovate anche su Arduino si chiama Blink. Si scrive un programma che contiene un loop infinito e ogni volta cambiamo il valore di una porta da 0 a 1. Con l'oscilloscopio dovremmo vedere una bella onda quadra. A questo punto il grosso è fatto, possiamo cantare vittoria! non è proprio così.
Ricordiamo che la scheda l'abbiamo costruita noi, è un prototipo, dobbiamo testare che tutte le porte funzionino, che i collegamenti sono eseguiti correttamente. Vanno costruiti software ad hoc di test, si deve verificare che la memoria viene letta e scritta correttamente.
Driver
Ogni periferica collegata con la scheda ha necessità di un suo driver, di una routine che inizializza il chip e delle chiamate di funzione per poter eseguire un determinato compito. Per esempio ApriPorta, ChiudiPorta e StatoPorta, oppure se parliamo di pilotare un display scrivi carattere scrivi una stringa, vai a capo, vai su e giù con il cursore. Insomma si deve programmare tutto, insegnare al micro processore cosa deve fare alla chiamata di una funzione.
Il software
A questo punto si poteva scrivere il software, il programma che farà funzionare effettivamente l'hardware progettato. Io solitamente mi creavo un ambiente simulato sul PC, scrivevo il programma e poi di tanto in tanto testavo le routine sull'Hardware verificando che tutto funzionava. Risparmiavo in questo modo molto tempo, compilare con il turbo C/C++ era molto più performante. Infatti, altrimenti, era necessario compilare il programma, realizzare il file Ascii ed eseguire il download del file tramite la RS232, Questa attività comporta che si deve aspettare anche qualche minuto, le eeprom erano lente da programmare.
Prototipo
A questo punto il cliente aveva ottenuto un prototipo del suo prodotto, che doveva essere comunque reingegnerizzato e riorganizzato per ottenere il prodotto finito, all'interno di un bel case sicuro e utilizzabile per l'utente finale.
Arduino cos'è cambiato
Con arduino e prima di lui altri tool di sviluppo, tutto quello che abbiamo letto si è semplificato notevolmente.
Arduino ha portato un sistema di sviluppo con compilatore, schemi open source e schede collegabili e compatibili fra le varie versioni. La standardizzazione dei connettori, dell'alimentazione, l'RS232 già presente e il boot loader già caricato praticamente ha risolto gran parte dei problemi che si proponevano negli anni 90 per far partire il progetto. In pratica il progetto è già partito quando lo si pensa.
Possiamo costruire il nostro prototipo collegandoci sulle porte i/o presenti. Tipicamente i driver per i vari chip sono già scritti nelle innumerevoli librerie, al limite devi solo integrarli con le tue necessità.
In sostanza è rimasto semplicemente di scrivere il software e fare il debug delle periferiche che dobbiamo pilotare. Vi assicuro che è poca cosa rispetto alla progettazione di diversi anni fa che vi ho descritto.
Arduino è open source, questo è il suo punto di forza, quindi il passaggio dal prototipo al prodotto finale consiste nella semplice fase di reingegnerizzazione della scheda.
Semplice la vita dei giorni nostri, dobbiamo semplicemente scegliere il tipo di scheda Arduino Uno, Mega 2560 ... e scrivere il software.

Come Arduino ci sono diverse altre piattaforme di sviluppo più o meno open source, quindi possiamo trovare classi di CPU e dispositivi che permettono di realizzare un prodotto ottimale sulle specifiche del cliente.
Alcune di queste sono compatibili con i tools di arduino, altre necessitano di tools e librerie a parte. Il punto di forza è comunque sempre la comunità che si sviluppa attorno ad un progetto ed arduino ha la comunità più vasta, sono presenti schede per qualsiasi attività (GSM, LAN, Display, GPS, Relay I/O).
Possiamo dire che il Time to market di un nuovo prodotto è decisamente migliorato con strumenti come questi. In alcuni casi non è nemmeno necessario progettare nuove schede, ma semplicemente integrare fra di loro sistemi già esistenti.
Il resto è conoscenza, saper collegare e far funzionare il nostro nuovo dispositivo.
Da questo punto partono molti dei nuovi progetti che vanno sotto lo pseudonimo di IoT l'internet delle cose.
Dino Scappaticci

Yorumlar