G C T R
Completo ambiente di Sviluppo
per codice Romabile con Borland C/C++
Manuale Tecnico, in ITALIANO, del "grifo® C To Rom"
Ver.3.40 - Rel. 04 Febbraio 2002.
GENERALITA'
Il GCTR e' un completo pacchetto di sviluppo software romabile, in grado di sviluppare dei programmi applicativi embedded, tramite il Borland C/C++. E' disponibile per tutte le schede del carteggio grifo® basate sulla famiglia di microprocessori I86 ed il codice generato può essere eseguito su un sistema provvisto solo di una CPU, ROM, e RAM.
Il pacchetto GCTR e' composto di software su dischetti e di un manuale d'uso e, usando un nucleo di Turbo Debugger remoto, offre un completo e potente debug a livello sorgente del programma applicativo in sviluppo. Essenzialmente il pacchetto include il codice di partenza romabile, una libreria romabile ed il Locator che consente all'utente di allocare il codice ed i dati all'interno dell'area di memoria della scheda selezionata.
LINGUAGGI DI PROGRAMMAZIONE IN ROM
Il Borland C/C++ e' un potente e diffuso linguaggio di programmazione per sviluppare programmi DOS e/o WINDOWS. Il suo compilatore e linker puo' essere usato per sviluppare codice embedded, ma le librerie ed il debugger forniti con questo linguaggio richiedono la presenza di un sistema operativo. In altri termini questi prodotti forniscono un ottimo supporto per i programmatori DOS e/o WINDOWS, ma scarso o nessun aiuto per i programmatori embedded che non dispongono di un sistema operativo a bordo scheda. Il GCTR fornisce le parti mancanti a questi programmatori che usano il Borland C/C++.
Un programma C/C++ richiede un codice di partenza per settare i registri di stack e segmento, inizializzare i dispositivi periferici di bordo, definire ogni opzione matematica, settare i dati inizializzati ed azzerare i dati non inizializzati. Il codice di partenza fornito con i linguaggi di programmazione DOS e/o WINDOWS, effettua correttamente queste operazioni in abbinamento al sistema operativo ma quando ques'ultimo manca, l'esecuzione del codice di partenza causa dei problemi inevitabili. Il GCTR ha un codice di partenza e delle librerie speciali, appositamente realizzate per sistemi hardware non provvisti di BIOS, DOS e/o WINDOWS.
Il debug di un programma applicativo su una scheda senza sistema operativo puo' essere effettuato usando un emulatore di EPROM od un debugger remoto. Visto che i debugger standard per DOS e/o WINDOWS non possono essere usati, il GCTR contiene un apposito nucleo TDxxx che viene usato con il classico Turbo Debugger della Borland e che consente il debug a livello sorgente, direttamente sulla scheda in uso.
I programmi eseguiti in ambiente DOS e/o WINDOWS sono caricati ed allocati direttamente in fase di esecuzione. Un programma embedded deve invece essere allocato ai giusti indirizzi, affinche' possa essere eseguito sulla scheda in uso. Il programma deve inoltre essere opportunamente modificato in modo da essere programmato su ROM. Il Locator del GCTR e' usato proprio per allocare il programma ai giusti indirizzi e per produrre il formato necessario per il salvataggio sulla scheda in uso.
Il codice allocato deve essere programmato sui dispositivi di memoria della scheda. Attualmente sia la EPROM che la FLASH EPROM sono gestite dal GCTR: nel primo caso e' necessario un programmatore di EPROM esterno mentre nel secondo la stessa scheda puo' salvare il codice in FLASH, senza alcun sistema aggiuntivo.
CARATTERISTICHE
TURBO DEBUGGER DELLA BORLAND
Il GCTR consente di verificare e testare le applicazioni con il Turbo Debugger della Borland, sulle schede grifo® senza sistema operativo e senza BIOS. Il GCTR ha un apposito programma chiamato TDxxx (xxx = nome scheda) che consente al Turbo Debugger di accedere in remoto alla scheda in uso, tramite un semplice collegamento seriale. La caratteristica di gestire un debug a livello sorgente del Turbo Debugger e' completamente gestita sia per il codice che per le strutture dati. L'utente puo' scaricare un programma alla scheda, esaminare e variare le variabili, settare punti d'arresto, procedere l'esecuzione a passi, vedere e/o modificare lo stato delle risorse hardware, sfruttare punti d'arresto hardware, ecc.
Le schede grifo® hanno ROM e RAM a sufficienza (richiede solo 6K di ROM e 2K di RAM) ed una linea seriale, dedicati al TDxxx. Sulla scheda in uso ci deve solo essere RAM a sufficienza per caricare ed eseguire il programma applicativo, ovvero un'area RAM pari all'area codice + area dati doppia + stack ed heap del programma utente. Il TDxxx e' un programma completo ed autonomo che prende il controllo della CPU dal suo reset hardware e quindi interagisce con l'utente tramite un normale PC di sviluppo, che esegue il Turbo Debugger.
Al fine di operare con il Turbo Debugger, il TDxxx deve essere settato per la configurazione di memoria della scheda e quindi programmato nel dispositivo di memoria della scheda in uso (EPROM o FLASH EPROM). In caso di primo ordine del GCTR tale dispositivo viene gia' fornito dalla grifo® in base alla configurazione della scheda di controllo mentre ogni eventuale modifica puo' essere facilmente effettuata dall'utente che cosi' ottiene il TDxxx in formato binario, pronto per essere programmato. Una volta collegata la linea seriale al PC il Turbo Debugger e' pronto a testare le applicazioni direttamente sulla scheda in uso.
Quattro finestre diverse possono essere contemporaneamente aperte, ognuna con specifiche funzioni:
Il debugger remoto ha una interfaccia comandi comoda e flessibile. I comandi possono essere forniti tramite menu' a tendina, macro associate ad un tasto o digitandoli direttamente nella finestra comandi. Dei menu' a scorrimento forniscono un ulteriore facilitazione nella memorizzazione dei comandi forniti e del loro formato. Infine i comandi, quando sono numerosi e ripetitivi, possono essere forniti anche da un apposito file.
CODICE DI PARTENZA
Il codice di partenza del GCTR svolge il compito di portare la CPU da una partenza (reset o accensione) all'esecuzione della funzione "main()" del programma applicativo, senza dipendere da DOS, WINDOWS o BIOS. Il codice di partenza e' disponibile per tutte le configurazioni di memoria della scheda ed e' fornito in formato oggetto direttamente utilizzabile dal linker: l'utente si deve limitare a selezionare tale configurazione memorie, durante la fase di installazione del GCTR. Il codice di partenza richiede solo circa 400 bytes di area ROM.
Il codice di partenza setta lo stack e l'heap in RAM. I dati inizializzati sono copiati in RAM mentre i dati non inizializzati sono azzerati. Tutti i registri segmenti sono settati per le sucessive operazioni in C ed alcuni dispositivi periferici di bordo sono opportunamente inizializzati.
Il codice di partenza ha anche molte caratteristiche per il debug: puo' infatti predispone per la verifica dello sfondamento di stack e per assegnamenti a puntatori nulli. Infine il codice di partenza installa un gestore di interrupt 21H per intercettare e segnalare delle chiamate DOS inaspettate.
LOCATOR
Il Locator del GCTR consente di allocare il codice ed i dati in ogni punto dello spazio di memoria convenzionale. Esso opera sui file eseguibili standard (.EXE) e sui .MAP file generati dal Borland C/C++ e crea un file binario in uscita che puo' essere programmato in EPROM o FLASH EPROM. Se necessario, puo' generare un file in formato Intel OMF assoluto, utilizzato dalla maggioranza degli emulatori.
I comandi di allocazione hanno un formato leggibile; essi indicano i file che devono essere usati dal Locator, gli indirizzi in ROM, gli indirizzi in RAM dei segmenti ed infine i dispositivi di memoria disponibili sulla scheda in uso. Comunque l'utente non deve definire questi comandi di allocazione infatti sono forniti gia' salvati in un apposito file durante l'installazione del GCTR.
Il Locator esegue delle verifiche incrociate durante l'allocazione. Verifica infatti i trabocchi di ROM, le sovrapposizioni di codice, le sovrapposizioni dei dispositivi RAM e ROM, i fuori sincronismo dei file .EXE e .MAP, la completa allocazione del programma, ecc. Al termine del lavoro il Locator rappresenta inoltre la quantita' di ROM utilizzata, sia in percentuale che con il numero di byte attualmente usati.
Il Locator genera un file mappa assoluto, che riporta l'indirizzo di tutte le strutture dati pubbliche; questo ha lo stesso formato del file .MAP generato dal linker della Borland, con gli indirizzi modificati.
FLOATING POINT
Nel GCTR e' compreso un preciso ed efficiente floating point con le relative funzioni matematiche e trigonometriche del C. Per le schede grifo® sprovviste di coprocessore, la gestione matematica del Borland C/C++ coincide inevitabilmente con una emulazione software del floating point.
Gli errori matematici sono gestiti da una apposita funzione romata che termina l'esecuzione del programma applicativo e restituisce un codice numerico d'errore univoco, in modo da fornire informazioni sull'accaduto agli utenti.
LIBRERIE ROMABILI
Molte delle funzioni presenti nella libreria standard del compilatore C della Borland non necessitano del DOS, WINDOWS o del BIOS e sono quindi utilizzabili in un'applicazione romata. Le funzioni che invece dipendono dal sistema operativo (come open, close, read, write, arc, textcolor, circle, line, ecc.) non sono utilizzabili con il pacchetto GCTR. Una funzione che utilizza il DOS, erroneamente usata nel vostro programma, e' identificata dall'intercettatore di INT 21H del codice di partenza ed opportunamente segnalata.
Nelle librerie del GCTR sono inoltre presenti una serie di funzioni romabili che possono essere direttamente utilizzate sulla scheda. Tali librerie sono fornite in forma compilata ma su richiesta la grifo® puo' fornire anche il formato sorgente. La scelta delle librerie che il GCTR deve linkare al programma applicativo dell'utente e' effettuata automaticamente da alcuni file di supporto che semplificano l'uso di tutto il pacchetto.
Le funzioni di libreria comprendono:
PROGRAMMI DI ESEMPIO
Il GCTR comprende chiari esempi che illustrano come compilare, linkare ed allocare degli appositi programmi dimostrativi. Questi programmi sono forniti in forma sorgente, sono ben documentati e risolvono i classici problemi di gestione del floating point, dell'allocazione dinamica di memoria, degli interrupts, delle periferiche hardware a bordo scheda, ecc.
AMBIENTE E MODALITA' DI UTILIZZO
Il GCTR si preoccupa di semplificare al massimo la vita del programmatore e per questa ragione, come e' gia' stato descritto nei precedenti punti, e' corredato di:
1) Un programma di installazione che guida il programmatore nella configurazione dell'ambiente di sviluppo in base alle proprie esigenze.
2) Un programma di supporto, denominato CTODEB, che provvede a lanciare l'ambiente di sviluppo (IDE) del compilatore Borland C del programmatore. In questo modo l'operativita' dell'editor, dell'help in linea, del verificatore sintattico, ecc. sono esattamente quelle gia' utilizzate e quindi conosciute dallo stesso programmatore.
3) Una volta editato il programma applicativo, il CTODEB provvede automaticamente a compilarlo, linkarlo ed a produrre il codice eseguibile.
4) A questo punto, sempre in modo trasparente per il programmatore, il CTODEB provvede a lanciare il Turbo Debugger ed a scaricare il codice eseguibile alla scheda collegata.
5) In questa fase il programmatore puo' verificare la correttezza del suo programma tramite i potenti comandi del Turbo Debugger, con il vantaggio di poter provare il tutto nelle condizioni reali di lavoro, ovvero sull'hardware collegato al sistema da sviluppare.
6) In caso di errori il programmatore rilancia il CTODEB e riesegue i passi 2,3,4,5 fino a quando il suo programma applicativo e' completamente corretto.
7) Un altro programma di supporto, denominato CTOBIN, a questo punto puo' essere lanciato per locare il programma applicativo ed ottenere il codice romato. Anche in questo caso l'utente non si deve preoccupare di nulla in quanto il processo e' completamente automatico.
8) Il codice romato ottenuto puo' essere salvato in EPROM, da sostituire a quella della scheda, oppure in FLASH EPROM tramite l'apposito software di programmazione ad alto livello: FLASH WRITER.
9) Tutte le fasi descritte possono essere eseguite sia a riga di comando DOS (fino a GCTR versione 3.3) oppure tramite elementari operazioni da eseguire con il mouse (solo dalla versione 3.4).
Seguendo le istruzioni del capitolo "COME INIZIARE", del manuale utente fornito, ed un apposito programma d'apprendimento, ogni programmatore diventa autonomamente operativo in un paio d'ore.
REQUISITI DEL GCTR
Scheda di controllo basata su I86
Coincide con una scheda di controllo appartenente al carteggio industriale grifo®, basata sui microprocessori della famiglia Intel 80x86 e compatibili, come:
La scheda di controllo, indipendentemente dalle richieste dell'applicazione
da realizzare, deve essere dotata di:
- EPROM con TDxxx oppure FLASH EPROM con
FLASH WRITER e TDxxx
- almeno 128 KByte di RAM
- una linea seriale asincrona in RS 232
Personal computer di sviluppo
Un personal computer provvisto di:
(N.B. con WINDOWS xx si intendono le versioni 3.11, 95, 98, ME)
Compilatore Borland C/C++
Coincide con il compilatore C/C++ della Borland a partire dalla Versione 2.0, comprese tutte le possibili varianti e derivazioni.
Materiale consigliato
Al fine di semplificare l'utilizzo del GCTR e di velocizzare il suo uso anche da parte di utenti inesperti, e' consigliato disporre anche del seguente materiale:
VERSIONI DEL GCTR
Al fine di soddisfare al meglio le diverse esigenze degli utenti il GCTR e' disponibile nelle seguenti versioni:
GCTR xxx
Ambiente di sviluppo per la scheda GPC® xxx in EPROM.
FGCTR xxx
Ambiente di sviluppo per la scheda GPC® xxx in FLASH
EPROM da 128K Byte.
FGCTR xxx.512K
Ambiente di sviluppo per la scheda GPC® xxx in FLASH
EPROM da 512K Byte.
FWR xxx
FLASH EPROM da 128 KByte per la scheda GPC®
xxx, con il FLASH WRITER programmato nel primo settore.
FWR xxx.512K
FLASH EPROM da 512 KByte per la scheda GPC®
xxx, con il FLASH WRITER programmato nel primo settore.
Le cinque sigle sopra riportate si adattano alla scheda con frequenza di clock di base (20 MHz per GPC® 188F/D e 26 MHz per GPC® 884 e GPC® 883); qualora l'utente intenda utilizzare il GCTR con frequenze di clock superiori, deve utilizzare le apposite versioni identificate dal suffisso .xxM (ad esempio .40M per la GPC® 884 a 40 MHz di clock). Si ricorda inoltre, che le sigle sopra riportate possono essere utilizzate direttamente per gli eventuali ordini.
Pagina aggiornata al 13 Giugno 2002