afterburner/README.md

205 lines
6.5 KiB
Markdown
Raw Normal View History

2019-03-16 10:45:18 +00:00
# afterburner
GAL chip programmer for Arduino
2019-03-16 11:49:41 +00:00
This is a GAL IC programmer software that allows to program GAL IC chips
from various manfucaturers. It is based on work of several other people:
Bruce Abbott:
http://www.bhabbott.net.nz/atfblast.html
Manfred Winterhoff:
http://www.armory.com/%7Erstevew/Public/Pgmrs/GAL/_ClikMe1st.htm
who did the most of the hard work of deciphering and publishing the programming
protocol of these chips. Their programs were Windows based and relied on
presence of parallel port (LPT). Afterburner was written for Linux OS, and
requires serial connection to Arduio UNO, which does the programming
of the chip.
Supported GAL chips:
* Atmel ATF16V8B, ATF22V10B, ATF22V10CQZ
* Lattice GAL16V8A, GAL16V8B, GAL16V8D
* Lattice GAL22V10B
* National GAL16V8
Setup:
* Upload the afterburner.ino sketch to your Arduino UNO.
* Connect the pins of the GAL chip to Arduino UNO according to
the schematics images. Ideally use a PCB (ether etched or made
in a fab) that's provided in 'pcb' and 'gerbers' directory.
You can also hardwire on protoboard or breadboard.
* Compile the afteburner.c to get afterburner executable. Run
./compile.sh to do that.
* Set the programming voltage (VPP) on the voltage up-converter
module (MT3608) depending on the GAL chip
Atmel ATF16V8B - 10V
Lattice GAL16V8 - 10V, also works with 12V
Others - between 10 - 14V - untested
* Check the programming voltage (VPP) without the GAL chip being
inserted / connected to Arduino UNO. Test the voltage on MT3608
module VOUT- and VOUT+ pins while running the following command:
<pre>
./afterburner s
</pre>
* Check the chip identification by runnig the following command:
<pre>
./afterburner i
</pre>
If you get some meaningfull GAL chip identification like:
<pre>
PES info: Atmel ATF16V8B VPP=10.0 Timing: prog=10 erase=25
</pre>
then all should be well and you can try to erase the chip and then
programm it to contain your .jed file.
If you get an unknown chip identification like:
<pre>
PES info: 3.3V Unknown GAL, try VPP=10..14 in 1V steps
</pre>
then look at the troubleshooting section
* Read the content fo your GAL chip. This only works if the contents
of the chip is not protected. Use the following command:
<pre>
./afterburner r -t [GAL_type]
</pre>
or to save the printed .jed fuse map to a file use:
<pre>
./afterburner r -t [GAL_type] > my_gal.jed
</pre>
* Erase the GAL chip. Before writing / programming the chip it must
be erased - even if it is a branch new chip that has not been used
before. Use the following command:
<pre>
./afterburner e -t [GAL type]
</pre>
* Program and verify the GAL chip via the following command:
<pre>
./afterburner wv -t [GAL type] -f my_new_gal.jed
</pre>
How aferburner works:
---------------------
* PC code reads and parses .jad files, then produces a binary which
can be the uploaded to Arduino via serial port. By default
/dev/ttyUSB0 is used, but that can be changed to any other device
by passing the following option to afterburner:
<pre>
-d /my/serial/device
</pre>
* PC code of afterburner communicates with Arduino UNO's afterburner
sketch by a trivial text based protocol. You can also connect directly
to Arduino UNO via serial terminal of your choice and issue some basic
commands manually.
* Arduino UNO's afterburner sketch does 2 things:
1) parses commands and data sent from the PC afterburner code
2) toggles the GPIO pins and drives programming of the GAL content
* more information about GAL chips and their programming can be found here:
http://www.bhabbott.net.nz/atfblast.html
http://www.armory.com/%7Erstevew/Public/Pgmrs/GAL/_ClikMe1st.htm
Troubleshooting:
----------------
- it does not work!
* double check the schematics and the connection between Arduino UNO and
the GAL chip.
* ensure the GAL chip is inserted to the IC socket the right way (check
the pin 1 location)
* ensure the VPP is set correctly on the MT3608 module. If unsure which
voltage to use then try individual voltages one by one:
10V, 11V, 12V, 13V, 14V, 15V. Do not go beyond 15V as you may damage the
GAL chip.
* measure the VPP only when the chip is physically DISCONNECTED. Some brands
of the GAL chip (Atmel) - when connected - iternally lower the voltage
on the Edit (VPP) pin (voltage divider?) and such voltage reading is misleading.
* use an external power supply for your Arduino UNO, powering
just via serial USB cable may not be sufficient for driving the GAL chip and the
voltage up-converter
- afterburner reports it can not connect to /dev/ttyUSB0, permission denied
* ensure your user is member of the of the dialup group or alernatively run
afterburner as superuser (use: sudo ./afterburner ...)
- afterburner fails to connect to /dev/ttyUSB0
* ensure your PC is actually connected to Arduino UNO, check a serial device
exists:
<pre>
ls -alF /dev/ttyUSB*
</pre>
- my MT3608 module does not have EN pin
* that's unfortanetly a common problem. You have to mod the module as follows:
* cut the PCB trace between pin 4 & 5 of the MT3608 chip. Verify the trace
is cut by continuity probe (no beep is audible) between pins 4 & 5.
<pre>
| Blue Potentiometer |
|_________________________|
| ______________
| | |
| | SMT Capacit. |
| |______________|
|
| 3 2 1
| | | |
| +-------+
| | |
| |4 5 |
| +-------+
| |X | |
|
|<-- left long edge of the module
</pre>
* X marks the spot - here make the vertical cut. Do not cut the pins
itself! Just cut the trace between the pins, which is only barely visible
without magnification.
![See the MT3608 image in img directory for more details.] (https://github.com/ole00/afterburner/raw/master/img/mt3608_mod.jpg "EN pin mod")
* solder a thin keynar wire to pin 4 which is your ENable pin.
* Once that is done, toggling the EN pin will change the output voltage
of the module between 5V (actually slightly less than that) and the
voltage set by the potentiometer (10V and more).
- my MT3608 module does not seem to work - turning the pot does nothing
* The pot needs to be turned at least 10 revolutions counter-clockwise
to do anything useful. Keep trying.
- where to get the MT3608 module ?
* usual places: ebay, aliexpress
- what are the .jed files and how to produce them
* Use WinCupl software from Atmel. Works under Wine as well.
https://www.microchip.com/design-centers/programmable-logic/spld-cpld/tools/software/wincupl