martedì 25 giugno 2013

Programmare gli XMega tramite USB con Atmel FLIP ed Atmel Studio

Vediamo in questo articolo come programmare il nostro microcontrollore tramite il programma Atmel FLIP.

atmelusb

La nostra scheda di sviluppo EWS ATXMega32A4U contiene un bootloader compatibile con il protocollo FLIP USB DFU (descritto dall’Application Note AVR4023) che permette la programmazione tramite interfaccia USB senza la necessità di programmatori aggiuntivi.

Una nota per gli appassionati della piattaforma Arduino: anche su Arduino Uno e Mega2560 è presente il bootloader USB sul chip Atmega8U2 che è possibile aggiornare con FLIP (http://arduino.cc/en/Hacking/DFUProgramming8U2).

Prima di tutto installiamo il programma Atmel FLIP e colleghiamo la nostra scheda di sviluppo tramite USB. Tenendo premuto il pulsante SW2 (PC3) premiamo adesso il pulsante SW1 (RST) per effettuare il reset. Rilasciamo prima il pulsante di reset e dopo qualche istante il pulsante SW2.

Se abbiamo un micro XMega non appartenente alla serie A4U o C4 possiamo utilizzare di default altri pin secondo la seguente tabella tratta dall’Application Note AVR1916 che spiega nel dettaglio tutta la procedura:

table

Alternativamente è possibile ricompilare e ricaricare il bootloader tramite un programmatore per impostare un pin a piacimento scaricando i sorgenti del bootloader da http://www.atmel.com/Images/AVR1916.zip

All’avvio il bootloader controllerà (nel nostro caso con un ATXMega32A4U) se il pin PC3 è collegato a massa, quindi se il pulsante SW2 è premuto e in tal caso avvierà l’esecuzione del DFU (Device Firmware Upgrade) ed inizierà l’enumerazione USB del dispositivo che permetterà la programmazione da pc.

Aprendo Atmel Flip possiamo scegliere il nostro Device dal menù Device / Select dopodiché possiamo aprire la comunicazione USB tramite il menù Settings / Communication / USB e scegliendo il pulsante Open dalla finestra di dialogo che ci verrà presentata.

open

Per velocizzare le operazioni in alternativa è possibile utilizzare i primi due pulsanti grafici.

flip

Siamo adesso pronti a caricare il nostro programma che possiamo compilare tramite il menù Build/Build Solution di Atmel Studio una volta aperto il progetto. Scegliamo adesso in Atmel FLIP la voce File / Load HEX file.. ed indichiamo il file con estensione .hex appena generato, in genere è presente nella cartella col nome della configurazione scelta (Debug o Release) come ad esempio HelloASF\HelloASF\Debug\HelloASF.hex per il progetto HelloASF.

Verifichiamo che nel gruppo Operations Flow siano marcate tutte le spunte per una programmazione completa e facciamo click su Run, se tutto è andato a buon fine i pallini diventeranno tutti verdi e cliccando su Start Application (con la spunta Reset abilitata) il nostro codice inizierà a prendere vita.

Programmiamo il dispositivo direttamente da Atmel Studio

La guida in linea di Flip presenta qualche problema di compatibilità con Chrome ed è consigliato l’utilizzo di Internet Explorer, al suo interno sono presenti tutti i dettagli relativi al programma Flip, a BatchIsp, una utility a linea di comando in grado di svolgere tutte le operazioni di FLIP ed alla Atmel's ISP functions library, una serie di DLL per chi volesse scrivere un proprio programma per la programmazione ISP, sia Flip sia BatchIsp utilizzano questa libreria per il loro funzionamento.

Alle successive programmazioni Flip si ricorderà del device impostato ma sarà necessario ogni volta indicare il file da caricare, aprire la connessione USB, premere Run e Start Application, un procedimento non molto agile soprattutto in quelle occasioni in cui è necessario compilare e caricare molte volte il firmware per la verifica della correttezza del programma.

Utilizzando BatchISP è possibile rendere più agile la programmazione dei nostri dispositivi senza neppure uscire da Atmel Studio creando un apposito menù e pulsante. Purtroppo nativamente Atmel Studio non supporta ancora la programmazione tramite USB ma vediamo come rimediare.

Apriamo Atmel Studio, scegliamo Tools / External Tools ed inseriamo le seguenti informazioni:

Title: Upload with Atmel &FLIP
Command: C:\Program Files\Atmel\Flip 3.4.7\bin\batchisp.exe
Arguments: -device atxmega32a4u -hardware usb -operation erase f memory FLASH blankcheck loadbuffer "$(TargetPath)" program verify start reset 0

ext

Dove il percorso del programma BatchIsp ed il modello di microcontrollore dovrà corrispondere a quello utilizzato

Seguendo la guida è possibile modificare i parametri passati al programma per evitare ad esempio l’avvio automatico del firmware dopo l’upload o la sua verifica se non desiderata.

E’ possibile adesso aggiungere il pulsante del comando Upload with Atmel FLIP appena creato scegliendo External Command 1 nella finestra di dialogo Add Command presente in Tools/Customize/Commands e scegliendo la toolbar Device and Debugger

addcmd

Il risultato sarà molto più pratico, un comando accessibile sia da menù che da barra degli strumenti che in un click effettuerà la cancellazione della memoria Flash, l’upload del firmware ed il successivo reset sulla nostra scheda di sviluppo.

vs

Ad upload terminato tramite la finestra Output sarà possibile verificare il corretto svolgimento delle operazioni

output

Buona programmazione.. in un colpo di click

Nessun commento:

Posta un commento