/pico_rom_dump

Use Raspberry Pi Pico to dump the contents of parallel ROM

Primary LanguageCMIT LicenseMIT

Pico ROM Dumper

The Pico ROM Dumper turns the Raspberry Pi Pico (or Pico 2) into a device capable of dumping the contents of a ROM device. It currently supports 8-bit parallel data bus, 15-bit address bus, and CE (chip enable) pins. Since the Pico operates at 3.3V I/O, it is assumed that either the ROM will operate at 3.3V or level shifters are used to translate the ROM's voltage to be compatible with 3.3V.

Usage

To use the Pico ROM Dumper:

  1. restore the firmware on a Raspberry Pi Pico (or Pico 2)
  2. connect pins to target ROM and ensure nothing else is driving the bus
  3. connect cable from Pico to computer to provide power and serial shell
  4. connect to USB serial shell using a terminal emulator
  5. run dump command - see example usage below

Example

$ picocom -b 115200 /dev/cu.usbmodem102
picocom v3.1

> help
 * help
	Print list of commands
 * dump
	Dump ROM
	usage: dump [base addr] [length] [bytes per row] [setup time (us)]
	example: dump 0x100 0xf00 32 10

> dump 0x100 0x20
0100: 0000 0000 0000 0000 0000 0000 0000 0000
0110: 0000 0000 0000 0000 0000 0000 0000 0000

Pinout

+-------+-----+------+--------+---------+-----+-------+
| Usage | Pin | Name |        | Name    | Pin | Usage |
+-------+-----+------+--------+---------+-----+-------+
|  UART |   1 |  GP0 |        | VBUS    | 40  |       |
|  UART |   2 |  GP1 |        | VSYS    | 39  |       |
|       |   3 |  GND |        | GND     | 38  |       |
|    A0 |   4 |  GP2 |        | 3V3_EN  | 37  |       |
|    A1 |   5 |  GP3 |        | 3V3(OUT)| 36  |       |
|    A2 |   6 |  GP4 |        | ADC_VREF| 35  |       |
|    A3 |   7 |  GP5 |        | GP28    | 34  | D7    |
|       |   8 |  GND |        | GND     | 33  |       |
|    A4 |   9 |  GP6 |        | GP27    | 32  | D6    |
|    A5 |  10 |  GP7 |        | GP26    | 31  | D5    |
|    A6 |  11 |  GP8 |        | RUN     | 30  |       |
|    A7 |  12 |  GP9 |        | GP22    | 29  | D4    |
|       |  13 |  GND |        | GND     | 28  |       |
|    A8 |  14 | GP10 |        | GP21    | 27  | D3    |
|    A9 |  15 | GP11 |        | GP20    | 26  | D2    |
|   A10 |  16 | GP12 |        | GP19    | 25  | D1    |
|   A11 |  17 | GP13 |        | GP18    | 24  | D0    |
|       |  18 |  GND |        | GND     | 23  |       |
|   A12 |  19 | GP14 |        | GP17    | 22  | /CE   |
|   A13 |  20 | GP15 |        | GP16    | 21  | A14   |
+-------+-----+------+--------+---------+-----+-------+

Notes

To provide user-friendly shell interface, this project makes use of funbiscuit's embedded-cli library which supports tab-completion and shell history in a single header file.