Project building and Software Installation notes
------------------------------------------------


Building the hardware
---------------------

- cd into schema, and print all schematics. for those of you that don't
have eEDA installed, then postscript files are available.

- first build the parallel port interface. For this, you will need to
refer to:

  - burn_power_supply.sch (optional)
  - burn_universal.sch

- if you do chose to build the power supply, make sure you put decent
sized heat sinks on the 7812 and 7805 regulators. see specs (on the net)
for details. however, you can get away with a AT or ATX power supply or
something like that.

- For the burn_universal.sch, make sure you solder 100nF (or greater)
capacitors on the Vcc pins of all IC's.

      +-------
      |
  +---+Vcc
  |   |
----- |
----- |
  |   |
  |
 ---
  -

this will filter ripping causing by the internal switching of the IC's.

- In burn_universal.sch, The buzzer circuit is optional. currently it's
not implemented. I (jason) haven't bothered to implement it in my builds.

- After building the both circuits, use "port_test.c" to test out the 4
output ports. do this by connecting LED's (via a 1k resistor to GND) to
check that all the lines are working. In addition, run "loopback_test.c"
which will test CHIP1 (U3), and the 74688 (U2) comparitor circuits.

if any of these tests fail, then you have done a mistake, and can't
proceed.

- build the burn_relay_circuit.sch. This circuit is optional. I haven't
bothered to build this bit. All this circuit does is selects between your
target IC (the one you want to program), and your application (ie a CPU
header plug that you would plug into your application).

- build the burn_vpp.sch circuit. this circuit is manditory for the
AT89C2051 and AT89C51 targets. after you build it, make sure you test it.

- Finally build your target circuits.


how i (jason) recommend doing it (how i have done it), is build your power
supply and parallel port interface on the one protoboard, and using two 25
pin Sub-D connectors to the 4 ports, power rails and P13_SELECT_OUT.

on seperate protoboards, have your VPP circuitry (burn_vpp.sch) and one or
more target circuits with Sub-D connectors that "plug" into the parallel
port interface.

(see schema/burn_uni5.jpg)


Software Installation
---------------------

this dist has been developed on linux 2.2.x with glibc 2.1.x. No ports
have been attempted yet to winshit or other unix's (any takers???).

- Decide if you're going to use the burnm companion module or have burn
talk directly to the Parallel port hardware. burnm has a number of
advanges-

  - burn accesses hardware safely, where as talking directly to hardware
    may cause race conditions and synchronousies with any operating system
    drivers that are concurrently using the same parrellel port..... hence
    machine lock up (and locks up's are very nasty things on
    virtualised/multitasking OS's like linux ;).

  - can use burn as i normal user (assuming default permissions are set for
    /dev/burn)

however, if you're using an operating system that doesn't support the 
burnm driver in it's current form (ie FreeBSD) or has no special device
facilities (ie Winshit), then you will have to compile burn with IO port
routines.

If you want to use burnm, then go into the burnm directory and follow the
instructions.

- To compile for Port IO, cd into src, and type in 'make io'.

- To compile for burnm module (/dev/burn), cd into src, and type in
  'make dev'.

- If source code compiled with no errors, then type in "make install".

- done!.


Usage:
------

Usage: burn -m <target> [-hewrdsl] [-f <filename.bin>]

       burn -h ....................... This display.
       burn -m <t> -e ................ Erase IC (if applicable)
       burn -m <t> -w -f <filename> .. burn an image to IC
       burn -m <t> -r -f <filename> .. Dump IC to file
       burn -m <t> -d ................ view IC
       burn -m <t> -s ................ view signature of IC (if applicable)
       burn -m <t> -l ................ Lock IC (if applicable)

the "burn -h" information is fairly straight forward.

a couple of pointers:

- this program will erase, read, write the entire block of memory of a
target. at the moment you can't read or write a "section" of IC's
memory. later, with the bigger IC's, it will have to be implemented.

- "-s" will read the signature of an IC if it implements this
  facility. Atmel signatures for example can tell you what type of model,
  and make it is. this can be handly. the Amtel AT89C51 burner code for
  example reads this information to determine what VPP voltage to apply,
  as there are two types of AT89C51 available.


  examples:

  burn -m 2051 -e
  burn -m 24C08 -d
  burn -m 89C51 -l
  burn -m 89C51 -w -f 4k_image.bin


                                    ooo0ooo
