FLASH MONITOR - 52

FLASH Monitor Debugger per la famiglia Abaco® 8051

Manuale Tecnico PDF, in Italiano, del programma FMO 52.

Ver.3.00 - Rel. 03 Marzo 2003.


I N D I C E

1. INTRODUZIONE

2. USO del' FMO52

3. Uso tramite GET-51

4. Uso Tramite BASCOM-LT; BASCOM-8051


1. INTRODUZIONE

FMO52 e' un pacchetto software per la famiglia di microprocessori Intel 51 interattivo che comprende un debugger, un monitor in linguaggio macchina che permette il debug del programma utente nell'area di RAM da 2050H fino 7FFFH, dove e' indispensabile sezionarla in area codice e area dati. Se il codice viene compilato per l'esecuzione in Flash da 8050H fino DFFFH, l'area di RAM risulta essere tutta disponibile per i dati da 20C6H fino
7FFFH, questa e' la modalita' di AUTO RUN.

L'FMO52 include funzioni come, visualizzazione ed alterazione del contenuto della memoria, gestione di punti d'arresto, esecuzione codice a singola istruzione, esecuzione codice a velocita' reale, un completo disassemblatore, test della RAM, cancellazione della Flash, programmazione della Flash con il programma utente e lancio del programma in AUTO RUN tramite DIP-SWITCH o Jumper all'accensione.

FMO52 richiede l'installazione di una Flash ATMEL AT29c256 per la sola gestione della programmazione e dell'esecuzione del programma utente e sfrutta pochissime risorse dell'hardware utilizzato. In effetti l'FMO52 usa la linea seriale per la comunicazione nei confronti del P.C. di sviluppo, 80 bytes di RAM esterna (da 2000H a 204FH) per le sue variabili, 6631 bytes di ROM per il suo codice ed il TIMER1 per la generazione del baud rate di comunicazione e per l'esecuzione passo passo. Al fine di poter caricare un programma applicativo dal P.C. di sviluppo e di poter settare dei punti d'arresto l'FMO52 deve essere in grado di poter scrivere nell'area codice. Visto che l'architettura dell'8051 non consente queste operazioni quando si usa un'area codice separata da quella dati, e' necessario che l'area RAM di scaricamento del programma sia indirizzata sia come dati che come codice (/PSEN e /RD sommati).

Il mappaggio delle memorie e' cosi' suddiviso :

Vedi paragrafo 2.6 Configurazioni FMO52 per GPC® xxx.

L'FMO52 conserva il contenuto di tutti i registri e della RAM interna quando ripassa il controllo al programma utente; l'utilizzatore puo' quindi lavorare come se il suo programma fosse da solo, senza preoccuparsi di eventuali conflitti con lo stesso FMO52.


2. USO DELL'FMO52

2.1 Comandi

I seguenti comandi sono implementati nel monitor debugger FMO52:

A <indirizzo>

Altera il contenuto della RAM interna del microcontrollore. FMO52 presenta l'indirizzo specificato ed il suo attuale contenuto. Si possono digitare due cifre HEX per cambiare il valore, lo 'SPAZIO' per avanzare alla prossima locazione, il 'BACKSPACE' per ritornare alla locazione precedente o 'RETURN' per terminare il comando di alterazione.

B <n° punto d'arresto> <indirizzo>

Setta un punto d'arresto all'indirizzo specificato. Se l'indirizzo specificato e' 0000 il punto d'arresto e' rimosso. Ci possono essere fino a quattro punti d'arresto, numerati da 0 a 3.

Se lo 'SPAZIO' e' premuto al posto del n. punto d'arresto, sono visualizzati gli indirizzi degli attuali punti d'arresto gia' impostati.

NOTA: La famiglia 8051 di microprocessori non ha una istruzione di salto che occupi un singolo byte e quindi la gestione dei punti d'interruzione non puo' essere gestita con le modalita' classiche. I punti d'arresto sono quindi gestiti inserendo nel codice un'istruzione "LCALL" a seguito dell'esecuzione con il comando "G" e ripristinando il codice originario quando il punto
d'arresto viene raggiunto. Ogni 'LCALL' occupa tre byte di memoria codice e questo provoca i seguenti limiti:

