- dimensioni "doppia eurocard" (160x197mm)
- processore Intel 80C186-16
- 64k "kernel" ROM (due EEPROM 27C256 della ST Microelectronics)
- 128k RAM (quattro SRAM 62256A della Hynix) a 70ns
- PPI: programmable parallel interface (un 8255AP-5 della Toshiba) con un totale di 24 bit di I/O
- doppio serial controller Zilog Z85C3010PSC a 10 MHz, per un totale di quattro canali seriali.
La board è stata descritta per la prima volta nel numero #49 della newsletter Connected To del TSteam di luglio 1993 (sedici anni prima che comprassi la mia prima Beagleboard).
Riguardo all'hardware:
- il connettore di alimentazione (quello su JPA) è un classico AMP/Molex 8981 a 4 poli di cui viene usata solo la 5V; la 12V è riportata solo per alimentare apparecchiature esterne
- per forza di cose (architettura Intel x86) la RAM parte ovviamente dall'indirizzo 0000:0000 e la ROM deve essere leggibile almeno attorno a FFFF:0000
- i vari chip vengono selezionati attraverso diverse linee di chip-select; di nostro interesse sono solo PCS1 e PCS2 (per selezionare i rispettivi 8530) e PCS3 (per selezionare la PPI 8255)
- gli interrupt utilizzati sono solo due, INT0 e INT1, per i due 8530
- è prevista anche funzionalità DMA (via JP4, JP7-8-9-10) e scheda DPRAM (DualPort RAM, via JP16) ma non ce ne occuperemo
- occorrono dei MAX232 per convertire i canali seriali TTL in RS232:
Headers e ponticelli utili:
- JP1: pin 1 LED "On", pin 2 reset e pin 3 GND
- JP12-JP13-JP14: porte A-B-C dell'8255 (tre header da 9 pin: il primo pin è +5V, seguono quindi i bit da 0 a 7 della porta)
- JP15: porte B-C dell'8255 riordinate per connettere un display LCD (pin 1-2 GND, pin 3-4 +5V, pin 5 n.c., pin 6-7-8 bit 5-6-7 della porta C dell'8255 in funzione di RS/RW/E del display, seguono i pin 9..16 con la porta B dal bit 7 al bit 0, in funzione di DB7..DB0 del display)
- quattro porte seriali TTL (JM1..JM4) con 9 pin (la "L" sta per "livelli logici TTL 5V"): DCDL, CTSL, RTSL, RXDL, TXDL, RXCL, TXCL, GND, +12V (il pin 12V serve solo per alimentare un eventuale modem).
- EPROM: JR1 1-2, JR2 2-3 (per le 27128 da 16k); JR1 e JR2 impostati a 2-3 e 2-3 (per le 27256 come nel nostro caso); oppure 2-3 e 1-2 per le 27512 o 27010
- SRAM: JR3 1-2, JR4 1-2 (per le 62256 da 32k e fino alle 128k); 2-3 e 2-3 per le 512k.
- occorre un compilatore C (come il buon vecchio Turbo C 2.0) e il pacchetto 186KIT1.ZIP contenente il file ST.OBJ e il caricatore LOADGO.EXE
- scrivere programma in C - per esempio PROVA.C - e compilarlo in OBJ, linkarlo col citato ST.OBJ ottenendo un file .EXE e un file .MAP, creare un file .LOC partendo dal .MAP, necessario per il LOADGO, contenente (a seconda della mappa memoria della SBCC):
prova # file exeIl file ST.OBJ contiene solo poche istruzioni di inizializzazione dello stack e dell'area variabili e il canonico call main() seguito da un ciclo a vuoto casomai il main ritornasse un valore. A quanto pare il trucco si è reso necessario per poter consentire lo sviluppo di files EXE anziché COM (limitati a 64k di eseguibile); il LOADGO e il kernel fanno tutte le relocation indicate nel file EXE e a seconda della mappa di memoria .LOC specificata (a me pare una complicazione inutile).
prova # file .map
prova # file .abs, se disponibile
CODE @ 0x0300 +
RDATA @ $ +
DATA @ $(0x0400) +
BSS @ ($) +
STACK @ ($),
16K ROM @ 0x0300 +
48K RAM @ 0X1000
infine lanciare LOADGO @PROVA per caricarlo via COM1 ed eseguirlo sulla SBCC usando il citato kernel delle EEPROM di default.
Gli indirizzi delle porte dell'8255 sono:
- 0x1180: porta A
- 0x1182: porta B
- 0x1184: porta C
- 0x1186: porta comandi del PPI
Considerazioni finali.
La SBCC ha solo CPU, seriali TTL e pin di I/O. Nient'altro. Dunque il software va inciso su EEPROM; l'uso dello scomodo LOADGO da una finestra MS/DOS è l'unica opzione per la fase di sviluppo.
Nessun commento:
Posta un commento