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

With the exception noted below, all files are 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.
The original GPL, which is included by reference, is in the file
../COPYING.GPLv2.

BC337.sym and pic16LF88.sym are based on work of the authors of gEDA
and distributed under version 2 of the GNU General Public License
(GPL), a copy of which can be found in ../COPYING.GPLv2.


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

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. For simplicity, I've omitted protective resistors between
the PIC and the target for now.

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

In order to view or edit the schematic, you have to copy the files
BC337.sym and pic16LF88.sym into a symbol directory of gschem, e.g.
cp BC337.sym pic16LF88.sym /usr/share/gEDA/sym/local/


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

That 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/