Bisogna fare attenzione a non settare punti d'arresto in posizioni i cui due indirizzi sucessivi vengono chiamati da altre parti del programma.Per esempio, se viene settato un punto d'interruzione all'indirizzo 1234, nel programma non ci devono essere istruzioni che saltano agli indirizzi 1235 o 1236 (un salto all'indirizzo 1234 e' invece corretto).

Non si possono settare punti d'arresto che vanno sui tre byte occupati da un altro punto d'interruzione. Se si tenta questo settaggio viene rappresentato il messaggio d'errore 'Breakpoint conflict'.

Non si possono fornire comandi di 'G' ad un indirizzo che contiene un punto d'arresto; anche in questo caso viene visualizzato il messaggio d'errore 'Breakpoint conflict'. Si cade frequentemente in questo limite quando si vuole riprendere l'esecuzione a seguito del raggiungimento di un punto
d'interruzione; in questo caso si deve invece rimuovere il punto d'arresto raggiunto oppure usare il comando 'S' per avanzare il puntatore programma (PC) fino a sorpassare le locazioni occupate dal punto d'arresto.

C <nome registro> <valore>

Cambia i valori dei registri interni dell'8051. Il nome registro coincide con una singola lettera ed il valore puo' essere a 8 o 16 bits, come sotto descritto:

A- Registro A (accumulatore) -> valore a 8 bit.
B- Registro B (registro generico) -> valore a 8 bit.
D- Registro DPTR (puntatore dati) -> valore a 16 bit.
S- Registro SP (puntatore stack) -> valore a 8 bit.
P- Registro PC (puntatore programma) -> valore a 16 bit.
W- Registro PSW (registro di stato) -> valore a 8 bit.
0÷7 Registri R0÷R7 (banco registri attuale) -> valore a 8 bit.

D <indirizzo inizio>,<indirizzo fine>

Visualizza il contenuto della memoria dati esterna compresa tra gli indirizzi specificati, in formato HEX ed ASCII. Se come indirizzo di fine e' premuto lo "SPAZIO" allora si assume un indirizzo di fine = FFFF.

E <indirizzo>

Modifica il contenuto dell'area dati esterna del microcontrollore. FMO52 presenta l'indirizzo specificato ed il suo attuale contenuto. Si possono digitare due cifre HEX per cambiare il valore, lo 'SPAZIO' per avanzare alla prossima locazione, il 'BACKSPACE' per ritornare alla locazione precedente o 'RETURN' per terminare il comando di modifica.

F <indirizzo inizio>,<indirizzo fine> <valore>

Riempe la memoria dati esterna dall'indirizzo di inizio fino all'indirizzo di fine con il valore HEX specificato.

G <indirizzo>

Esegue il programma salvato nella memoria codice a partire dall'indirizzo specificato. Se uno "SPAZIO" e' premuto al posto dell'indirizzo, l'esecuzione inizia all'indirizzo attualmente contenuto nel registro puntatore programma (PC).

H

Abilita l'utilizzo dei comandi dedicati all'uso della Flash, questa modalita' viene indicata dal prompt, se viene rappresentato '*' e' in uso la modalita' normale di monitor, mentre se viene rappresentato '&' sono abilitati i comandi per la Flash (questa modalita' modifica il comado 'L') :

W

Programmazione della Flash, copiando il contenuto della RAM da 2050H fino 7FFFH in Flash da 8050H fino DFFFH.

X

Avviene la cancellazione totale del contenuto della FLASH.

I <indirizzo inizio>,<indirizzo fine>

Mostra il contenuto della memoria interna compresa tra i due indirizzi specificati, in formato HEX.

L

Attiva la ricezione di un file in formato HEX Intel o S MOTOROLA dal P.C. di sviluppo. Il comando termina in corrispondenza della ricezione delle sequenze ':00' o 'S9' che normalmente coincidono con l'ultimo record dei file. Se involontariamente viene fornito questo comando, l'utente puo' ritornare al modo comandi digitando direttamente una delle due sequenze descritte. Se il prompt in uso e' '*', il codice scaricato serve per la modalita' debugger, mentre se il prompt e' '&', il codice scaricato servira' per la programmazione della Flash, infatti durante lo scaricamento il file subira' una riallocazione di 6000H bytes in meno (offset che separa la RAM dalla Flash), questo permettera' la programmazione della Flash.
All'accensione avverra' l'esecuzione del programma utente direttamente dalla Flash se era attivata la modalita' di AUTO RUN (vedi 2.4).

