EOS

Programmare un MSP430 via JTAG

Una semplice discussione sull’interfaccia JTAG della famiglia MSP430 di Texas Instruments, con tanto di analisi del protocollo di comunicazione e introduzione al progetto “Replicator” che permette, tramite un MSP430, di programmare un altro MSP430 attraverso la JTAG.

Ormai l’interfaccia JTAG è diventata l’interfaccia principe nelle applicazione di programmazione e debug nel mondo embedded. Ormai quasi tutti i microcontrollori, partendo da quelli di fascia alta per finire con quelli di fascia bassa, sono equipaggiati con la JTAG. Il microcontrollore MSP430 di Texas Instruments non è da meno. Attraverso la JTAG è possibile accedere alla memoria flash interna per eseguire operazioni di cancellazione, programmazione e verifica. Negli ultimi anni due tipologie di interfacce JTAG si stanno affermando, quella standard a 4 fili e una versione ridotta a solo due connessioni detta anche Spy-Bi-Wire (SBW).

SEGNALI D’INTERFACCIA

L’interfaccia standard JTAG prevede 4 collegamenti come riportato in figura 1, per i dispositivi della famiglia più grandi (con parecchi pin a disposizione) sono previsti dei pin dedicati all’interfaccia.

Figura 1: segnali della JTAG per MSP430.

Figura 1: segnali della JTAG per MSP430.

Nei dispositivi più piccoli, solitamente, questi pin sono condivisi. Rispetto, quindi, ai quattro collegamenti standard, si aggiunge un quinto pin detto TEST per definire le funzionalità di questi pin condivisi. Solitamente un livello alto applicato al pin TES permette di abilitare l’interfaccia JTAG. Il segnale TCLK è un clock fornito da una sorgente esterna al dispositivo che viene utilizzato come clock di sistema (MCLK) per operare sulla memoria interna del microcontrollore e per la CPU. Per fornire questo segnale al dispositivo, viene utilizzato il pin TDI classico della JTAG. Tutto ciò avviene quando il TAP controller dell’MSP430 è in Run-Test/Idle state. I dispositivi che invece supportano l’interfaccia a due fili, integrano una logica supplementare, visibile in figura 2, che permette di ricavare i quattro segnali standard dell’interfaccia.

Figura 2 segnali della JTAG SBW per MSP430.

Figura 2 segnali della JTAG SBW per MSP430.

Il segnale SBWTCK (Spy-Bi-Wire test clock) è un segnale di clock, ed è abbinato ad un pin dedicato, collegato tramite un pulldown a massa. Il segnale SBWTDIO (Spy-Bi-Wire test data input/output) è un segnale di dati bidirezionale. Solitamente quest’ultimo segnale è condiviso con il pin RST/NMI dell’MSP430. In figura 3 è possibile vedere, in base al dispositivo utilizzato della famiglia MSP430, quale interfaccia JTAG si ha a disposizione.

Figura 3: diverse implementazioni JTAG a disposizione per la famiglia MSP430.

Figura 3: diverse implementazioni JTAG a disposizione per la famiglia MSP430.

PROTOCOLLO

Senza entrare troppo nel dettaglio del protocollo JTAG, per il quale si rimanda alla documentazione dedicata nei riferimenti, è interessante, comunque, osservare come utilizzando 7 operazioni standard (ossia 7 macro, per intenderci) sia possibile sfruttare le potenzialità della JTAG per accedere ai registri dell’interfaccia e arrivare a prendere il controllo della CPU per operare sulle periferiche e sulla flash interna. In figura 4 sono specificate queste 7 macro con una breve descrizione.

Figura 4: MACRO per la comunicazione JTAG.

Figura 4: MACRO per la comunicazione JTAG.

