I microcomputer, o single board computer da qualche anno sono entrati nel nostro quotidiano, svolgendo applicazioni più o meno complesse.
Raspberry, con la sua architettura open source ha senza dubbio fatto la parte del leone in questo nuovo mercato, ma non è l’unica soluzione disponibile.
Ci sono infatti diversi competitor anche di marchi importanti (come Intel o Asus) che si sono approcciati a questi nuovi dispositivi.
Le applicazioni sono quasi sempre orientate o a small applications, come totem interattivi da inserire in negozi o in situazioni dove vi è una carenza di spazio, o alle (da tanto me amate) applicazioni industriali, dove la potenza grafica, che solitamente è la componente più dispendiosa in termini di potenza di calcolo, può essere sacrificata per far svolgere alla macchina operazioni più meccaniche, relative al controllo ed all’elaborazione degli ingressi e delle uscite.
I limiti di questi microelaboratori, sono a mio avviso nella mente dei programmatori, in quanto se si è pienamente consapevoli delle architetture che si hanno a disposizione e delle esigenze prestazionali che l’applicazione deve soddisfare.
La capacità tecnica della software house che decide di affrontare un progetto con un microcomputer deve essere quindi suddivisa su 3 livelli distinti:
- La conoscenza del sistema operativo
- L’ottimizzazione del codice sorgente
- L’ottima familiarità con l’hardware ed i vari protocolli di comunicazione
Vediamo quindi in dettaglio come devono essere applicate queste caratteristiche.
Conoscenza del sistema operativo
Differentemente dalle applicazioni desktop dove sono rarissime le situazioni in cui si sente un effettivo limite legato alla memoria o alla frequenza di elaborazione del processore con un microcomputer diventa importante avere piena coscienza delle possibilità che si hanno a disposizione, a partire dal sistema operativo, che può rivelarsi il nostro più grande limite.
In questi casi ovviamente tendiamo a privilegiare la scelta di un sistema operativo “linux based”, in cui la personalizzazione tramite moduli (come quello realtime, che riduce i ritardi nella comunicazione con le periferiche esterne) o modifiche nel codice permette di avere solamente quello di cui abbiamo bisogno, rendendo tutto molto più leggero, lasciandoci abbastanza area di manovra per installare le nostre applicazioni senza intasare il tutto.
Ottimizzazione del codice sorgente
Ovviamente dopo aver spremuto al massimo il sistema operativo sarà nostra massima premura ottimizzare il codice per evitare degradazioni delle prestazioni sul medio-lungo periodo (cosa putroppo fin troppo comune nelle applicazioni industriali).
La scelta del linguaggio, dell’architettura software e delle strategie da utilizzare sarà il vero fulcro di questa fase. Evitare i linguaggi interpretati o a scripting (Java, Python e simili) darà una importante spinta al progetto. Infatti quello che consiglio sempre quando si tratta di realizzare applicazioni che necessitano di accorgimenti particolari è di rimanere il più possibile ad un livello basso di programmazione, utilizzando linguaggi che permettono un pieno controllo sulla gestione della memoria e sui cicli di esecuzione del codice, in questo caso ad esempio il C è una delle migliori scelte da poter fare.
Familiarità con l’hardware ed i protocolli di comunicazione
Lavorare con un microcomputer in ambito di applicazioni industriali spesso implica una connessione più o meno stretta con altri elaboratori o dispositivi esterni. Per evitare di finire in un bagno di sangue è vitale sapere cosa si vuole ottenere sia in termini di risultato che in termini di velocità di risposta. Infatti, potrebbe rivelarsi una scelta intelligente l’utilizzo delle porte seriali vecchio standard (RS232) implementate nativamente sull’hardware del microcomputer a fronte di una comunicazione USB che necessita di piccoli accorgimenti software che possono rivelarsi limitanti nei confronti dell’ottimizzazione delle prestazioni.
Avere piena idea quindi dei tempi di risposta a cui andiamo incontro ci evita di sovradimensionare le strutture introducendo l’utilizzo di canali eccessivamente complessi che andrebbero a minare la stabilità del sistema.
LEAVE A COMMENT