R

Mostra i valori attuali dei registri dell'8051 (A, B, DPTR, SP, PC, PSW e R0-R7).

S

Esegue una singola istruzione salvata nell'indirizzo attualmente salvato nel puntatore programma (PC). Il disassemblato dell'istruzione eseguita e' rappresentato sul P.C. di sviluppo.
L'uso di questo comando comporta la perdita dell'interrupt del TIMER1 overflow, in quanto viene ridirezionato nelle locazioni di memoria RAM: 201BH, 201CH e 201DH.

T

Avviene un test completo della RAM a partire dall'indirizzo 2050H fino a 7FFFH. Questo comando altera completamente il contenuto della RAM, si consiglia, dopo l'uso di questo comando formattare la RAM con il valore 00H tramite il comando F. (Es: F 2050 7FFF 00)

U <indirizzo fine>,<indirizzo fine>

Disassembla la memoria programma compresa tra i due indirizzi specificati. Se lo 'SPAZIO' e' premuto come indirizzo di fine, si assume il valore FFFF.
Il comando rappresenta l'indirizzo, i byte di codice, il mnemonico e gli operandi di ogni istruzione.

?

Mostre un breve sommario dei comandi disponibili.


2.2 Rappresentazione

Al fine di avere la massima quantita' di informazioni su una videata del P.C. di sviluppo, durante la fase di debug, l'FMO52 e' stato progettato per ridurre al minimo le linee di rappresentazione per ogni comando. Tutti i comandi che rappresentano solo una riga di dati (come 'B' e 'S') lo fanno sulla stessa riga su cui il comando e' stato fornito (alla sua destra).

Per i comandi che visualizzano grosse quantita' di dati (come 'D', 'U', ecc.) premendo lo 'SPAZIO' durante la rappresentazione, questa si fermera' sulla prossima riga. Ogni sucessiva pressione dello 'SPAZIO' rappresentera' una ulteriore riga mentre la pressione di 'ENTER' riprendera' la rappresentazione a piena velocita' delle righe rimanenti.

Il tasto 'ESC' puo' essere utilizzato per interrompere definitivamente la rappresentazione di un comando, tornando quindi nella modalita' di attesa comandi, segnalata dalla presenza di un '*' o '&' a capo riga.


2.3 Interrupt

L'FMO52 ridireziona tutti i vettori d'interrupt (escluso quello del TIMER1, che e' usato internamente per l'esecuzione passo passo ed occupa altre 3 locazioni di memoria RAM, vedi comando 'S') al corrispondente indirizzo all'inizio dell'area RAM a disposizione dell'utente.
Quando si verifica un programma che usa i vettori d'interrupt e' sufficiente allocare quest'ultimi nella RAM utente, ovvero aggiungergli il valore di inizio di tale RAM. Le procedure di risposta all'interrupt invece non devono subire alcuna variazione.

Quando viene eseguito il programma utente in modalita' di AUTO RUN, l'FMO52 prima di eseguire il codice copia i vettori di interrupt dalla Flash alla RAM, e precisamente da 8050H a 80C5H in 2050H fino 20C5H, in questo modo si avra' lo stesso funzionamento che si aveva nella modalita' debugger.


2.4 Programmazione della Flash e modalita' di AUTO RUN

L'FMO52 riceve i file per il monitor o per essere programmati in Flash.
La condizione di monitor viene indicata dal prompt '*', dove il/i files scaricati devono essere contenuti nell'area di memoria da 2050H a 7FFFH, in questa area deve risiedere il programma utente con le sue variabili.

