The purpose of emurom is to make it fast and convenient to hack code in ROMs without having to repeatedly remove and reprogram an actual ROM chip.
Emurom is a board which connects through USB to a host computer, and can be connected in place of a parallel ROM chip on a target device. It acts as a ROM chip, but holds its data in a static RAM, which can be updated at any time through the USB connection. Optionally it can provide power (5v) to the device by shorting a jumper, and it also has a lead to clip to the reset signal of the target device, to automatically reboot it when a new ROM image is uploaded.
Hardware design (kicad) and source code (firmware/host program) can be found in the emurom git repository on github. Grab a copy with:
git clone https://github.com/jtsiomb/emurom
Or download the release archive which also includes the schematic PDF, gerbers for PCB manufacture, datasheets for all the components, and pre-compiled binaries for the firmware and host program:
Latest release: emurom rev2 (mirror)
Copyright (C) 2020 John Tsiombikas <firstname.lastname@example.org>
All hardware designs in this project are free/open hardware. Feel free to manufacture, sell, use, modify and/or redistribute, under the terms of the Creative Commons Attribution Share-Alike license (CC BY-SA).
All software in this project (firmware and host upload program) are free software. Feel free to use, modify and/or redistribute under the terms of the GNU General Public License version 3, or at your option any later version published by the Free Software foundation. See `LICENSE.sw` for details.
Emurom rev2 schematic in PDF format.
Gerber files for manufacturing the PCB.
Preview of the printed circuit board revision 2 with the ground planes removed for clarity:
To build emurom, you'll need the following components:
|1||U1||ATmega328P AVR microcontroller||TQFP 32|
|1||U2||MCP2221 USB-serial converter||SOIC 14|
|1||U3||74HCT157 quad 2-1 multiplexer||SOIC 16|
|2||U4,U5||74HCT595 8-bit shift register w/3-state output||SOIC 16|
|1||U6||UM61512AK 64k static RAM (or other similar 64k SRAMs)||PDIP 32|
|3||U7,U8,U9||74HCT244 octal 3-state buffer||SOIC 20|
|2||C1,C2||22 pF ceramic capacitor||0805|
|11||C3-C13||0.1 uF ceramic capacitor||0805|
|2||R1,R2||330 Ohm resistor||0805|
|6||R3-R8||4.7 kOhm resistor||0805|
|2||D3,D4||1N4148 signal diodes||0805|
|1||Y1||14.7456 quartz crystal||7.6x4.1mm SMD|
|3||JP1-JP3||2-pin male header (jumper pins)|
|1||J1||6-pin (2x3) male header or IDC connector 2.54mm pitch|
|1||J2||molex 105017-1001 micro-USB (type B) connector|
|1||U10,J3||24-pin (2x12) male header or IDC connector 2.54mm pitch|
|1||U11,J5||28-pin (2x14) male header or IDC connector 2.54mm pitch|
|1||J7||1-pin male header|
There's also a case you can 3D print to put the emurom board inside. The archive includes the FreeCAD project file, and 3D-printable geometry in STL format for the top and bottom parts.