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
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
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:
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
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