Ogni MSP430 ha al suo interno un “fuse” fisico che permette di disabilitare l’accesso in memoria tramite la JTAG. Se viene programmato in tal senso, l’accesso è inibito e non può essere ripristinato. Se si inizia il processo di programmazione subito dopo il power up, attraverso una semplice sequenza di istruzioni è possibile verificare tramite JTAG lo stato del “fuse”. Allo stesso modo, terminata la programmazione attraverso un’altra sequenza delle macro, è possibile bruciare il fuse per impedire ulteriori scritture. Prendiamo come esempio il caso di programmazione di una word in memoria, durante questa fase, il segnale TCLK deve avere una frequenza di 350KHz±100KHz mentre il ciclo viene eseguito. Necessario quindi attendere, nel corso della programmazione, in una fase in cui il segnale TCLK compie 35 periodi prima di  proseguire con la scrittura di una nuova word o terminare il ciclo. Figura 5 il processo di scrittura semplificato con l’uso delle macro definite in precedenza. Tale procedura lavora correttamente con le famiglie 1xx/2xx/4xx, mentre per la famiglia 5xx bisogna apportare delle modifiche.

Figura 5: sequenza delle operazioni per la programmazione di una word in flash per le famiglie 1xx/2xx/4xx.

Figura 5: sequenza delle operazioni per la
programmazione di una word in flash per
le famiglie 1xx/2xx/4xx.

CODICE PER ESEGUIRE LA PROGRAMMAZIONE VIA JTAG

L’application note SLAU320A della Texas Instruments fornisce alcuni esempi di codice attraverso il quale realizzare la cancellazione, la programmazione e la verifica di un MSP430. In particolare, il progetto chiamato “Replicator” sfrutta il modello MSP430F5437 che funzionando come host controller va a programmare un qualsiasi modello MSP430 con flash a bordo. Le specifiche di questo programma si racchiudono in pochi e semplici punti:

  • vengono supportati tutti i dispositivi MSP430 flash based, sia con interfaccia JTAG a 4 che a due fili;
  • la dimensione del codice di programmazione da scrivere non deve superare i 250 KB (lo stesso MSP430F5437 non ne ha che 256 KB);
  • velocità di programmazione (Erase, Program, Verify): circa 8 KB in 5 s, 48 KB in 8 s;
  • rapidità nella verifica e nel controllo della cancellazione: 17 KB/10 ms;
  • gestione dei “Fuse”;
  • programmazione Stand-alone del dispositivo (Nessun personal computer o hardware/software è richiesto).

La sequenza delle operazioni software svolte dal codice sono abbastanza semplici, innanzitutto è necessario preparare l’host controller. Il software di programmazione occupa circa 3.5 KB, il resto della flash dell’MSP430F5437 è a disposizione del codice di programmazione da replicare. Per eseguire la programmazione dell’MSP430F5437 si può utilizzare il Flash Emulation Tool (FET) oppure l’MSP430 Serial Programming Adapter forniti da Texas Instruments. Come ambiente di sviluppo si può utilizzare il Code Composer Studio sempre di Texas Instruments oppure altri sistemi di sviluppo come, per esempio, l’IAR Embedded Workbench. La pressione di un pulsante sul dispositivo host genera un hardware reset e determina la partenza delle routine di comunicazione JTAG per la cancellazione, programmazione e verifica. Durante queste fasi rimane attivo un LED giallo, al termine con successo viene comandata l’accensione di un LED verde, un errore determina l’accessione di un LED rosso. Per i sorgenti e ulteriori dettagli sul codice  si  rimanda alla documentazione del produttore. Per l’hardware della scheda host si può fare riferimento allo schema in figura 6, una scheda proposta dalla Elprotronic Inc. per realizzare il “Replicator”.

Figura 6: schema elettrico per la scheda “Replicator” con MSP430F5437 fornito da Elprotronic Inc.

Figura 6: schema elettrico
per la scheda “Replicator”
con MSP430F5437 fornito
da Elprotronic Inc.

In figura 7 è raffigurata la scheda in questione.

Figura 7: scheda “Replicator” con MSP430F5437 di Elprotronic Inc.

Figura 7: scheda “Replicator” con MSP430F5437 di Elprotronic Inc.

Scrivi un commento

EOS