Riuso della proprietà intellettuale e progettazione collaborativa, semplificazione della portabilità tra architetture diverse, funzioni avanzate di editing, debugging e simulazione, espandibilità custom e incremento dell’efficienza di scrittura del codice sono solo alcune delle novità presentate con la nuova release 6.1 dell’ambiente di sviluppo di Atmel per la progettazione con i dispositivi AVR ed ARM.
La crescente complessità dei dispositivi a microcontrollore oggi presente sul mercato, se da un lato ha consentito di espandere significativamente l’insieme di applicazioni supportate, dall’altro ha allungato i tempi di sviluppo e imposto nuove metodologie di progettazione, ora basate sul riuso dei componenti e l’adozione di librerie esterne per la maggior parte delle funzionalità standard. Secondo una recente ricerca pubblicata dalla UBM Electronics, oltre la metà dei progetti attivi sono soggetti a nuova revisione, nella maggior parte dei casi per l’introduzione di nuova funzionalità software, in secondo luogo come conseguenza della necessità di migrare verso una nuova famiglia di microcontrollori per migliorare le prestazioni, ridurre i costi o semplicemente gestire problemi di obsolescenza. Evidentemente, ciò impone il riuso di moduli IP e la portabilità del codice (non soltanto tra diverse famiglie ma anche tra dispositivi di una stessa serie) per la riduzione del time-to-market entro limiti sostenibili.
La necessità di un nuovo modo di progettazione e scrittura del software ha avuto impatto, tra le altre cose, sugli ambienti di sviluppo IDE (Integrated Development Environment). Da semplici strumenti con funzionalità di editor di testo, compilazione e debug in circuit, gli IDE sono diventati nel tempo framework completi con capacità di archiviazione e riuso, appunto, dei componenti, supporto per revision control, generazione automatica della documentazione di progetto e, in alcuni casi, progettazione collaborativa oltre a presentare una serie di miglioramenti per incrementare l’efficienza nella scrittura del codice. Tra questi vi sono, ad esempio, l’analisi della sintassi prima della compilazione (per ridurre gli errori rilevati in tale fase) o il supporto per l’editing "context sensitive" (con la capacità di suggerire, durante la scrittura, una lista di funzioni "opportune" per il completamento automatico di quanto editato). Molti dei principali IDE presenti sul mercato, offerti direttamente dai produttori di microcontrollori o da terze parti, iniziano a proporre ed includere molte di queste funzionalità. Non fa eccezione la nuova release 6.1 di Atmel Studio [1], l’IDE di Atmel per la progettazione con i propri microcontrollori. Di seguito ne sono presentate le caratteristiche e novità più interessanti.
CARATTERISTICHE PRINCIPALI DELLA NUOVA RELEASE DI ATMEL STUDIO
La nuova release 6.1 di Atmel Studio, scaricabile gratuitamente dal sito web di Atmel, include il supporto per il sistema operativo Windows 8 e può coesistere con le precedenti revisioni (non richiedendo quindi che queste ultime siano disinstallate). Supporta sviluppo di codice in linguaggio C/C++ ed assembler, integrando le toolchain GCC per architetture AVR ed ARM (Figura 1) e consentendo di definire un proprio stile di scrittura, che meglio si adatti all’applicazione; supporta tutti i dispositivi AVR a 8, 16 e 32 bit, le nuove famiglie SoC wireless e le serie di microcontrollori ARM-based SAM3, SAM4 e SAM D20 con CPU Cortex- M.
L’editor testuale include funzionalità di visual assist e code completion per ridurre i tempi di scrittura del codice mentre un nuovo wizard semplifica la creazione di nuovi progetti, ex novo o a partire da una libreria di esempi di riferimento. Atmel Studio 6.1 integra, inoltre, un simulatore full-chip con modello accurato della CPU, delle relative interruzioni e periferiche e con supporto per stimoli esterni. E’ previsto, poi, il supporto per lo sviluppo collaborativo mediante un workspace, denominato Atmel Spaces [3], di tipo cloud-based, che consente di condividere in maniera sicura i progetti con i propri colleghi o all’interno della community, tracciandone evoluzioni e modifiche.
Atmel Studio 6.1 si integra con tutti i principali tool di Atmel, inclusi Embedded Debugger, AVR ONE!, JTAGICE mkII, JTAGICE3, STK500, STK600, QT600, AVRISP mkII, AVR Drago e SAMICE oltre che con il nuovo framework ASF (Atmel Software Framework) per lo sviluppo top-down ed un approccio alla progettazione fortemente orientato al riuso dei componenti (si veda di seguito per maggiori dettagli in merito). Atmel Studio 6.1 include, inoltre, QTouch Composer e Wireless Composer. Il primo supporta lo sviluppo di applicazioni touch-sensitive, con la capacità integrata di testing delle prestazioni, un analizzatore di potenza per il monitoraggio dei consumi in tempo reale e la possibilità di registrazione e visualizzazione mediante grafici dei dati generati per il debug. Il Wireless Composer, invece, rende disponibile un analizzatore delle prestazioni di rete wireless. Oltre a questi, poi, Atmel Studio 6.1 consente l’accesso diretto a tutta una serie di altri servizi forniti mediante web da Atmel, come ad esempio la Atmel Gallery o la Video Lounge.
La prima [4] è una galleria di vere e proprie estensioni dell’IDE, disponibili per il download gratuito o per uso commerciale; molte di queste poggiano direttamente sul framework ASF. Tra le più popolari vi sono, ad esempio, la libreria LUFA per lo sviluppo di applicazioni USB-based, quella AnkhSVN per il controllo di revisione o il package FreeRTOS+Trace per l’impiego dell’omonimo sistema operativo. Vi sono poi anche utility come Goanna Studio, che offre funzionalità di analisi statica del codice, Terminal Window, che integra il controllo della comunicazione seriale direttamente in Atmel Studio o Arduino IDE per la progettazione su tale piattaforma. E’ d’altra parte possibile, previa registrazione, creare proprie estensioni mediante il kit XDK (Atmel Studio Extension Developer’s Kit) e pubblicarle direttamente sul sito web Atmel, rendendole visibili ad oltre 100 mila utenti. Atmel Video Lounge [5] è, invece, una raccolta di video e tutorial sull’uso dei dispositivi Atmel e dei relativi tool software, che copre numerosi aspetti della progettazione, da quelli più semplici (come la generazione del file ELF in Atmel Studio 6 o l’impiego di un emulatore VI) alle nozioni più avanzate (come ad esempio una discussione dei metodi per la protezione della proprietà intellettuale), passando per la presentazione di caratteristiche e applicazioni tipiche dei principali kit hardware di sviluppo o delle nuove famiglie di dispositivi.
PROGETTAZIONE TOP-DOWN E RIUSO DEI COMPONENTI CON ATMEL STUDIO IDE E ATMEL SOFTWARE FRAMEWORK
Come accennato in precedenza, una delle novità più interessanti della nuova versione di Atmel Studio è l’integrazione con l'Atmel Software Framework [6] per la progettazione top-down e il riuso dei componenti. L'Atmel Software Studio (vedi Figura 2) è una collezione di driver e stack production-ready con interfaccia semplice e chiara verso il codice applicativo, da un lato, ma implementazione ottimizzata per l’architettura target e portabilità del tutto trasparente su architetture diverse, dall’altro. Ciò è ottenuto mediante la definizione, ad esempio, di macro function-like processate in codice inline al tempo di compilazione o l’inclusione delle differenze tra le diverse famiglie e tipi di compilatori all’interno di file header. L’ottimizzazione del codice per l’architettura target consente la realizzazione di applicazioni ad elevate prestazioni ma ridotto consumo di potenza.
La portabilità, invece, tra diversi microcontrollori semplifica la manutenzione del codice e la migrazione tra nuove architetture, ad esempio, per l’aggiornamento del sistema, la gestione dell’obsolescenza e il semplice passaggio dalla prototipazione alla produzione. Il framework ASF ha una struttura stratificata, con 4 diversi tipi di moduli, ovvero components, services, peripherals e boards. I primi definiscono in particolare le API di alto livello per l’impiego delle funzionalità (periferiche) disponibili, mentre i services implementano stack software application-oriented generici come, ad esempio, un file system, una libreria grafica o un protocollo di comunicazione su porta USB. Il livello peripherals rende disponibili i driver per l’accesso diretto alle risorse hardware mentre i moduli boards descrivono le schede vere e proprie, identificando, ad esempio, le funzionalità e periferiche effettivamente disponibili. Tutto il codice scritto per il framework ASF è caratterizzato da elevata leggibilità, con convenzioni di codifica chiare e comuni, ampia documentazione (con la descrizione dei diversi casi d’uso) e disponibilità di unit test per la verifica immediata delle funzionalità hardware.