Manuale d'uso del programma Hc08pgm

- A cura del Prof. Stefano Salvi -


Programmatore ed Emulatore per processori della famiglia MC68HC08:

Uso: hc08pgm [-s <seriale>] [-p <file S19>] [-e] [-p <file S19>] [-r <start> <end>] [-c] [-t]

Hc08pgm è un programmatore di chip della famiglia MC68HC08 della Motorola/Freescale (http://www.freescale.com/webapp/sps/site/homepage.jsp?nodeId=0162468449&tid=FSH) ed un emulatore software della relativa CPU.

Per programmare i chip compatibili occorre collegare il PC tramite una porta seriale (o un convertitre USB/seriale) ad una schedina di programmazione realizzata secondo lo schema indicato sui datasheet dei contollori.

Uno schema di piastra in grado di programmare i processori supportati, che comprende anche un conetore per l'in-circuit programming ed una serie di periferiche per poter fare alcuni esperimenti è questo

Il programma riconosce e programma i seguenti contollori Motorola/FreeScale

Le opzioni riconosciute dal programma sono le seguenti

-h
iStampa un testo che elenca le opzioni disponibili
-s <seriale>
indica il percorso per il dispositivo seriale (default /dev/ttyUSB0)
-p <file S19>
programma il file S19 nel chip
-e
controlla se il chip e' cancellato
-f <file S19>
emula il processore in un debugger a pieno schermo
-r <start> <end>
legge dal chip i byte da <start> a <end> (start e end in decimale o esadecimala indicando 0xHHHH)
-c
Cancella il chip
-t
esegue un ciclo infinito di test
-g <file S19>
manda in esecuzione il file S19 precedentemete programmato nel chip (non programma il chip)
-d <file S19>
manda in single step il file S19 precedentemete programmato nel chip (non programma il chip)
-S
Test dei segnali (RTS/DTR - solo per debug dell'hardware esterno)

Il programma accetta una sola opzione alla volta, fatta eccezione per l'opzione -s che indica il dispositivo della porta seriale da utilizzare e che va indicato tutte le volte che la scheda è connessa ad una porta diversa da quella di default (/dev/ttyUSB0) ed il comando è diverso da -h o -f <file S19>

L'emulatore software presenta la seguente videata

Videata dell'emulatore

Nel riquadro intitolato [Codice] è visualizzata una porzione di memoria che contiene la prossima istruzione da eseguire (quella il cui indirizzo è in Program Counter). La prossima istruzione da eseguire è evidenziata in rosso. La prima colonna indica l'indirizzo di memoria in esadecimale, la seconda colonna contiene i byte che costituiscono l'istruzione e la terza colonna contine l'istruzione disassemblata.

Nel riquadro [Registri] sono elencati tutti i registri della CPU HC08. Il valore dell'accumulatore è visualzizato sia in esadecimale che in decimale (tra parentesi). Il valore di H:X è vislauizzato come quattro cifre esadecimali; le due più a sinistra rappresentano il valore di H, le restanti due quello di X. Il valore del Condition Code Register è decodificato in base ai nomi dei vari flag che contiene:

v (bit 7)
Overflow Flag indica se l'ultima operazione ha superato la capacit&afgrave; del numero
h (bit 4)
Half-Carry Flag indica un riporto tra i bit 3 e 4
i (bit 3)
Interrupt Mask indica se le interruzioni sono disabilitate
n (bit 2)
Negative Flag indica se il risultato dell'ultima operazione è negativo
x (bit 1)
Zero Flag indica se il risutlato dell'ultima operazione è zero
c (bit 0)
Carry/Borrow Flag indica se l'ultima operazione ha generato un riporto

I bit 5 e 6 del Condition Code Register non hanno siginficato e sono forzati ad uno, quindi ne viene visualizzato solo il valore. Se la lettera corrispondente ad un bit è maiuscola, quel bit è settato (ad 1), altrimenti è resettato (a 0)

Nel riquadro intitolato [Dati] vengono visualizzati 72 byte della memoria del procesore. La prima colonna indica l'indirizzo del primo byte della riga, in esadecimale. La seconda colonna visualizza il valore di otto byte a partire da quello indicato nella prima colonna, in esadecimale. Nella terza colonna sono visualizzati gli stessi otto byte, ma interpretati come codici ASCII. Se il byte non corrisponde ad un codice ASCI stampabile, viene visualizzato un “.”.

I dati visualizzati in questo riquadro contengono sempre l'ultimo byte modificato o letto da un'istruzione (o il primo nel caso delle istruzioni mov, se non possono essere visualizzati entrambi). Il dato modificato o letto dall'ultima istruzione eseguita è evidenziato in rosso.

Il riquadro intitolato [Comandi] ha essenzialmente scopo di aiuto.

L'emulatore riconosce i seguenti tasti

s
Esegue l'istruzione attualmente evidenziata nella finestra del codice
r
Riporta l'emulatore nella condizione iniziale, ricaricando i registri con il loro valore di reset
q
Termina il programma

All'avvio o al reset il valore dei registri è quello di reset, vale a dire, il Condition Code Register è inizializzato con le interruzioni disabilitate (i = 1) e gli altri bit a 0, salvo quelli ad 1 fisso. Il Program Counter è inizializzato con il valore contentuo nel vettore di reset, vale a dire alle locazioni FFFE ed FFFF della memoria.

Prof. Stefano Salvi