La condizione di programmazione della Flash viene indicata dal prompt '&', vedi comando 'H' per l'attivazione, dove il/i files scaricati devono essere contenuti nell'area di memoria da 8050H a DFFFH, questi files verranno parcheggiati in RAM in attesa del comando 'W' che esegue la
programmazione della Flash, quindi e' necessario ricompilare il sorgente con origine 8050H prima di scaricarlo.
Alla prossima accensione, l'FMO52 verifica l'avvenuta programmazione della Flash che se risulta corretta identifica la modalita' di AUTO RUN indicata dalla posizione del DIP-SWITCH o dal Jumper (vedi paragrafo 2.6), di seguito viene eseguito il programma utente dalla Flash, in questa condizione la RAM disponibile va da 20C6H a 7FFFH.


2.5 Programmazione della Flash da programma utente

L'area di memoria contenuta nella Flash e' suddivisa in 3 parti :

Quest'ultima area e' possibile gestirla dall'utente a blocchi di 64 bytes durante la modalita' di AUTO RUN, tramite l'aiuto di una CALL che risponde all'indirizzo 1A00H la quale utilizza 12 bytes di stack.
Per il corretto uso della procedura prima della sua esecuzione e' necessario scrivere alcune locazioni di memoria cosi' suddivise :

Dopo l'uso di questa procedura e' indispensabile verificare il contenuto della locazione 2043H, dove e' indicato l'esito della programmazione secondo il valore assunto da essa :

Esempio : se volessi scrivere nel blocco 1 della Flash tutte le 64 locazioni con il valore 00H :

 DATA

 Block

 Check Sum

from 2001H to 2042H

00H.......00H

2043H

01H

2044H

02H


2.6 Configurazioni FMO52 per GPC® xxx

In aggiunta alle precedenti informazioni valide per ogni tipo di scheda, in questo paragrafo vengono riportate le informazioni che riguardano l'uso dell'FMO52 in abbinamento alle schede grifo®:

COMUNICAZIONE :

BOARD NAME

 Memory Mapping

Mapping Selection

EPROM

RAM

FLASH

AUTO RUN

Jumper Memories

GPC® 323

MODE 1

 DIP5=On DIP6=On

IC5

 IC4

IC3

 DIP8=On

J4=1-2 J5=1-2 J2=1-2 J3=wire 2-3 J2

GPC® 323D

MODE 1

 DIP5=On DIP6=On

 IC5

 IC4

 IC3

 DIP8=On

 J4=1-2 J5=1-2 J2=1-2 J3=wire 2-3 J2

GPC® 324

MODE 3

 DIP5=On DIP6=On

 IC8

On Board

 IC5

 J1= Connected

 J4=1-2 J5=wire 2-3 J4

GPC® 324D

MODE 3

 DIP5=On DIP6=On

 IC8

On Board

 IC5

 J1= Connected

 J4=1-2 J5=wire 2-3J 4-2

 GPC® 552

MODE 1

 J1=3 J2=3 J14=1,2,3 ASM

 IC15

IC13

 IC12

 DIP8=On

 J18=1-2 J17=wire 2-3 J18

 GPC® 553

MODE 3

 DIP5=On DIP6=On

 IC1

IC2

 IC3

DIP8=On

 J4;J5=1-2 J2=1-2 J3=wire 2-3 J2

 GPC® 554

MODE 3

 J1= Connected J6=2-3

 IC4

On Board

 IC6

 J2= Connected

 J3=1-2 J4=wire 2-3 J3

 GPC® R63

MODE 3

 J1= Connected J3=2-3

 IC7

On Board

 IC10

 J1= Connected

 J4=1-2 J3=wire 2-3 J4

 GPC® T63

MODE 3

 J1= Connected J3=2-3

 IC7

On Board

 IC10

 J1= Connected

 J4=1-2 J3=wire 2-3 J4


3. Uso tramite GET 51

Configurare il GET eseguendo la riga di comando GET51/I.
Selezionare la COM Port, selezionare il Baud rate a 19200, selezionare la modalita' terminale M/DP-(F)MO52 e premere install.
Ora e' possibile avviare il programma digitando GET51, premere ALT T, collegare la scheda, dare alimentazione e apparira' il messaggio del monitor FMO52 Rel.1.1, ora e' possibile fare il DOWNLOAD premendo F8, selezionare un file.HEX con origine 2050H in poi.
Attendere alcuni secondi fino alla visualizzazione del messaggio:

xxxx Bytes
*

