Werner's slow PIC-based programmer
==================================

Copyright 2006 Werner Almesberger

The files containing firmware in this directory are distributed under
the terms of the GNU General Public License (GPL), version 2. This
license is included in the file ../COPYING.GPLv2.

The files containing hardware schematics or layouts in this directory
are distributed under the terms of an augmented version of the GNU
General Public License (GPL), which is described in the file
../COPYING.HW
The original GPL, which is included by reference, is in the file
../COPYING.GPLv2.


This is a very basic serial programmer for CY8C2xxxx chips. The
control software for it is in the directory ../prog

This programmer consists of a PIC that receives one vector at a time
over the serial port. Vectors are encoded in one, two, or three
bytes. It then sends the corresponding bit sequence to the chip being
programmed, adding padding as needed. If the vector is a read or the
execution of an SSC, the programmer sends back the data returned or a
dot (as progress indicator).

The communication speed is hard-coded to 19200 bps, which allows for
safe communication even in quite adverse environments.


The firmware
------------

The firmware provides a vector-level abstraction of the signals
exchanged with the target. The firmware is written for the GNU PIC
Utilities, http://gputils.sourceforge.net/


The circuit
-----------

The example circuit is very basic. It doesn't support power-on mode,
requires the target to supply power, and doesn't sense target
voltage.

The schematic was produced with gschem from the gEDA project, see
http://www.geda.seul.org/


The layout
----------

It just uses the non-SMT components I had at hand. All of them are
extremely common, with the possible exception of the PIC. If using a
different type of PIC, you may have to change the layout to handle
different pin arrangements. 

The layout was produced with PCB, see http://pcb.sourceforge.net/
