Extract GAL Code via Arduino
Budget: $30 – $250 USD
I need a compact Python file/code that one can use from an Arduino Uno and reliably pull the contents of a GAL PLCC device (typical 20V8 family) into a file on my computer. The end goal is three-fold: create a safe backup of the existing fuse map, give me a clean base for future firmware tweaks, and let me inspect or disassemble the logic equations for analysis.
All the physical pieces are on my bench—Arduino Uno, socket adapter, level-shifting, and the target GAL—so the job is entirely about the software side. I am already comfortable flashing sketches and working with GALs, but I want a polished, repeatable workflow rather than a weekend hack.
Here are the GAL20V8C pins, and where they plug into on the Arduino board:
1) GAL pin 28 is +5VDC, connects to port 5V on Arduino board
2) GAL pin 14 is GND, connects to port GND on Arduino board
3) GAL pin 1 is I, connects to Analog In A5 on Arduino board
4) GAL pin 5 is I, connects to Analog In A3 on Arduino board
5) GAL pin 10 is I, connects to Analog In A1 on Arduino board
Typically UBB port is COM4, and typical Baud rate is 9600.
Please deliver:
• A Python 3 script that drives the read sequence over USB-serial, saving the result as a standard JEDEC (or compatible) file.
• An accompanying Arduino sketch that performs the low-level pin toggling and timing the GAL expects.
• Clear usage notes so I can dump any similar device by updating a part definition table instead of rewriting code.
The solution is considered complete when I can run the Python script, watch the Uno cycle through the address space, and end up with a file whose checksum matches repeated reads. If you can also include an optional step that translates the JEDEC into human-readable equations, that’s a bonus I’ll happily test.
All the physical pieces are on my bench—Arduino Uno, socket adapter, level-shifting, and the target GAL—so the job is entirely about the software side. I am already comfortable flashing sketches and working with GALs, but I want a polished, repeatable workflow rather than a weekend hack.
Here are the GAL20V8C pins, and where they plug into on the Arduino board:
1) GAL pin 28 is +5VDC, connects to port 5V on Arduino board
2) GAL pin 14 is GND, connects to port GND on Arduino board
3) GAL pin 1 is I, connects to Analog In A5 on Arduino board
4) GAL pin 5 is I, connects to Analog In A3 on Arduino board
5) GAL pin 10 is I, connects to Analog In A1 on Arduino board
Typically UBB port is COM4, and typical Baud rate is 9600.
Please deliver:
• A Python 3 script that drives the read sequence over USB-serial, saving the result as a standard JEDEC (or compatible) file.
• An accompanying Arduino sketch that performs the low-level pin toggling and timing the GAL expects.
• Clear usage notes so I can dump any similar device by updating a part definition table instead of rewriting code.
The solution is considered complete when I can run the Python script, watch the Uno cycle through the address space, and end up with a file whose checksum matches repeated reads. If you can also include an optional step that translates the JEDEC into human-readable equations, that’s a bonus I’ll happily test.
Related categories:
C Programming
Python
Electronics
Microcontroller
C++ Programming
Arduino
Software Development
Embedded Systems