mirror of
https://github.com/TomNisbet/TommyPROM.git
synced 2024-11-21 19:31:12 +00:00
split PromDevice docs to separate pages
This commit is contained in:
parent
ab72f50afb
commit
0db39c0d43
@ -16,24 +16,32 @@ docs:
|
||||
url: /docs/hardware
|
||||
- title: "Software"
|
||||
url: /docs/software
|
||||
- title: "PROM-specific Code"
|
||||
url: /docs/prom-specific-code
|
||||
- title: "Printed Circuit Board"
|
||||
url: /docs/pcb
|
||||
- title: "TommyPROM32 PCB"
|
||||
url: /docs/tommyprom32-pcb
|
||||
- title: "Adding Chip Families"
|
||||
url: /docs/extending
|
||||
- title: "8755A Hardware"
|
||||
url: /docs/8755A-hardware
|
||||
- title: "PROM-specific Code"
|
||||
children:
|
||||
- title: "Overview"
|
||||
url: /docs/prom-specific-code
|
||||
- title: "PromDevice28C"
|
||||
url: /docs/prom-device-28c
|
||||
- title: "PromDeviceSST"
|
||||
url: /docs/prom-device-sst
|
||||
- title: "PromDevice27"
|
||||
url: /docs/prom-device-27
|
||||
- title: "PromDevice23"
|
||||
url: /docs/prom-device-23
|
||||
- title: "PromDevice8755"
|
||||
url: /docs/prom-device-8755
|
||||
- title: "References"
|
||||
children:
|
||||
- title: "28C256 and SDP"
|
||||
url: /docs/28C256-notes
|
||||
- title: "PROM Types"
|
||||
url: /docs/prom-families
|
||||
- title: "2316 and 2332 ROMs"
|
||||
url: /docs/2316-roms
|
||||
- title: "Release History"
|
||||
url: /docs/release-history
|
||||
- title: "Links"
|
||||
|
@ -1,339 +0,0 @@
|
||||
---
|
||||
title: Chips Supported
|
||||
permalink: /docs/prom-specific-code
|
||||
exerpt: "PROM types supported by TommyPROM - EPROM, EEPROM, Flash"
|
||||
---
|
||||
|
||||
TommyPROM can be used to read and write many different types of EEPROM, Flash, and EPROM
|
||||
chips. Due to differences in the technologies of these chips, some features of TommyPROM
|
||||
may work differently or may not be applicable at all. The standard code can read most
|
||||
types of PROM, even if there is no specific software support for them.
|
||||
|
||||
Broadly speaking, there are two different ways to write to chips. The first method is
|
||||
similar to a static RAM - the WE signal is asserted and data is written to a location
|
||||
using the data and address lines. This is the case for the 28C64. Some of these chips,
|
||||
like the 27C257, need a programming voltage to be present on the Vpp or PGM pin. There
|
||||
are usually timing requirements for the program pulse and there may be repeated write
|
||||
cycles needed with a verification cycle to complete the write.
|
||||
|
||||
The second method is the use of a program command register. Bytes are written to a single
|
||||
location by sending a command string, which is a series of chip writes. These chips
|
||||
usually have additional commands to erase sectors or to lock and unlock the chip. The
|
||||
SST39SF010 is an example of a chip that uses a command register.
|
||||
|
||||
Some chips use a combination of both methods. The 28C256 uses a command register to
|
||||
enable and disable Software Data Protection, but uses a direct write for programming.
|
||||
|
||||
TommyPROM has a variety of PromDevice Modules that can be compiled in to support these
|
||||
different chip technologies.
|
||||
|
||||
|
||||
# Verified Chips
|
||||
|
||||
|Model |Manufacturer |Type |Module |Notes|
|
||||
|:--- |:--- |:--- |:--- |:--- |
|
||||
|AT28C256 |Atmel, others|EEPROM |28C |Fully supported|
|
||||
|AT28C64 |Atmel, others|EEPROM |28C |Fully supported|
|
||||
|AT29C010 |Atmel |Flash |28C |Only with 128 byte or less sector size|
|
||||
|SST39SF040|Microchip |Flash |SST39SF|All SST39SF0x0 supported|
|
||||
|SST28SF040|SST |Flash |SST28SF|All SST28SF0x0 supported|
|
||||
|M27256 |ST Micro |EPROM |27 |VCC=6V, VPP=12.5V to pgm|
|
||||
|M27C256 |ST Micro |EPROM |27 |VCC=6.5V, VPP=12.75V to pgm|
|
||||
|W27C257 |Winbond |EEPROM |27 |Continuous 12V or 14V for program/erase|
|
||||
|SST27SF020|SST |Flash |27 |12V continuous for pgm/erase|
|
||||
|8755A |Intel |EPROM |8755A |Requires 25V pulses to program|
|
||||
|2316 |Commodore |ROM |23 |Read-only|
|
||||
|
||||
|
||||
# PromDevice Modules
|
||||
|
||||
This PromDevice28C module is enabled by default to program 28C256 EEPROMS. To use a
|
||||
different module, make the following edits:
|
||||
|
||||
* In configure.h, comment out the #define PROM_IS_28C line
|
||||
* Uncomment one of the other PROM_IS_ lines to compile a different module
|
||||
* In TommyPROM.ino, uncomment or add a new PromDevice declaration for the specific chip
|
||||
|
||||
## PromDevice28C
|
||||
|
||||
The 28C series EEPROMs, specifically the 28C256, are the original chips that TommyPROM
|
||||
supported. As a result, these have the best support, with all of the interactive features
|
||||
of the command line. In addition the basic read and write operations, there are also
|
||||
commands to enable and disable the [Software Data protection (SDP)](28C256-notes)
|
||||
features of 28C chips. There is also support for the fast block write mode of these
|
||||
chips, allowing a 32KB chip to be programmed in just a few seconds.
|
||||
|
||||
## PromDeviceSST39SF
|
||||
|
||||
SST39SF0x0 NOR Flash chips are 5V-only chips that use a command register for program and
|
||||
erase operations. They use fixed 4K-byte sectors that must be manually erased before a
|
||||
new program operation, but the code manages this transparently. Whenever a write is
|
||||
started to a new segment, the driver first initiates an erase of that sector. A second
|
||||
write to the same sector will not cause an erase, so it is possible to write to a segment
|
||||
multiple times with no additional steps as long as the writes are to different parts of
|
||||
the sector. For example, 256 bytes could be written to the start of a sector from one
|
||||
file and then 512 bytes could be written to the end of the sector from another file.
|
||||
|
||||
Writing data that spans multiple sectors also works with no additional steps. When a
|
||||
sector boundary is crossed, the new sector is erased and set as the current sector.
|
||||
|
||||
The SST39SF driver supports a manual erase from the command line using the E command. This
|
||||
is only needed if data will be rewritten to the same location after a previous write to
|
||||
that sector.
|
||||
|
||||
All programming and erase operations for the 39SF chips require only a single 5V power
|
||||
supply.
|
||||
|
||||
## PromDeviceSST28SF
|
||||
|
||||
The SST28SF0x0 SuperFlash chips are an earlier version of the 39SF chips, using 256-byte
|
||||
sectors. The 28SF and 39SF chips are pin compatible, but use different command sets for
|
||||
programming and erasing. For read-only applications, they should be identical, although
|
||||
the 28SF are slower.
|
||||
|
||||
All programming and erase operations for the 28SF chips require only a single 5V power supply.
|
||||
|
||||
## PromDevice27
|
||||
|
||||
The 27C supports Flash, EEPROM, and EPROM chips that use a variety of programming algorithms.
|
||||
|
||||
Most, if not all, 27C series chips are not 5V-only and require a higher voltage to program
|
||||
or erase. This driver supports chips that need the voltage constantly applied while
|
||||
programming or erasing. The programming voltages are provided by an external power supply
|
||||
and manually switched before starting a write or erase operation. See the [TommyPROM32
|
||||
hardware](pcb#TommyPROM32) for a diode circuit that allows the programming voltage to be
|
||||
switched between Vcc and a higher voltage.
|
||||
|
||||
Check the [Chip Details](#27c-and-27e-series-eproms-and-flash) for the high voltage
|
||||
connections for a particular chip or consult your data sheet. Also note the warning in
|
||||
that section about issuing other commands while the programming voltage is asserted.
|
||||
|
||||
Chips that use high voltage pulses for each byte are not supported. For those chips, some
|
||||
elements of the [8755A hardware](8755A-hardware) may be leveraged to build a version of
|
||||
the programmer that is able to provide high voltage pulses.
|
||||
|
||||
## PromDevice23
|
||||
|
||||
The PromDevice23 driver is used to read Commodore 2316, 2332, and 2364 mask-programmed ROMs.
|
||||
These were used in early computers like the Commodore PET, Atari, Apple II, and others.
|
||||
|
||||
Most ROM chips can be read using the standard 28C driver. The 23 series ROMs are unique because
|
||||
the chip select polarity is configurable when the chip is initally programmed. This means that, for example,
|
||||
some chips will use CS1 as an active HIGH signal and other will use it active LOW. This existing
|
||||
Unlock command was repurposed in this driver to scan the chip to determine the polarity of the
|
||||
Chip Select pin(s).
|
||||
|
||||
For the 2316 make the following connections:
|
||||
|
||||
* CS3 to Arduino A0 (WE)
|
||||
* CS2 to Arduino A1 (CE)
|
||||
* CS1 to Arduino A2 (OE)
|
||||
|
||||
The 2332 does not have a CS3, and the 2364 does not have CS3 or CS2, so those Arduino pins are not used.
|
||||
|
||||
__Before reading the chip, run the Unlock command to scan the Chip Selects__. This will try all combinations
|
||||
of CS values to read data from the chip. After the Unlock command runs successfully, the Dump or Read commands
|
||||
can then be used to read from the chip.
|
||||
|
||||
## PromDevice8755
|
||||
|
||||
TommyPROM has a driver for Intel 8755 EPROMs. This driver replaces the 28C driver at
|
||||
compile time. See configure.h to enable a different driver. This driver will also read
|
||||
Intel 8355 OTP EPROMs. Also note that the TommyPROM hardware for the 8755 is drastically
|
||||
different from the other versions.
|
||||
|
||||
The Intel 8755 is a peripheral chip designed for 8085 systems. It is a 40 pin device that
|
||||
contains a 2KB EPROM plus two general-purpose I/O ports. The 8355 is a one-time
|
||||
programmable version of the 8755. The 8755 requires a 25V programming pulse for each byte
|
||||
to be written.
|
||||
|
||||
A new hardware build was created to support the 8755 chips. Because the 8755 has a
|
||||
multiplexed data and address bus, the usual shift registers are not used for addressing.
|
||||
The chip only needs 8 connects that are shared for address and data, plus three dedicated
|
||||
address lines. The Arduino has enough pins to drive all of these directly, without the
|
||||
need for shift registers to create address lines.
|
||||
|
||||
The 8755 build of TommyPROM also has a circuit to control the 25V programming pulses.
|
||||
|
||||
|
||||
# Chip Details
|
||||
|
||||
## 28C Series 28C256
|
||||
|
||||
Tested with chips from several manufacturers including Atmel AT28C256, Xicor X28C256, and
|
||||
CSI CAT28C256. Also works with the smaller 28C64 and 28C16 chips, although some
|
||||
parameters may need to be adjusted. Some smaller chips do not support SDP, so the _Lock_
|
||||
and _Unlock_ commands have no effect. Check the datasheet to see if block writes are
|
||||
supported. Some 28C16s use a 16 byte block instead of the 64 bytes used on the 28C256.
|
||||
It is always safe to just set the block size parameter to zero when declaring the chip to
|
||||
disable block writes altogether.
|
||||
|
||||
The 28C chips do not need to be explicitly erased. Each memory cell is automatically
|
||||
erased during a write operation, so they are more similar to a slow RAM than to other
|
||||
PROMs.
|
||||
|
||||
## SST39SF040
|
||||
|
||||
The SST39SF driver supports all chips in this family, so the 040, 020, and 010 chips can
|
||||
be all be used with no code change. These chips use sectors that must be erased before
|
||||
writing new data. The code keeps track of the current sector and will automatically do
|
||||
an erase operation whenever a write starts to a new sector. The _Erase_ command is
|
||||
supported, but is not needed unless overwriting new data to a single sector.
|
||||
|
||||
## SST28SF040
|
||||
|
||||
This is an earlier version of the SST39SF series chips. They are pin compatible with the
|
||||
39SF series, but use a different command set for programming. Unlike the 39SF, these
|
||||
flash chips support software data protection. The _Lock_ and _Unlock_ commands can be
|
||||
used to enable and disable SDP from the command line.
|
||||
|
||||
## 27C and 27E Series EPROMs and Flash
|
||||
|
||||
*WARNING*: Some chips in this series use the _CE_ and _OE_ pins in non-standard ways when
|
||||
the high voltage is asserted on _VPP_. Because the programming voltage is switched
|
||||
manually, care needs to be taken when using chips that pulse the _CE_ pin for
|
||||
programming. The programming code itself knows how to manage this, but other commands,
|
||||
like the DUMP command, will also toggle _CE_. If the programming voltage is asserted,
|
||||
these other commands can inadvertently cause a write operation. Be sure to assert the
|
||||
programming voltage, issue the needed write commands, and then remove the high voltage
|
||||
before issuing any additional commands that may corrupt the data.
|
||||
|
||||
### M27C256
|
||||
|
||||
The M27C256 is a 32Kx8 byte UV-erasable EPROM. It needs two special voltages for
|
||||
programming. _VPP_ must be raised to 12.75V and _VCC_ must be raised to 6.25V. Be sure
|
||||
to isolate the chip's _VCC_ pin from other Vcc connections so that the 6.25V is not fed
|
||||
back into the Adbuino or into the shift registers.
|
||||
|
||||
This chip does not have a dedicated _PGM_ or _WE_ pin, so programming and verify are
|
||||
controlled by the _E_ (Chip Enable) and _G_ (Output Enable) pins. The _CE_ pin is pulsed
|
||||
to program bytes into a location. To verify, the _OE_ pin is asserted, but the _CE_ pin
|
||||
is not.
|
||||
|
||||
Note the warning in the section above about data corruption from issuing other commands
|
||||
while the programming voltages are present.
|
||||
|
||||
This chip can only be erased with UV light, so the erase command is not supported.
|
||||
|
||||
### M27256
|
||||
|
||||
This is an older version of the M27C256. Pin connections are the same, but for programming Vcc=6V and Vpp=12.5V. The programming pulse width is 1ms instead of 100us, and the programming algorithm uses an overwrite pulse equal to 3ms * the number of program pulses written.
|
||||
|
||||
### W27C257, W27E257 and W27C512
|
||||
|
||||
The Winbond W27C257 and W27E257 appear to be identical 32Kx8 EEPROMs. The 27C version
|
||||
has been tested. The Winbond W27C512 is a 64Kx8 EEPROM with no dedicated _VPP_ pin.
|
||||
|
||||
The 257 EEPROMs have a _VPP_ pin that needs a constant 12V during programming. Unlike the
|
||||
newer 28C EEPROMs, these chips do not automatically erase before writing to a location.
|
||||
Instead, the entire chip is erased by applying 14V to _VPP_ and _A9_ and then pulsing
|
||||
_CE_. To erase the chip, assert the voltages on _VPP_ and _A9_ and then issue the
|
||||
_Erase_ command from the terminal.
|
||||
|
||||
Unlike the 257 chips, the W27C512 does not have a dedicated pin for the programming
|
||||
voltage and instead uses the 12V on _OE_ pin to place the chip in programming mode. The verify
|
||||
operation requires that the _OE_ pin be switched to _LOW_ and there is no hardware support
|
||||
for this, so the current code supports the 512 chip by doing a single write cycle with no
|
||||
verify.
|
||||
|
||||
Because the chips use a constant high voltage for programming instead of a pulse, an
|
||||
external power supply and two diodes can be used to supply either 5V or 12V to the
|
||||
pins for programming and erasing.
|
||||
|
||||
Note that the W27x257 chip are almost a drop-in replacement for the 28C256. The _WE_,
|
||||
_VPP_, and _A14_ pins are the only differences. For reading, the _VPP_ pin should be
|
||||
connected to 5V.
|
||||
|
||||
## 29C Series
|
||||
|
||||
The 29C0x0 chips are 5V sectored flash chips. They are similar to the 28C EEPROMs,
|
||||
except they must erase an entire sector before programming new data. The start of a block
|
||||
write operation causes the target sector to be automatically erased before the block is
|
||||
written. If the entire sector is not written in one operation, there is no way to write
|
||||
additional data to the sector because a new block write will erase the sector again.
|
||||
|
||||
The write algorithm for the 29C chips is similar to 28C, so it is possible to use that
|
||||
code to write these chips as well with some restrictions.
|
||||
|
||||
All 29C010 and 29C020 chips that have been encountered use a sector size of either 64
|
||||
bytes or 128 bytes. A single XModem packet holds 128 bytes of data, so these chips will
|
||||
program without issue.
|
||||
|
||||
The 28C040 chips from some manufacturers use a 256 byte sector. *This will not currently
|
||||
work with TommyPROM*, because each of the 128 byte XModem packets received will do its own
|
||||
block write. The first write will erase 256 bytes and then write data into the first half
|
||||
of the sector. The second write will then erase the data just written and then write 128
|
||||
bytes into the second half of the sector. To fix this, the code would need to be modified
|
||||
to keep 256 bytes of data from two packets before initiating a block write.
|
||||
|
||||
## 28F Series
|
||||
|
||||
The 28F series flash do not have sectors. The entire chip must be erased before writing
|
||||
new data. Data is written a byte at a time using a command register to control the
|
||||
programming. **These chips require a 12V programming voltage that must be present during
|
||||
the programming or erase operations**. TommyPROM does not currently support 28F chips,
|
||||
but it would not be difficult to write a driver. The default 28C driver will read 28F
|
||||
chips.
|
||||
|
||||
## 29F Series
|
||||
|
||||
The 29F series flash have sectors that must be explicitly erased before writing new
|
||||
data. Data is written a byte at a time using a command register to control the
|
||||
programming. TommyPROM does not currently support 29F chips, but it would not be
|
||||
difficult to write a driver. The default 28C driver will read 29F chips.
|
||||
|
||||
## SST27SF020
|
||||
|
||||
The Silicon Storage SST27SF0x0 are programmed similarly to the 27C257 in that a constant
|
||||
voltage is applied for program and erase operations. Unlike the 27C257, these have a
|
||||
dedicated WE pin that controls programming and erasing. Another difference is that they
|
||||
do not have a verify operation to read back the programmed data.
|
||||
|
||||
These Flash chips have a _VPP_ pin that needs a constant 12V during programming. Unlike
|
||||
the newer 28C EEPROMs, these chips do not automatically erase before writing to a
|
||||
location. Instead, the entire chip is erased by applying 12V to _VPP_ and _A9_ and then
|
||||
pulsing _WE_.
|
||||
|
||||
|
||||
# Chips to be Tested
|
||||
|
||||
|Model |Manufacturer |Type |Module |Notes|
|
||||
|:--- |:--- |:--- |:--- |:--- |
|
||||
|TMS2564 |TI |EPROM | |VPP=25V, 50ms low pulse on PGM|
|
||||
|AM2716 |AMD |EPROM | ||
|
||||
|B2732 |Intel |EPROM | |VPP/OE=25V, 50ms low pulse CE|
|
||||
|MBM2732A |Fujitsu |EPROM | ||
|
||||
|2764 |SEEQ |EPROM | |VPP/OE=21V, 50ms low pulse CE|
|
||||
|AM2764-2 |AMD |EPROM | |VPP=21V, 50ms low pulse PGM|
|
||||
|M5L2764K |Mitsubishi |EPROM | |VCC=6V, VPP=21V, 1ms low pulse PGM 4x overwrite|
|
||||
|D2764 |Intel |EPROM | |VCC=6V, VPP=12.5V, 1ms low pulse PGM 3x overwrite|
|
||||
|D27128 |Intel |EPROM | |VCC=6V, VPP=12.5V, 1ms low pulse PGM 3x overwrite|
|
||||
|W27C512 |Winbond |EEPROM |27 |Continual 12V or 14V for program/erase,VPP on OE|
|
||||
|M27C2001 |ST Micro |EPROM | |VCC=6.5V, VPP=12.75V to pgm|
|
||||
|M27C4001 |ST Micro |EPROM | |VCC=6.5V, VPP=12.75V to pgm|
|
||||
|AT28C16 |Atmel |EEPROM | ||
|
||||
|AM28F512 |AMD |EEPROM | ||
|
||||
|W29C040 |Winbond |Flash | ||
|
||||
|AM29F040 |AMD |EEPROM | ||
|
||||
|M29F040 |ST Micro | | ||
|
||||
|AMS29AF010|AMS | | ||
|
||||
|MCM68766 |Motorola |EPROM | |PGM pulse is 25V|
|
||||
|
||||
# Chip Manufacturers
|
||||
|
||||
|Name |Code |Notes|
|
||||
|:--- |:---|:---|
|
||||
|AMS - Advanced Memory Systems|AMS |Merged with Intersil|
|
||||
|AMD - Advanced Micro Devices |AM ||
|
||||
|Atmel |AT |Aquired by Microchip|
|
||||
|CSI - Catalyst Semiconductor |CAT |Aquired by ON Semiconductor|
|
||||
|Fujitsu |MBM ||
|
||||
|Intel |i ||
|
||||
|Mitsubishi |M5L ||
|
||||
|Motorola |MCM ||
|
||||
|Seeq Technology | |Aquired by LSI Logic|
|
||||
|SST - Silicon Storage Tech |ST |Aquired by Microchip|
|
||||
|ST Microelectronics |M ||
|
||||
|Texas Instruments |TMS ||
|
||||
|Winbond |W ||
|
||||
|Xicor |X ||
|
@ -1,26 +0,0 @@
|
||||
---
|
||||
title: "8755A Hardware Design"
|
||||
permalink: /docs/8755A-hardware
|
||||
exerpt: "TommyPROM Arduino programmer for the Intel 8755A"
|
||||
---
|
||||
|
||||
A special version of the TommyPROM hardware was developed to support the Intel 8755A
|
||||
EPROM with IO chip. This is a 2Kx8 UV EPROM with additional I/O ports.
|
||||
|
||||
The Intel 8355 is a one-time programmable version of the 8755A. This design can be used
|
||||
to read the 8355.
|
||||
|
||||
The Intel 8755A uses a multiplexed data and address bus, plus 3 additional address lines.
|
||||
Most Arduino hardware has enough pins to support this directly, so no shift register
|
||||
hardware is needed for addressing. An Arduino pin is also used to drive the ALE latch pin.
|
||||
|
||||
The 8755A requires the Vdd pin to be be switched between 5V and 25V during the programming
|
||||
of each byte. A simple transistor circuit is used for this. No voltage regulator circuit
|
||||
is present here for the programming voltage. Because this is designed as a quickly
|
||||
assembled hardware design, a triple output bench supply was used to provide the 25.5V,
|
||||
5.5V and 5V outputs.
|
||||
|
||||
[![TommyPROM Nano Schematic](images/TommyPROM-8755A-sch.png)](images/TommyPROM-8755A-sch.png)
|
||||
|
||||
Eagle-format schematics can be downloaded from the
|
||||
[hardware project page](https://github.com/TomNisbet/TommyPROM/tree/master/hardware).
|
67
docs/_docs/prom-100-prom-specific-code.md
Normal file
67
docs/_docs/prom-100-prom-specific-code.md
Normal file
@ -0,0 +1,67 @@
|
||||
---
|
||||
title: Chips Supported
|
||||
permalink: /docs/prom-specific-code
|
||||
exerpt: "PROM types supported by TommyPROM - EPROM, EEPROM, Flash"
|
||||
---
|
||||
|
||||
TommyPROM can be used to read and write many different types of EEPROM, Flash, and EPROM
|
||||
chips. Due to differences in the technologies of these chips, some features of TommyPROM
|
||||
may work differently or may not be applicable at all. The standard code can read most
|
||||
types of PROM, even if there is no specific software support for them.
|
||||
|
||||
Broadly speaking, there are two different ways to write to chips. The first method is
|
||||
similar to a static RAM - the WE signal is asserted and data is written to a location
|
||||
using the data and address lines. This is the case for the 28C64. Some of these chips,
|
||||
like the 27C257, need a programming voltage to be present on the Vpp or PGM pin. There
|
||||
are usually timing requirements for the program pulse and there may be repeated write
|
||||
cycles needed with a verification cycle to complete the write.
|
||||
|
||||
The second method is the use of a program command register. Bytes are written to a single
|
||||
location by sending a command string, which is a series of chip writes. These chips
|
||||
usually have additional commands to erase sectors or to lock and unlock the chip. The
|
||||
SST39SF010 is an example of a chip that uses a command register.
|
||||
|
||||
Some chips use a combination of both methods. The 28C256 uses a command register to
|
||||
enable and disable Software Data Protection, but uses a direct write for programming.
|
||||
|
||||
TommyPROM has a variety of PromDevice Modules that can be compiled in to support these
|
||||
different chip technologies.
|
||||
|
||||
|
||||
## Suported Chips
|
||||
|
||||
|Module |Manufacturer |Type |Notes|
|
||||
|:--- |:--- |:--- |:--- |
|
||||
|28C |Atmel, others|EEPROM |28C256, 28C64, 28C16, 29C040 (Flash)|
|
||||
|SST |Microchip |Flash |SST39SF040 (all SST39SF0x0), SST28SF040|
|
||||
|27 |many |EPROM |variety of 27xx and 27Cxx EPROM, Flash, and EEPROMs|
|
||||
|2316 |many |ROM |read-only 2316, 2332, 2364, 23128, 23256|
|
||||
|8755A |Intel |EPROM |8755A EPROM and read-only 8355|
|
||||
|
||||
## PromDevice Modules
|
||||
|
||||
This PromDevice28C module is enabled by default to program 28C256 EEPROMS. To use a
|
||||
different module, make the following edits:
|
||||
|
||||
* In configure.h, comment out the #define PROM_IS_28C line
|
||||
* Uncomment one of the other PROM_IS_ lines to compile a different module
|
||||
* In TommyPROM.ino, uncomment or add a new PromDevice declaration for the specific chip
|
||||
|
||||
## Chip Manufacturers
|
||||
|
||||
|Name |Code |Notes|
|
||||
|:--- |:---|:---|
|
||||
|AMS - Advanced Memory Systems|AMS |Merged with Intersil|
|
||||
|AMD - Advanced Micro Devices |AM ||
|
||||
|Atmel |AT |Aquired by Microchip|
|
||||
|CSI - Catalyst Semiconductor |CAT |Aquired by ON Semiconductor|
|
||||
|Fujitsu |MBM ||
|
||||
|Intel |i ||
|
||||
|Mitsubishi |M5L ||
|
||||
|Motorola |MCM ||
|
||||
|Seeq Technology | |Aquired by LSI Logic|
|
||||
|SST - Silicon Storage Tech |ST |Aquired by Microchip|
|
||||
|ST Microelectronics |M ||
|
||||
|Texas Instruments |TMS ||
|
||||
|Winbond |W ||
|
||||
|Xicor |X ||
|
42
docs/_docs/prom-300-pd28c.md
Normal file
42
docs/_docs/prom-300-pd28c.md
Normal file
@ -0,0 +1,42 @@
|
||||
---
|
||||
title: PromDevice28C
|
||||
permalink: /docs/prom-device-28c
|
||||
exerpt: "TommyPROM support for 28C256, 28C64, 28C16 and 29C040 EEPROM"
|
||||
---
|
||||
|
||||
This PromDevice28C module is enabled by default to program 28C256 EEPROMS.
|
||||
|
||||
The 28C series EEPROMs, specifically the 28C256, are the original chips that TommyPROM supported. As a result, these have the best support, with all of the interactive features of the command line. In addition the basic read and write operations, there are also commands to enable and disable the [Software Data protection (SDP)](28C256-notes) features of 28C chips. There is also support for the fast block write mode of these chips, allowing a 32KB chip to be programmed in just a few seconds.
|
||||
|
||||
## 28C Series 28C256
|
||||
|
||||
Tested with chips from several manufacturers including Atmel AT28C256, Xicor X28C256, and CSI CAT28C256. Also works with the smaller 28C64 and 28C16 chips, although some parameters may need to be adjusted. Some smaller chips do not support SDP, so the _Lock_ and _Unlock_ commands have no effect. Check the datasheet to see if block writes are supported. Some 28C16s use a 16 byte block instead of the 64 bytes used on the 28C256. It is always safe to just set the block size parameter to zero when declaring the chip to disable block writes altogether.
|
||||
|
||||
The 28C chips do not need to be explicitly erased. Each memory cell is automatically erased during a write operation, so they are more similar to a slow RAM than to other PROMs.
|
||||
|
||||
## 29C Series
|
||||
|
||||
The 29C0x0 chips are 5V sectored flash chips. They are similar to the 28C EEPROMs, except they must erase an entire sector before programming new data. The start of a block write operation causes the target sector to be automatically erased before the block is written. If the entire sector is not written in one operation, there is no way to write additional data to the sector because a new block write will erase the sector again.
|
||||
|
||||
The write algorithm for the 29C chips is similar to 28C, so it is possible to use that code to write these chips as well with some restrictions.
|
||||
|
||||
All 29C010 and 29C020 chips that have been encountered use a sector size of either 64 bytes or 128 bytes. A single XModem packet holds 128 bytes of data, so these chips will program without issue.
|
||||
|
||||
The 28C040 chips from some manufacturers use a 256 byte sector. *This will not currently work with TommyPROM*, because each of the 128 byte XModem packets received will do its own block write. The first write will erase 256 bytes and then write data into the first half of the sector. The second write will then erase the data just written and then write 128 bytes into the second half of the sector. To fix this, the code would need to be modified to keep 256 bytes of data from two packets before initiating a block write.
|
||||
|
||||
## Verified Chips
|
||||
|
||||
|Model |Manufacturer |Type |Notes|
|
||||
|:--- |:--- |:--- |:--- |
|
||||
|AT28C256 |Atmel |EEPROM |Fully supported|
|
||||
|CAT28C256 |Catalyst |EEPROM |Fully supported|
|
||||
|X28C256 |Xicor |EEPROM |Fully supported|
|
||||
|AT28C64 |Atmel |EEPROM |Fully supported|
|
||||
|AT29C010 |Atmel |Flash |Only with 128 byte or less sector size|
|
||||
|
||||
## Chips to be Tested
|
||||
|
||||
|Model |Manufacturer |Type |Module |Notes|
|
||||
|:--- |:--- |:--- |:--- |:--- |
|
||||
|AT28C16 |Atmel |EEPROM | ||
|
||||
|W29C040 |Winbond |Flash | ||
|
41
docs/_docs/prom-400-pdsst.md
Normal file
41
docs/_docs/prom-400-pdsst.md
Normal file
@ -0,0 +1,41 @@
|
||||
---
|
||||
title: PromDeviceSST
|
||||
permalink: /docs/prom-device-sst
|
||||
exerpt: "TommyPROM support for SST39SF010, SST39SF020, and SST39040 Flash"
|
||||
---
|
||||
|
||||
## PromDeviceSST39SF
|
||||
|
||||
SST39SF0x0 NOR Flash chips are 5V-only chips that use a command register for program and erase operations. They use fixed 4K-byte sectors that must be manually erased before a new program operation, but the code manages this transparently. Whenever a write is started to a new segment, the driver first initiates an erase of that sector. A second write to the same sector will not cause an erase, so it is possible to write to a segment multiple times with no additional steps as long as the writes are to different parts of the sector. For example, 256 bytes could be written to the start of a sector from one file and then 512 bytes could be written to the end of the sector from another file.
|
||||
|
||||
Writing data that spans multiple sectors also works with no additional steps. When a sector boundary is crossed, the new sector is erased and set as the current sector.
|
||||
|
||||
The SST39SF driver supports a manual erase from the command line using the E command. This is only needed if data will be rewritten to the same location after a previous write to that sector.
|
||||
|
||||
All programming and erase operations for the 39SF chips require only a single 5V power supply.
|
||||
|
||||
## PromDeviceSST28SF
|
||||
|
||||
The SST28SF0x0 SuperFlash chips are an earlier version of the 39SF chips, using 256-byte sectors. The 28SF and 39SF chips are pin compatible, but use different command sets for programming and erasing. For read-only applications, they should be identical, although the 28SF are slower.
|
||||
|
||||
All programming and erase operations for the 28SF chips require only a single 5V power supply.
|
||||
|
||||
### SST39SF040
|
||||
|
||||
The SST39SF driver supports all chips in this family, so the 040, 020, and 010 chips can be all be used with no code change. These chips use sectors that must be erased before writing new data. The code keeps track of the current sector and will automatically do an erase operation whenever a write starts to a new sector. The _Erase_ command is supported, but is not needed unless overwriting new data to a single sector.
|
||||
|
||||
### SST28SF040
|
||||
|
||||
This is an earlier version of the SST39SF series chips. They are pin compatible with the 39SF series, but use a different command set for programming. Unlike the 39SF, these flash chips support software data protection. The _Lock_ and _Unlock_ commands can be used to enable and disable SDP from the command line.
|
||||
|
||||
## Verified Chips
|
||||
|
||||
|Model |Manufacturer |Type |Module |Notes|
|
||||
|:--- |:--- |:--- |:--- |:--- |
|
||||
|SST39SF040|Microchip |Flash |SST39SF|All SST39SF0x0 supported|
|
||||
|SST28SF040|SST |Flash |SST28SF|All SST28SF0x0 supported|
|
||||
|
||||
## Chips to be Tested
|
||||
|
||||
|Model |Manufacturer |Type |Module |Notes|
|
||||
|:--- |:--- |:--- |:--- |:--- |
|
101
docs/_docs/prom-500-pd27.md
Normal file
101
docs/_docs/prom-500-pd27.md
Normal file
@ -0,0 +1,101 @@
|
||||
---
|
||||
title: PromDevice27
|
||||
permalink: /docs/prom-device-27
|
||||
exerpt: "TommyPROM support for 27 series EPROM - 2716, 2732, 2764, 27C128, etc"
|
||||
---
|
||||
|
||||
The PromDevice27 driver supports Flash, EEPROM, and EPROM chips that use a variety of programming algorithms.
|
||||
|
||||
Most, if not all, 27C series chips are not 5V-only and require a higher voltage to program or erase. This driver supports chips that need the voltage constantly applied while programming or erasing. The programming voltages are provided by an external power supply and manually switched before starting a write or erase operation. See the [TommyPROM32 hardware](pcb#TommyPROM32) for a diode circuit that allows the programming voltage to be switched between Vcc and a higher voltage.
|
||||
|
||||
Check the [Chip Details](#27c-and-27e-series-eproms-and-flash) for the high voltage connections for a particular chip or consult your data sheet. Also note the warning in that section about issuing other commands while the programming voltage is asserted.
|
||||
|
||||
Chips that use high voltage pulses for each byte are not supported. For those chips, some elements of the [8755A hardware](prom-device-8755) may be leveraged to build a version of the programmer that is able to provide high voltage pulses.
|
||||
|
||||
## 27C and 27E Series EPROMs and Flash
|
||||
|
||||
*WARNING*: Some chips in this series use the _CE_ and _OE_ pins in non-standard ways when the high voltage is asserted on _VPP_. Because the programming voltage is switched manually, care needs to be taken when using chips that pulse the _CE_ pin for programming. The programming code itself knows how to manage this, but other commands, like the DUMP command, will also toggle _CE_. If the programming voltage is asserted, these other commands can inadvertently cause a write operation. Be sure to assert the programming voltage, issue the needed write commands, and then remove the high voltage before issuing any additional commands that may corrupt the data.
|
||||
|
||||
### M27C256
|
||||
|
||||
The M27C256 is a 32Kx8 byte UV-erasable EPROM. It needs two special voltages for programming. _VPP_ must be raised to 12.75V and _VCC_ must be raised to 6.25V. Be sure to isolate the chip's _VCC_ pin from other Vcc connections so that the 6.25V is not fedback into the Adbuino or into the shift registers.
|
||||
|
||||
This chip does not have a dedicated _PGM_ or _WE_ pin, so programming and verify are controlled by the _E_ (Chip Enable) and _G_ (Output Enable) pins. The _CE_ pin is pulsed to program bytes into a location. To verify, the _OE_ pin is asserted, but the _CE_ pin is not.
|
||||
|
||||
Note the warning in the section above about data corruption from issuing other commands while the programming voltages are present.
|
||||
|
||||
This chip can only be erased with UV light, so the erase command is not supported.
|
||||
|
||||
### M27256
|
||||
|
||||
This is an older version of the M27C256. Pin connections are the same, but for programming Vcc=6V and Vpp=12.5V. The programming pulse width is 1ms instead of 100us, and the programming algorithm uses an overwrite pulse equal to 3ms * the number of program pulses written.
|
||||
|
||||
### W27C257, W27E257 and W27C512
|
||||
|
||||
The Winbond W27C257 and W27E257 appear to be identical 32Kx8 EEPROMs. The 27C version has been tested. The Winbond W27C512 is a 64Kx8 EEPROM with no dedicated _VPP_ pin.
|
||||
|
||||
The 257 EEPROMs have a _VPP_ pin that needs a constant 12V during programming. Unlike the newer 28C EEPROMs, these chips do not automatically erase before writing to a location. Instead, the entire chip is erased by applying 14V to _VPP_ and _A9_ and then pulsing _CE_. To erase the chip, assert the voltages on _VPP_ and _A9_ and then issue the _Erase_ command from the terminal.
|
||||
|
||||
Unlike the 257 chips, the W27C512 does not have a dedicated pin for the programming voltage and instead uses the 12V on _OE_ pin to place the chip in programming mode. The verify operation requires that the _OE_ pin be switched to _LOW_ and there is no hardware support for this, so the current code supports the 512 chip by doing a single write cycle with no verify.
|
||||
|
||||
Because the chips use a constant high voltage for programming instead of a pulse, an external power supply and two diodes can be used to supply either 5V or 12V to the pins for programming and erasing.
|
||||
|
||||
Note that the W27x257 chip are almost a drop-in replacement for the 28C256. The _WE_, _VPP_, and _A14_ pins are the only differences. For reading, the _VPP_ pin should be connected to 5V.
|
||||
|
||||
## SST27SF020
|
||||
|
||||
The Silicon Storage SST27SF0x0 are programmed similarly to the 27C257 in that a constant
|
||||
voltage is applied for program and erase operations. Unlike the 27C257, these have a
|
||||
dedicated WE pin that controls programming and erasing. Another difference is that they
|
||||
do not have a verify operation to read back the programmed data.
|
||||
|
||||
These Flash chips have a _VPP_ pin that needs a constant 12V during programming. Unlike
|
||||
the newer 28C EEPROMs, these chips do not automatically erase before writing to a
|
||||
location. Instead, the entire chip is erased by applying 12V to _VPP_ and _A9_ and then
|
||||
pulsing _WE_.
|
||||
|
||||
## Verified Chips
|
||||
|
||||
|Model |Manufacturer |Type |Module |Notes|
|
||||
|:--- |:--- |:--- |:--- |:--- |
|
||||
|M27256 |ST Micro |EPROM |27 |VCC=6V, VPP=12.5V to pgm|
|
||||
|M27C256 |ST Micro |EPROM |27 |VCC=6.5V, VPP=12.75V to pgm|
|
||||
|W27C257 |Winbond |EEPROM |27 |Continuous 12V or 14V for program/erase|
|
||||
|SST27SF020|SST |Flash |27 |12V continuous for pgm/erase|
|
||||
|
||||
## Chips to be Tested
|
||||
|
||||
|Model |Manufacturer |Type |Module |Notes|
|
||||
|:--- |:--- |:--- |:--- |:--- |
|
||||
|TMS2564 |TI |EPROM | |VPP=25V, 50ms low pulse on PGM|
|
||||
|AM2716 |AMD |EPROM | ||
|
||||
|B2732 |Intel |EPROM | |VPP/OE=25V, 50ms low pulse CE|
|
||||
|MBM2732A |Fujitsu |EPROM | ||
|
||||
|2764 |SEEQ |EPROM | |VPP/OE=21V, 50ms low pulse CE|
|
||||
|AM2764-2 |AMD |EPROM | |VPP=21V, 50ms low pulse PGM|
|
||||
|M5L2764K |Mitsubishi |EPROM | |VCC=6V, VPP=21V, 1ms low pulse PGM 4x overwrite|
|
||||
|D2764 |Intel |EPROM | |VCC=6V, VPP=12.5V, 1ms low pulse PGM 3x overwrite|
|
||||
|D27128 |Intel |EPROM | |VCC=6V, VPP=12.5V, 1ms low pulse PGM 3x overwrite|
|
||||
|W27C512 |Winbond |EEPROM |27 |Continual 12V or 14V for program/erase,VPP on OE|
|
||||
|M27C2001 |ST Micro |EPROM | |VCC=6.5V, VPP=12.75V to pgm|
|
||||
|M27C4001 |ST Micro |EPROM | |VCC=6.5V, VPP=12.75V to pgm|
|
||||
|MCM68766 |Motorola |EPROM | |PGM pulse is 25V|
|
||||
|
||||
## Chip Manufacturers
|
||||
|
||||
|Name |Code |Notes|
|
||||
|:--- |:---|:---|
|
||||
|AMS - Advanced Memory Systems|AMS |Merged with Intersil|
|
||||
|AMD - Advanced Micro Devices |AM ||
|
||||
|Atmel |AT |Aquired by Microchip|
|
||||
|CSI - Catalyst Semiconductor |CAT |Aquired by ON Semiconductor|
|
||||
|Fujitsu |MBM ||
|
||||
|Intel |i ||
|
||||
|Mitsubishi |M5L ||
|
||||
|Motorola |MCM ||
|
||||
|Seeq Technology | |Aquired by LSI Logic|
|
||||
|SST - Silicon Storage Tech |ST |Aquired by Microchip|
|
||||
|ST Microelectronics |M ||
|
||||
|Texas Instruments |TMS ||
|
||||
|Winbond |W ||
|
||||
|Xicor |X ||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: 2316, 2332, and 2364 ROMs
|
||||
permalink: /docs/2316-roms
|
||||
permalink: /docs/prom-device-23
|
||||
exerpt: "2316, 2332, and 2364 Read Only Memory"
|
||||
---
|
||||
|
17
docs/_docs/prom-700-pd8755a.md
Normal file
17
docs/_docs/prom-700-pd8755a.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "8755A Hardware Design"
|
||||
permalink: /docs/prom-device-8755
|
||||
exerpt: "TommyPROM Arduino programmer for the Intel 8755A"
|
||||
---
|
||||
|
||||
A special version of the TommyPROM hardware was developed to support the Intel 8755A EPROM with IO chip. This is a 2Kx8 UV EPROM with additional I/O ports.
|
||||
|
||||
The Intel 8355 is a mask programmable version of the 8755A. This design can be used to read the 8355.
|
||||
|
||||
The Intel 8755A uses a multiplexed data and address bus, plus 3 additional address lines. Most Arduino hardware has enough pins to support this directly, so no shift register hardware is needed for addressing. An Arduino pin is also used to drive the ALE latch pin.
|
||||
|
||||
The 8755A requires the Vdd pin to be be switched between 5V and 25V during the programming of each byte. A simple transistor circuit is used for this. No voltage regulator circuit is present here for the programming voltage. Because this is designed as a quickly assembled hardware design, a triple output bench supply was used to provide the 25.5V, 5.5V and 5V outputs.
|
||||
|
||||
[![TommyPROM Nano Schematic](images/TommyPROM-8755A-sch.png)](images/TommyPROM-8755A-sch.png)
|
||||
|
||||
Eagle-format schematics can be downloaded from the [hardware project page](https://github.com/TomNisbet/TommyPROM/tree/master/hardware).
|
28
docs/_docs/prom-900-other.md
Normal file
28
docs/_docs/prom-900-other.md
Normal file
@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Chips Supported
|
||||
permalink: /docs/prom-specific-code
|
||||
exerpt: "PROM types supported by TommyPROM - EPROM, EEPROM, Flash"
|
||||
---
|
||||
|
||||
Several other chip families have been identified and aquired, but are not yet supported.
|
||||
|
||||
## 28F Series
|
||||
|
||||
The 28F series flash do not have sectors. The entire chip must be erased before writing new data. All location must be manually written to logic zero before the erase operation in initiated. Data is written a byte at a time using a command register to control the programming. **These chips require a 12V programming voltage that must be present during the programming or erase operations**.
|
||||
|
||||
TommyPROM does not currently support 28F chips, but it would not be difficult to write a driver. The default 28C driver will read 28F chips.
|
||||
|
||||
## 29F Series
|
||||
|
||||
The 29F series flash have sectors that must be explicitly erased before writing new data. Data is written a byte at a time using a command register to control the programming.
|
||||
|
||||
TommyPROM does not currently support 29F chips, but it would not be difficult to write a driver. The default 28C driver will read 29F chips.
|
||||
|
||||
## Chips to be Tested
|
||||
|
||||
|Model |Manufacturer |Type |Module |Notes|
|
||||
|:--- |:--- |:--- |:--- |:--- |
|
||||
|AM28F512 |AMD |EEPROM | ||
|
||||
|AM29F040 |AMD |EEPROM | ||
|
||||
|M29F040 |ST Micro | | ||
|
||||
|AMS29AF010|AMS | | ||
|
Loading…
Reference in New Issue
Block a user