L'indicazione 'xxxx' indica il numero di bytes scaricati, che coincide con la lunghezza del codice generato arrotondato per eccesso ad un multiplo di 16 (decimale) o 10 (esadecimale).
Per eseguire il programma digitare "G 2050".


4. Uso tramite BASCOM 8051/LT

Quando viene eseguita una compilazione ad un sorgente BASCOM LT/8051, viene generato un file.hex che contiene il codice macchina del microcontrollore utilizzato.
Questo file va inserito in una EPROM o un microcontrollore con una ROM interna, ma quando il programma non e' definitivo ma e' ancore in fase di messa a punto, e' necessario ripetere la
programmazione diverse volte e questo comporta una perdita di tempo notevole.
Per semplificare la fase di sviluppo di un programma e' sufficiente installare il monitor debugger FMO52 V.1.1 a bordo della GPC® xxx, vedi paragrafo 2.6.


4.1 Generazione file.hex tramite il BASCOM LT/8051

Inserire all'inizio di ogni programma basic le seguenti direttive per il compilatore indicate con il simbolo "$".

Schede GPC® con quarzo a 22.1184 MHz

$crystal = 22118400 ' frequenza di clock del microcontrollore

$baud = 19200 ' velocita' di comunicazione RS 232

$romstart = &H2050 ' indirizzo di partenza del codice macchina

$ramstart = &H6000 ' indirizzo di partenza dell'area dati

$ramsize = &H1FFF ' pongo a 8K l'area dati

$large ' indirizzamento a 16 bit

'***************** Inizio programma **********************

Waitms 1 ' ritardo per assestamento segnali

..... ' main del programma

.....

End ' fine del programma

..... ' eventualmente procedure del programma

Inoltre selezionare l'opzione "Option"|"Compiler"|"Misc" e nella finestra che compare selezionare il "Register file", secondo quanto riportato di seguito:

Board

Register File

 GPC® R63  8052.DAT
 GPC® T63  8052.DAT
 GPC® 323  87C520.DAT
 GPC® 323D  87C520.DAT
 GPC® 324  87C520.DAT
 GPC® 324D  87C520.DAT
 GPC® 552  80C552.DAT
 GPC® 553  80C552.DAT
 GPC® 554  80C552.DAT


4.2 Generazione file.hex per AUTO RUN,tramite il BASCOM LT/8051

Sostituire all'inizio di ogni programma basic le seguenti direttive per il compilatore indicate con il simbolo "$".

Compilare il sorgente, attivare il comando 'H' nel monitor, scaricare il programma e programmare la Flash con il comando 'W'.


4.3 Configurare il BASCOM LT/8051 per DOWNLOAD verso il monitor FMO52

La versione minima e necessaria del BASCOM LT/8051 deve essere :

BASCOM LT: IDE 1.20, Lib 1.27 e sucessive.
BASCOM 8051: IDE 1.0.0.13 e sucessive.

Configurazione BASCOM LT:

Configurazione BASCOM 8051:


4.4 Come effettuare il DOWNLOAD

Compilare il programma realizzato, selezionando il comando opportuno ("File"|"Compile" nel BASCOM LT, "Program"|"Compile" nel BASCOM 8051).
Se non ci sono errori si puo' attivare la finestra di emulazione terminale ("File"|"Terminal emulator" nel BASCOM LT, "Tools"|"Terminal emulator" nel BASCOM 8051).
Con questa finestra attiva collegare la linea seriale primaria della GPC® xxx alla COM preselezionata del PC, quindi alimentare la scheda.
A questo punto sul video deve presentarsi il messaggio del FMO52 Rel.1.1.
Ora e' possibile fare il DOWNLOAD attivando il relativo comando nella finestra del terminale ("File"|"Send" nel BASCOM LT, "File"|"Upload file" nel BASCOM 8051).
Attendere alcuni secondi fino alla visualizzazione del messaggio:

xxxx Bytes
*

L'indicazione 'xxxx' indica il numero di bytes scaricati, che coincide con la lunghezza del codice generato arrotondato per eccesso ad un multiplo di 16(decimale) o 10 (esadecimale).
Per eseguire il programma digitare "G 2050".


Pagina aggiornata al 03 Marzo 2004 - Rel.1.3


home Vai in Home Vai alla pagina Software Tabelle