Sul blog di Elettronica Open Source puoi leggere non solo tutti gli articoli Premium riservati agli abbonati Platinum 2.0 e inseriti nella rivista Firmware 2.0 (insieme ad articoli tecnici, progetti, approfondimenti sulle tecnologie emergenti, news, tutorial a puntate, e molto altro) ma anche gli articoli della Rubrica Firmware Reload. In questa Rubrica del blog abbiamo raccolto gli articoli tecnici della vecchia rivista cartacea Firmware, che contengono argomenti e temi evergreen per Professionisti, Makers, Hobbisti e Appassionati di elettronica. Ecco un valido e apprezzabile strumento per lavorare in totale flessibilità sfruttando al meglio le caratteristiche della serie AT89LP, le soluzioni low power della famiglia 8051 di ATMEL.
Introduzione
In questo articolo proviamo a esaminare la nuova versione del tool di casa Atmel che permette di utilizzare con una flessibilità abbastanza rilevante le caratteristiche dei processori single chip basate su architettura 8051 in modalità low power. Ricordiamo che per utilizzare l’AT89LP Developer Studio è necessario avere preinstallata versione 2.0 del framework .NET di casa Microsoft (Riquadro 1). Il tool di casa Atmel si presenta con un Integrated Development Environment (IDE) in stile Windows capace di offrire una serie di funzionalità interessanti per chi sviluppa progetti embedded; infatti, la casa costruttrice ha deciso di integrare in questo developer studio un project management tools insieme ad un text editor oltre ad un efficiente simulatore e un debugger on-chip.
LE CARATTERISTICHE DI BASE DEL NOSTRO IDE
Una volta installato il prodotto, all’avvio l’AT90LP Developer Studio si presenta come in Figura 1, il che ci permette di tenere d’occhio in un colpo solo diverse viste; infatti, sulla sinistra notiamo la presenza della "Solution View" e dell’"Output View", mentre sulla parte destra si nota la "Watch List".
La "Solution View" contiene tre differenti schede: con la "File View" il Developer Studio propone l’elenco di tutti i file sorgenti che compongono il progetto, la "IO View" mostra la lista di tutti i registri del microcontrollore sotto esame, mentre la "Info View" contiene tutte le informazioni necessarie per un corretto uso del target. Al contrario, l’Output View contiene tre diverse schede che permettono di tracciare e tenere sotto controllo le diverse fasi del progetto. Infatti, con la "Project Configuration View" possiamo ricavare le informazioni sul progetto e l’ambiente di debug con lo stato dei driver delle periferiche insieme al simulatore, mentre la "Build View" mostra lo stato del progetto con tutti gli avvisi sul codice sorgente comprensivo degli eventuali errori occorsi in fase di compilazione insieme alla memoria occupata dall’intera applicazione. Infine, con la "Debug View" è possibile controllare tutte le azioni della sessione di debug sul target. L’ultima finestra esaminata è la "Watch List", questa offre una funzionalità simile a quelle mostrate dalla "IO View". In effetti, attraverso la "Watch List" è possibile monitorare registri o le aree di memoria tanto da evitare di spostarsi continuamente attraverso la "IO View" per controllare lo stato dei registri e locazioni di memoria di particolare interesse. Non solo, questa finestra consente di accedere in scrittura ai registri e alla memoria della lista con un notevole vantaggio in fase di debug perché permette il pieno controllo dello stato del microcontrollore in un colpo solo. Come un qualsiasi altro IDE che si rispetti, anche il nostro AT89LP Developer Studio offre un Project Wizard: uno strumento assolutamente interessante che permette di accelerare la fase di creazione del progetto. Infatti, il Project Wizard è utilizzato per aprire i progetti LP esistenti o per crearne nuovi.
CREIAMO UN NOSTRO PROGETTO
Per creare il nostro progetto può essere utile ricorrere al Wizard presente all’interno del tool; in effetti, occorre solo selezionare il bottone "Next" sulla prima pagina del Project Wizard per procedere e aprire la nostra area di lavoro. Una volta confermata la nostra scelta sarà necessario specificare il nome e il tipo del nostro progetto che intenderemo creare, Figura 3.
A ben vedere, la pagina ci presenta tre campi da selezionare: con "Project Name" dobbiamo specificare il nome che intendiamo assegnare al progetto, mentre con "Projet Location" è necessario specificare la cartella di lavoro. Infine, con "Project Template" possiamo definire il linguaggio che utilizzerà il nostro progetto al fine di associare tutti i template utili per il nostro scopo. In seguito, il Developer Studio, una volta confermate le scelte, ci consentirà di specificare il tipo di processore da utilizzare, Figura 4.
Come per la maggior parte dei tool presenti in commercio, anche questo offre un’interessante possibilità, ossia permette di selezionare l’ambiente di lavoro da utilizzare in relazione alla nostra reale disponibilità del target finale. Infatti, con l’AT89LP Developer Studio è possibile selezionare il simulatore o l’ambiente di debug reale una volta che possiamo disporre del target connesso alla linea seriale. Per entrare in modalità, per così dire, di simulazione basta selezionare "Simulate" presente nel toolbar di debug: la Figura 5 ci presenta la videata di una tipica sessione di lavoro.
In modalità debug è possibile ispezionare lo stato interno dei diversi registri del processore: dall’accumulatore (ACC o A) ai diversi registri identificati come general purpose (R4) o i registri P0, P0M0 e P0M1. Ricordiamo che questi registri sono accessibili attraverso la "Solution View" con "IO tab". Come tutte le sessioni di lavoro, l’utilizzatore ha la possibilità di sfruttare i diversi strumenti utili per le proprie sessioni di test: dal breakpoint alla modalità step by step del codice eseguibile e fino ad arrivare al monitoring dei registri o delle aree di memoria con il "Watch List", Figura 6.
LAVORARE CON IL TARGET
In una sessione di debug si ricorre al breakpoint per controllare il flusso di esecuzione dell’eseguibile perché permette di fermare il processore a uno specifico indirizzo: questa prerogativa permette di ispezionare la condizione e lo stato del microcontrollore. Ogni processore presenta differenti tipologie di breakpoint perché questa tecnologia è fortemente dipendente dalla piattaforma di debug e dal dispositivo in uso. I microcontrollori della famiglia LP di Atmel offrono 3 differenti punti di interruzione, ovvero Program Address, Range e Data break points. Il cosiddetto Program Address breakpoint garantisce l’interruzione dell’esecuzione del processore a un indirizzo specifico, un Data breakpoint, invece, è sollevato ogni volta che il microcontrollore accede a una memoria esterna con l’istruzione "MOVX", mentre un breakpoint di tipo Range può essere utilizzato ogni volta che si ha l’esigenza che il nostro programma si fermi quando l’indirizzo di esecuzione rientra in un intervallo definito in modo statico attraverso l’interfaccia grafica o IDE. Nei processori della serie LP esiste anche un Link breakpoint gestito dalla logica hardware esterna. Un Link breakpoint è più lento rispetto a un Hardware breakpoint perché l’indirizzo deve essere sempre monitorato per verificare se coincide con il valore in precedenza impostato. In modalità “simulazione”, esistono diverse restrizioni sul numero di breakpoint, o punti di interruzione, che possono essere impostati. Per impostare un breakpoint, l’IDE ci viene in aiuto consentendoci di definire un punto d’arresto senza particolari sforzi; infatti, per impostare un breakpoint del tipo Programm Address è necessario o selezionare il bottone "Toggle Breakpoint" sulla toolbar di debug o ricorrere alla shortcut F9. Al contrario, per selezionare un breakpoint di tipo avanzato è necessario utilizzare il breakpoint configuration manager selezionabile dal menu presente sulla videata principale (da Chip -> Breakpoint Configuration, come si vede in Figura 7).
CONNESSIONE CON IL TARGET
Per poter lavorare con un target fisico è necessario connettere il nostro Developer Studio con il target stesso attraverso una porta seriale presente sul nostro PC utilizzando l’opzione "Port Configuration" presente nell’interfaccia grafica. Ricordiamo che in assenza di una porta seriale è necessario utilizzare il solito adattatore USB-Seriale non compreso in questa distribuzione. Prima di stabilire una connessione tra PC e target è necessario impostare i parametri di comunicazione ricorrendo alla finestra di dialogo "Configure Chip Communication". Dalla Figura 8 si nota che con "Port Select" si seleziona la porta seriale presente su PC con gli opportuni valori di comunicazione, mentre con "Link Configuration" è possibile impostare, Figura 9, differenti velocità di trasmissione assegnando nuovi valori al "Target Frequency" e "Maximum Clock Divide" al fine di ottenere un nuovo baud rate.
Sempre dal "Chip Menu" presente sul workbench principale è possibile accedere a "Fuse Configuration": una modalità che ci permette di interagire con il processore configurando le sue diverse caratteristiche fisiche, Figura 10. Un’altra caratteristica interessante di questo Developer Studio è la possibilità di impostare protezioni ad aree di memoria dedicate per impedire accessi non voluti e partizionare le nostre strutture date. Infatti, l’AT89LP ci permette, con la finestra "Lock Bits" mostrata nella Figura 10, di impostare il cosiddetto lock bits del microcontrollore: in questo modo è possibile impostare la protezione delle memorie flash determinando dei privilegi di lettura e scrittura sulle memorie presenti sul target o disabilitare le protezioni stesse. Non solo, tutti i microcontrollori della serie LP dispongono di due differenti firme: User e Atmel Signature. La firma utente, o User Signature, è programmabile ed è di solito utilizzata per memorizzare i numeri di serie, le informazioni utili per la revisione del software, codici o altri parametri utente. Un utilizzatore può anche utilizzare le User Signature per registrare la configurazione del dispositivo. Al contrario, la Firma Atmel contiene l’ID del dispositivo del microcontrollore LP e una copia dei valori analogici di configurazione presenti nella seconda metà dello spazio Utente. La finestra AT89LP6440 Signature è mostrata in Figura 11. Dalla figura vediamo che i primi tre byte della firma mostrano l’ID del dispositivo per l’Atmel AT89LP6440, ovvero 0x1E, 0x64 e 0xFF.
CONCLUSIONE
In buona sostanza, l’AT89LP Developer Studio ci permette di lavorare in modo affidabile con questa famiglia di processori e offre un supporto diretto da parte di ATMEL. Infatti, questo tool, a differenza degli altri disponibili in commercio o open-source, è stato realizzato direttamente dalla casa costruttrice tanto da offrire una maggiore integrazione delle sue funzionalità con il mondo single-chip. Esiste, ad ogni modo, una valida alternativa open-source in accordo alla licenza GPL, GNU General Public License, in altre parole la versione 2.9.0 della suite Small Device C Compiler (SDCC): il suo eseguibile può essere utilizzato all’interno del workbench di ATMEL.