L'aumento della complessità dei sistemi embedded ha comportato un cambiamento nei fattori chiave che determinano la velocità di esecuzione di un progetto. La disponibilità di schede di sviluppo a basso costo totalmente equipaggiate, supportate da un ecosistema software completo e da un'assistenza tecnica di alta qualità, ha assunto oggi un carattere di grande importanza. Dieci anni fa, i fornitori di hardware potevano proporre semplici kit di sviluppo per microcontrollori e processori embedded corredati da una dotazione minima di software di supporto. Tipicamente, la mole dell'applicazione del cliente era tale da consentire di sviluppare tutto il codice in casa. I requisiti che impongono le applicazioni moderne, soprattutto in termini di comunicazioni, interfaccia utente e gestione remota, rendono estremamente impegnativo per gli sviluppatori di sistemi embedded implementare un prodotto utilizzando solo le proprie competenze software. Normalmente, il progetto deve essere completato con risorse provenienti da altre fonti. Ciò comporta per i progettisti competenze aggiuntive. Devono infatti capire come combinare tra loro componenti software di origine differente e spesso modificare i vari elementi per ottimizzarne l'integrazione. Tutto ciò ha generato una forte domanda di piattaforme dotate di un'infrastruttura pronta all'uso in grado di garantire questo tipo di integrazione.
La strategia ArchiTech
Tale esigenza ha guidato lo sviluppo della strategia ArchiTech di Silica. Nell'ambito di ArchiTech, Silica collabora con i principali fornitori di silicio per realizzare delle piattaforme di sviluppo completamente equipaggiate ma a basso costo. Ognuna di esse è supportata da un sistema di sviluppo software completo e da un supporto tecnico di eccellenza. Questa combinazione tra hardware, software e supporto, consente ai clienti non solo di esplorare a fondo le capacità dei dispositivi fisici ma, anche, di realizzare prodotti fruibili basati su una piattaforma facilmente personalizzabile. L'esperienza di Silica in fatto di progettazione hardware ha consentito di realizzare schede come Tibidabo, Hachiko e Pengwyn, tutte basate sulla tecnologia avanzata Arm Cortex-A di Freescale, Renesas e Texas Instruments. Per fornire il supporto software integrato per ciascuna di queste schede e per le altre soluzioni della famiglia ArchiTech, Silica ha sfruttato un ambiente open-source. Ciò ha permesso di ottenere delle piattaforme pronte all'uso e capaci di assicurare la flessibilità di controllo che i progettisti di sistemi embedded richiedono. Fornendo un pacchetto di supporto completo per ogni scheda sotto forma di software open-source, e mettendo a disposizione schemi completi e file di layout Gerber, si può guidare il cliente dal concetto iniziale fino alla prototipazione e alla produzione nel minor tempo possibile. La tecnologia open-source offre agli sviluppatori di sistemi embedded numerose opportunità. I vantaggi di questo tipo di tecnologia si concretizzano però solo quando essa si combina con una strategia che permetta di integrare strettamente il software con una vasta gamma di opzioni hardware. La chiave di questa integrazione è l'evoluzione delle piattaforme open-source che ruotano attorno al sistema operativo Linux. Linux offre un alto grado di scalabilità e un'infrastruttura software in rapida crescita, che gli Oem possono sfruttare per sviluppare progetti, ottimizzarli, effettuarne il debug e, rapidamente, portarli sul mercato. Sono parallelamente disponibili dei potenti strumenti open-source di supporto, destinati non solo alla manutenzione del codice e al controllo di versione ma anche allo sviluppo di interfacce grafiche per i sistemi embedded che sempre più spesso oggi richiedono interfacce utente avanzate basate su tecnologie come i touchscreen capacitivi. Tuttavia, l'ambiente Linux è complesso. Sono infatti disponibili numerose versioni che, nonostante offrano funzioni ed elementi simili, non sono pienamente compatibili tra loro. Questo rende difficile passare da una piattaforma all'altra per sfruttare set di funzionalità differenti, che potrebbero essere utili per specifici prodotti. Lo sviluppatore di sistemi embedded deve affrontare anche un'altra sfida: cercare di fare, in un contesto operativo potenzialmente più vincolato, ciò che era stato originariamente ideato per gli ambienti desktop e server. Ottimizzare un'applicazione per farla girare in un sistema senza display, o per adattarla a una memoria flash di dimensioni minime, può rappresentare un impegno significativo.
Un'architettura modulare e stratificata
Yocto Project è stata fondata nel 2010 da un gruppo di aziende del settore dell'hardware e software embedded come risposta ai problemi causati dalla crescente frammentazione di Linux nello spazio dei sistemi embedded. Invece di fornire una distribuzione Linux monolitica, che sarebbe difficile da ottimizzare in funzione della grande varietà di requisiti di piattaforma imposti dai sistemi embedded, Yocto supporta la personalizzazione attraverso un'architettura modulare e stratificata. Tale approccio permette di ridurre al minimo le incompatibilità tra distribuzioni differenti. La chiave della configurabilità di Yocto risiede nel tool BitBake. Questo strumento di generazione di progetto utilizza un insieme di file di metadati per configurare non solo il kernel ma anche il sistema e il software applicativo associato, in base a una proiezione finale del sistema stesso. BitBake gestisce tutte le fasi di generazione basandosi sulle definizioni fornite dallo sviluppatore per delineare le opzioni di configurazione e le dipendenze. Attraverso un attento controllo dei metadati, e sfruttando i vantaggi dell'architettura a livelli, è possibile passare da una piattaforma hardware all'altra effettuando poco più di una semplice ricompilazione. Le varie modifiche subordinate all'hardware, richieste ad esempio in caso di passaggio da una scheda di rete a un'altra o a una diversa variante del processore, sono a carico del compilatore e dei tool di generazione, i quali fanno riferimento ai meta-livelli hardware-dipendenti. Nel caso di altre piattaforme, passare da un processore all'altro o da una piattaforma hardware all'altra significa per gli sviluppatori riscrivere ampie parti del codice embedded. Con un’infrastruttura basata su Yocto, lo stesso tipo di transizione può richiedere semplicemente l'inserimento di una riga di codice nel generatore e nel pacchetto di supporto scheda. Attraverso l'uso di framework applicativi, quali Qt, è possibile estendere ulteriormente le doti di portabilità. Gran parte dello sviluppo può essere effettuato su un computer desktop, trasferendo successivamente l'applicazione al sistema embedded su cui gira Qt con alcune minime modifiche al codice. Questo, per esempio, permette di effettuare gran parte dell'attività di prototipazione dell'interfaccia utente prima di avere a disposizione l'hardware finale. Tuttavia, la creazione di un'infrastruttura basata su Yocto per semplificare la trasportabilità e l'integrazione è un esercizio sicuramente non banale. Le opzioni disponibili in BitBake sono numerose. Per chi deve creare le definizioni di piattaforma, Yocto comporta una curva di apprendimento molto ripida. Nonostante una combinazione ben progettata di Bsp e metadati possa ridurre al minimo gli sforzi di migrazione tra piattaforme hardware, sviluppare un'architettura capace di soddisfare le aspettative rappresenta un compito lungo e difficile, anche per i progettisti con maggiore familiarità con le opzioni di base. Per lo sviluppo e la cross-compilazione, l'ambiente Yocto richiede inoltre un host Linux che potrebbe non essere a disposizione di chi lavora in ambiente Windows.
Un portafoglio completo di schede
Una possibilità è quella di utilizzare una tecnologia virtual-machine che consenta di far girare l'ambiente Yocto su un Pc standard. Questo è l'approccio adottato da Silica nell'ambito della sua strategia ArchiTech. Tale soluzione è stata ideata per garantire i vantaggi della piattaforma Yocto a una base più ampia possibile di sviluppatori di sistemi embedded. L'ecosistema comprende un portafoglio di schede realizzate in collaborazione con i fornitori di processori, di microcontrollori e di altri componenti chiave, quali moduli analogici di I/O e Fpga. ArchiTech mette a disposizione una macchina virtuale basata sulla tecnologia VirtualBox che può essere installata su un Pc desktop per dare vita a un ambiente di sviluppo preconfigurato che consenta di arrivare al traguardo il più velocemente possibile. Da quando l'iniziativa ArchiTech è stata lanciata, nel 2013, il portafoglio di schede è cresciuto fino a includere 12 versioni, a supporto di progetti Rfid e Nfc, di interfacciamento analogico (utilizzando i moduli periferici Pmod di Maxim Integrated), di comunicazione wireless Wi-Fi o Ieee802.15.4, di connettività industriale e di video embedded. A differenza degli ambienti di sviluppo generici a microcontrollore, tipicamente offerti dai produttori di semiconduttori, ognuna di queste schede è particolarmente adatta a un'applicazione specifica. Ciò offre delle soluzioni concrete a molti dei problemi di progettazione e d'integrazione che i clienti incontrano man mano che lo sviluppo software e hardware procede verso il prodotto finito. In risposta a una specifica esigenza del cliente, o a una particolare richiesta di mercato, il team ArchiTech di Silica è inoltre in grado di sviluppare una nuova scheda in un lasso di tempo generalmente compreso tra le 12 e le 20 settimane. Yocto ha messo a disposizione un'infrastruttura software ideale per la famiglia di piattaforme hardware ArchiTech. Il passaggio tra le diverse piattaforme, necessario man mano che le esigenze cambiano, può essere facilmente gestito attraverso i meta-livelli previsti da Silica per il tool di generazione Yocto. Per consentire la personalizzazione e l'ottimizzazione dell'immagine del sistema embedded finale in funzione dell'applicazione, è disponibile il tool Hob. Hob utilizza un'interfaccia utente grafica che permette di semplificare la selezione dei pacchetti Linux da integrare nell'immagine di destinazione.
Un ambiente di sviluppo integrato
Benché Yocto offra un'infrastruttura altamente efficace per la generazione e la gestione della piattaforma, esso non rappresenta una soluzione di sviluppo completa per sistemi embedded. Sulla base delle ricette fornite da BitBake, Yocto genererà una catena di strumenti di cross-compilazione adatta per una determinata scheda di destinazione, insieme alle specifiche che verranno utilizzate dal linker e dai tool di generazione per garantire la corretta configurazione del codice in funzione della mappa di memoria. Yocto non prevede quindi alcun ambiente di sviluppo integrato. Silica ha risposto all’esigenza sfruttando l'Ide open-source Eclipse. Eclipse è un Ide completamente grafico basato su una tecnologia plug-in che consente agli sviluppatori di costruire una piattaforma personalizzata di generazione e di test del software. La piattaforma ArchiTech mette a disposizione un Ide preconfigurato che consente l'avvio immediato dello sviluppo applicativo e che, attraverso Eclipse, ne consente la completa personalizzazione. Oltre a Eclipse, le ultime versioni della piattaforma software ArchiTech includono Qt Creator. Questo semplifica agli sviluppatori il compito di fare leva sulle doti di portabilità e sugli altri benefici tipici di un framework di applicazioni open-source. Offrendo un flusso di sviluppo comune nell'ambito di una vasta gamma di schede, facilmente estensibile ad hardware di tipo personalizzato, ArchiTech permette di migliorare i livelli di efficienza consentendo agli ingegneri - al cambiare delle loro esigenze - di concentrarsi su un insieme comune di strumenti senza dover familiarizzare con le diverse sfaccettature delle distribuzioni Linux e dei relativi tool.
Un’innovazione nell’embedded
Essendo un ambiente di sviluppo completo - che include piattaforme hardware a basso costo, tool e software in grado di soddisfare un ampio novero di applicazioni - ArchiTech permette a Silica di disporre di una modalità innovativa e altamente efficace per supportare i propri clienti nel lungo periodo. La combinazione tra un hardware focalizzato e sviluppato in collaborazione con i principali produttori di semiconduttori, una distribuzione Linux consolidata e supportata internamente dagli ingegneri Silica, un supporto tecnico di altissimo livello e un programma completo di formazione per i tecnici dei clienti, permette di fare evolvere la progettazione embedded su nuovo piano. Ciò significa una maggiore rapidità nell'avvio delle attività di sviluppo nonché un livello superiore di velocità di completamento e di ottimizzazione del progetto.