Emulatore ROM

ROM-emulator

L'emulatore ROM è un dispositivo che emula una ROM di piccole dimensioni utilizzando un modulo RAM e un Arduino con interfaccia Intel-HEX.

ROMemu è un sistema integrato di software e hardware progettato per sfruttare strumenti di sviluppo software moderni in contesti di sistemi informatici a scheda singola (SBC) semplici e datati. Questo sistema emula un programmatore (EP)ROM per lo sviluppo software e funge da ROM/RAM in-circuit direttamente sulla scheda. Utilizzando il cablaggio del segnale WR*, è possibile accedere alla memoria come se fosse RAM da parte dell'SBC. Il firmware di ROMemu è stato sviluppato utilizzando uno shield prototipo e si è dimostrato stabile nel tempo. L'hardware è stato sottoposto a debug sulla versione 1.1 del PCB. ROMemu combina software e hardware per consentire l'uso di strumenti di sviluppo software moderni con SBC datati. Questo dispositivo emula un programmatore EPROM e funge da RAM o ROM in-circuit per l'SBC. La versione 1.1 attuale utilizza un Arduino Mega 2560, su cui è montato uno shield con un chip RAM da 32 kByte, parzialmente leggibile dal processore dell'SBC. Arduino si collega al sistema di sviluppo tramite la sua porta USB, che funge da interfaccia seriale, permettendo la scrittura di dati in formato Intel-HEX nella RAM.

ROMemu offre due modalità operative:

  1. Modalità SBC: l'emulatore è visibile dall'host, mentre tutti i pin di Arduino (dati, indirizzo, controllo) sono in modalità tri-state.
  2. Modalità Arduino: l'emulatore è isolato dall'host e accessibile solo dall'Arduino. Sebbene non ci sia sincronizzazione, l'SBC non dovrebbe bloccarsi finché non esegue codice dalla memoria emulata (nei test condotti, non si è verificato alcun blocco).
ROM-emulator

Figura 1

Il ROMemu consente di emulare una ROM di piccole dimensioni utilizzando un chip RAM e un Arduino Mega con interfaccia Intel-HEX. ROMemu si basa su uno shield Arduino con un chip RAM statico, completamente collegato ai pin di Arduino. L'interfacciamento con l'SBC host avviene tramite tre 74HCT244 per le linee di indirizzo e controllo, e un 74HCT245 per le linee dati. In modalità SBC, tutte le linee di Arduino sono in tri-state. Un ulteriore segnale, ArduinoOnline, può isolare la RAM dall'SBC. La gestione del buffer 74HCT245, tramite un 74HCT02 74HCT27, garantisce la visibilità della RAM durante la lettura da parte dell'SBC. Un cavo piatto corto e una scheda adattatore (pod) assicurano la corretta configurazione dei segnali del chip RAM. Il pod consiste in due componenti: un adattatore tra i pin RAM e quelli del socket, e un set di pin per il socket. È necessario realizzare un pod specifico per ogni tipo di socket da supportare. Per maggiori dettagli e risorse, è disponibile una pagina su GitHub all'indirizzo: ROM-emulator su GitHub.

Il diagramma in Figura 2 illustra il funzionamento dell'emulatore ROM.

ROM-emulator

Figura 2

Durante la modalità operativa, il chip RAM è connesso tramite buffer e il convertitore POD alla presa della scheda di destinazione. I pin di Arduino collegati alla RAM sono in modalità tri-state, permettendo al processore della scheda di accedere al contenuto della RAM. Quando Arduino accede alla RAM, i buffer vengono messi in modalità tri-state, isolando la RAM dalla scheda. In questa condizione, il processore legge il valore FFh nella regione di memoria indirizzata dalla presa. Arduino può quindi riempire la RAM con dati ricevuti dal PC o modificarli utilizzando i propri comandi interni. E' stato inoltre aggiunto un semplice programma basato su Python3 e wxWidgets alla pagina GitHub (ROM-emulator su GitHub) per chi preferisce evitare l'uso della riga di comando. È ancora in fase iniziale e testato solo sul sistema Linux, ma dovrebbe funzionare anche su Windows e macOS, essendo basato su wxTerminal. Il programma richiede l'installazione di Python3 e python-wx.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend