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:
- Modalità SBC: l'emulatore è visibile dall'host, mentre tutti i pin di Arduino (dati, indirizzo, controllo) sono in modalità tri-state.
- 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).
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.