Purpose | ||||||||||||||||||||
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. | ||||||||||||||||||||
Software | ||||||||||||||||||||
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):
JAXB_DIR=/opt/tools/xml/jaxb-1.0-beta
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. JAXB_API=${JAXB_DIR}/lib/jaxb-api.jar JAXB_LIBS=${JAXB_DIR}/lib/jaxb-libs.jar JAXB_RI=${JAXB_DIR}/lib/jaxb-ri.jar alias hwtool="java -classpath hwtool.jar:../pr0007/jars/pport.jar:${JAXB_API}:${JAXB_LIBS}:${JAXB_RI} org.halfdog.hwtool.HWTool" Currently there are following software adapters implemented:
| ||||||||||||||||||||
Hardware | ||||||||||||||||||||
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). 8 to 48bit demultiplexer, made of TTL-series ICs | ||||||||||||||||||||
Contact: e-mail: me (%) halfdog.net Last updated: 02.07.2005 |