This chapter is written by Abhijit Dasgupta and is reproduced here from http://www.nnaf.net/~abhijit/eep. Abhijit's email : abhijit@ans.net
A photo of the burner is at - http://www.nnaf.net/~abhijit/pictures/eeprom-burner.jpg
This is an eeprom burner for the 2816/2864 type of eeproms. There are various designs available, but the main goal was to have something which
This one uses a handful of 74HCTxx logic chips all available at the local Radio Shack store! It uses the PC parallel port interface, and Abhijit wrote the driver code for Linux only, but it should be easy to modify it for other PC operating systems.
This was used to burn netboot PROMs for ethernet cards, which were used to make diskless linux boxes. See the netboot/etherboot packages for details of how to do that. You can also use it for building microcontroller systems with external ROM (e.g. 8031).
WARNING: It is easy to destroy the parallel port of your PC by connecting things to it. It is also possible to damage or destroy the whole PC, its attachments, peripherals, and people near it by improper connections and electrical accidents. USE EXTREME CAUTION.
Disclaimer: Use at your own risk. There is absolutely no warranty of any kind here.
The programmer can be built on a breadboard, but use a protoboard for a more permanent version. Use 0.1uF power-bus bypass capacitors generously. The 5V power source can be obtained from the PC itself, but be careful here.
Download the software from http://www.nnaf.net/~abhijit/eep/eeprom.tar.gz. To build the software, just cd to the src directory and type `make';
readrom ------- readrom will read a specified number of bytes from a 2816/2864 eeprom starting at a given offset, and send it to the standard output in either binary (raw) or ascii-hex listing format. Usage: readrom -b|-t offset size where -b output binary (raw) bytes -t output text (ascii-hex) listing offset start address of eeprom, 0..8191 size number of bytes to output, 0..8192 Examples: # read the contents of a 2864 in binary (raw) form and save it in a file: readrom -b 0 8192 > contents.bin # list 80 bytes starting at offset 32: readrom -t 32 80 writerom -------- writerom will read a given number of bytes from the standard input and write them into a 2816/2864 eeprom starting at a specified offset. writerom verifies the eeprom byte-by-byte as it writes into it. Usage: writerom offset size where offset start address of eeprom, 0..8191 size number of bytes to output, 0..8192 Example: # Write 8192 bytes from the file ne.lzrom into the eeprom: writerom 0 8192 < ne.lzrom
The schematic is in ascii, but a PostScript version which looks better is available from http://www.nnaf.net/~abhijit/eep/eeprom/schematic.ps
+-------+ +5-------|RST | +5---o o o J1 +-----------+ +5--o----|/CLR1 | 10K | | | | | |-----o--/VVV\-- +5 +----------|26 +5(NC) | +------+ | |1/2 123| | +----------->|27 NC(/WE) | 16 o-|/CS2 | | | |--||-+ | +--------->|23 /WE(A11)| | CS1|----o----|B1 | 100pF | | | | | | | /Q1|---------->---------o o o J2 | ZIF28 | | Y1|---------|/A1 | | | socket | | 138 | +-------+ _ 1/2 74HCT132 | | for | | | +5 --| \ __ | | 2816(2864)| | Y2|--------------------------| O--| \ | | | 8 o-|A2 | +-------+ |_/ | O-------------->|/OE | 7 o-|A1 Y4|--------------->|EN Y7|-----o-|_/ | | | 6 o-|A0 Y3|----+ +5-----|RST | | | | | | Y0|-+ | | Y6|--+ | | | | | /CS3| | | | 259 | | | | | | +------+ | | | Y4|--|--|-----------|------->|2 NC(A12) | | | | | Y3|--|--|-----------+ | | 5 o--->---|--|--|--------o--|D Y2|--|--|------------------->|A10 | 4 o--->---|--|--|------o-|--|A2 Y1|--|--|------------------->|A9 | 3 o--->---|--|--|----o-|-|--|A1 Y0|--|--|------------------->|A8 | 2 o--->---|--|--|--o-|-|-|--|A0 | | | | | | | | | | | | +-------+ | | +5------------|28 NC(+5) | | | | | | | | | | +5----/VVV\---|1 NC(RDY) | | | | | | | | +-------+ | | 1K | | | | | | | | | | Y7|--|--|------------o------>|A7 | | | +---------->|EN |--|--|-----------o|------>| | | | | | | | | |--|--|----------o||------>| | | | | | | | | 259 |--|--|---------o|||------>| | | | | | | | | |--|--|--------o||||------>| | | | | | | | | |--|--|-------o|||||------>| | | | | | | +--|D |--|--|------o||||||------>| | | | | | +----|A2 Y0|--|--|-----o|||||||------>|A0 | | | | +------|A1 | | | |||||||| | | | | +--------|A0 RST| | | |||||||| | ZIF28 | | | +-------+ | | +------------+ | for | | | | | | | data in | | 2816/64 | | | +5 | +-->|/OE | | | | | | | 574 | | | | +------------------------------->|CLK | | | | | | data out | | | | V +------------+ | | +----+ +------------+ |||||||| | | | | SEL | |||||||| | | | | B3|<----|||||||o------|D7 | 11 o---<-----------------------|Y3 B2|<----||||||o-------| | 12 o---<-----------------------|Y2 B1|<----|||||o--------| | 13 o---<-----------------------|Y1 157 B0|<----||||o---------| | 15 o---<-----------------------|Y0 A3|<----|||o----------| | | | A2|<----||o--- data---| | | | A1|<----|o---- bus ---| | | GND----|/OE A0|<----o-------------|D0 | +5--o--+ | +------------+ | | | | __ o---------------------------------------------->|/CE | 100K +-| \ | __ +-----------+ sw1 | | O-o-| \ 1/2 74HCT132 o-->o----|__/ | O---390ohm--+ | | +-|__/ | | --- 1uF | LED | --- +5--+ | | | | +---o----------------------------o- GND
Notes: