HWTool V0_10

This project provides simple but flexible architecture to program or test electronic devices (processors, programmable logic, ..). To programm one device you need two parts: The hardware adapter connects the device to the parallel port and the software adapter provides the programm logic to read the fusemap/rom data/programm data and write it to the device.

The whole project is intended to be used by medium to very experienced hardware developers because the chip has to be connected in the correct way to get it working.

Words of Warning
The difference to commercial products is that incorrect use is not prohibited: There are no red warning lights and wrong connections may damage the device in the programmer, the programmer electronics or even the PC.

This sounds very bad? That's right, so lets see how much I damaged so far: Since the start of the project I programmed PIC12C509 (50 programming cycles, 2 programming failures, 0 damaged devices), EPROMS-64K (6 programm, 0 fail, 0 damaged), Atmel ATTiny26-16PI (5 programm, 0 fail, 0 damaged) and Gal16V8 (22 program, 1 fail, 0 damaged). Until now I never managed to destroy the programmer hardware or the parallel port. The message is: The thing works if you are carefull.

The programmer software is written in java and uses the pport-package (from this server) to access the parallel port. Some adapters are able to parse XML-Files containing the rom or fusemap data. Therefore they need the jaxb-library (for free at sun.com). If you don't want to use that feature, you can still run the software without this feature.

The software contains the programmer main application and pluggable Adapter classes (implementing the Adapter interface). The adapter class is loaded at runtime and initializes the programmer hardware. The call could look like this:
hwtool --debug INFO org.halfdog.hwtool.adapters.AtmelATTinyAdapter ParPort=/dev/pport0 AdapterMode=read File=tmp/atmel_out.xml
The hwtool program only supports the --help command to show a minimal help and the --debug [level] command to set the verbosity of the application. Debug levels can be ERROR, WARNING, INFO, FINE, FINER, FINEST, ALL. After these parameters the class name of the adapter class to use has to follow. Behind the class name the adapter-specific arguments can be given.
The hwtool command itself can be provided using a shell script (included in the distribution) or an alias (just change the fields to reflect your installation):

alias hwtool="java -classpath hwtool.jar:../pr0007/jars/pport.jar:${JAXB_API}:${JAXB_LIBS}:${JAXB_RI} org.halfdog.hwtool.HWTool"
When the software is started it tells the user which hardware adapter to use and the settings for the external power supply (if needed). Then you connect the device you want to programm and the software will read/programm it.
Currently there are following software adapters implemented:

Module Description
AtmelATTinyAdapter This adapter allows the ISP (In circuit programming) of Atmel ATTiny26-16PI devices if the circuit is compatible with the recommendations from the Atmel ISP application note. Currently there is no support for other devices than the ATTiny26-16PI. Since other devices from the same family use a nearly identical programming algorithm, support for other devices should be no problem (just send a note).
EpromAdapter*Programm eproms, currently all 8bit wide eproms with suitable hardware adapter supported.
HWTestAdapter*Test the programmer hardware and software. The module can also do some simple kind of logic analyzing.
LatticeGal16V8Adapter Read or write fusemaps to Gal16V8A/B/C/D/Z. Read and write works perfectly, but the chip erase didn't work. I don't know if this is a programmer bug since I'm not sure if my gal devices support reprogramming (they were older ones extracted from electronic waste).
PicAdapter*Programm PIC devices, currently only PIC12C509 and PIC16C57
Other Adapters
LCDDisplay*Use the programmer to display text on a 16x2 LCD display. Allows to test the special LCD commands.
TrafficAdapter*Demo application, use the programmer to simulate a traffic light (austrian style).
* These adapters were not included in my last complete-software-review and hence are not included in the current package. If you want to use one of these, send me a note and I'll include them in the next version.
The programming hardware may differ if different chips are used. Easily programmable devices (e.g. via serial programming) can be connected directly to the parallel port. All you need is to solder a socket to a 25-pin connector to get your programming adapter hardware. Another method is to use one socket and some little board to switch the wires to the parallel port.

More complex devices (like EPROMS) which need numerous pins to be driven can be connected to a very simple but flexibe programmer hardware working as 8 to 48pin demultiplexer attached to the parallel port. The device provides 16 tristate lines for read and write (data lines) and 24 output-only lines.
To programm a devices you have to attach an adapter to the programmer's output pins, that maps the programmer signals to the pins of the part you want to programm. The whole design contains only inexpensive parts, just standard logic: just 8x 74LS373, 1x 74LS245, 1x 74LS139 and some control logic (not, or).
Parallel port 8 to 48 bit demultiplexer
8 to 48bit demultiplexer, made of TTL-series ICs

Contact: e-mail: me (%) halfdog.net
Last updated: 02.07.2005