************************************************************************
************************************************************************
**                                                                    **
**       Application notes for Spansion FLASH memory devices          **
**                                                                    **
** To find the application notes for your specific device you must    **
** search for the device using the 'core' device name.                **
** As an example using the S29GL128M-RA-R1 56 pin TSOP you would      **
** search on '29GL128M'                                               **
**                                                                    **
************************************************************************
************************************************************************

************************************************************************
************************************************************************
SPA 29GL064M-T-R0 (This device operates with a 8 bit data bus)
------------------
Due to ram limitations on the Unisystem programmers, this 64Mbit device
had to be split into 2 equal 32Mbit Quadrants.

Note - Since this device operates with a 8 bit data bus, all the below
numbers are in byte values


                                         Device mapping:
                                 ----------------------  0Mbit
Unisystem RAM mapping:          | Quadrant L           |
                                | 0-3FFFFF hex         |
 --------------- 0Mbit          |                      |
| 0 hex         |               |                      |
|               |---------->    |                      |
|               |               |----------------------| 32Mbit
|               |               |                      |
|               |---------->    | Quadrant U           |
| 400000 hex    |               | 400000->7FFFFF hex   |
 --------------- 32Mbit         |                      |
                                 ----------------------  64Mbit

  Quadrant L   =  Device addresses 0 -> 3FFFFF hex

  Quadrant U   =  Device addresses 400000 -> 7FFFFF hex

  SecSi Secure =  Device addresses 0 ->FF and 400000 ->4000FF hex
                  accessible as the last sector within the upper quadrant
--------------------------------------------------------------------------
Example of downloading a data file:

An example of downloading a 8 Megabytes (0 - 7FFFFF hex) file. You will
need to download the files in two halves. The first half is for Quadrant L.
The second half is for Quadrant U.

** NOTE:
   Quadrant L = Device addresses 000000 -> 3FFFFF hex
   Quadrant L settings:

I/O Translation Format     99
I/O addr offset            0
Memory begin address       0
User data size             400000

Steps:
1) Download the first half (0-3FFFFF hex) of the data file into Quadrant L.
2) Program the device.

** NOTE:
   Quadrant U = Device addresses 400000 -> 7FFFFF hex
   Quadrant U settings:

I/O Translation Format     99
I/O addr offset            400000
Memory begin address       0
User data size             400000

Steps:
1)Download the second half (400000-7FFFFF)of the data file into Quadrant U.
2)Program the device.


--------------------------------------------------------------------------
Example of editing device data in the memory editor:
If data editing needs to done in the user RAM memory editor the appropriate
Quadrant Menu Selection (see table above) must first be determined. As an
example if editing data at the device address starting at location 4F8000
hex, that device address location would fall into the Upper Quadrant.
To find where location 4F8000 hex corresponds to location in the Quadrant
U subtract the beginning device address range from the location you want
to edit.
In this case the location of device address location 4F8000 hex is in the
Quadrant U, memory address is F8000 hex 
(F8000 hex = 4F8000 hex - 400000 hex)

--------------------------------------------------------------------------
IMPORTANT NOTE:
Sector ERASE operations may be performed within the selected quadrant and
the desired sectors. However the "Protect/Unprotect all sectors" prior to
the erase operation is performed ONLY within the lower quadrant algorithm.
Due to this, it is necessary to erase/program the lower quadrant first
prior to erasing the upper quadrant. This is ONLY needed when any sector
within the upper quadrant is previously protected.

--------------------------------------------------------------------------
The Secure Sector(SecSi) for this device consists of 256 bytes of One Time
Programmable (OTP) memory. This OTP sector is physically located at the end
of device at locations 0x400000 -.0x4000FF. In UniFam programmers,
this sector is mapped as the last sector within the upper/last quadrant.
This OTP sector will have its program flag set to N (No by default) in
the Sector Configuration Screen.  This Program flag controls the following
device operations: Blank Check, Illegal Bit Check, Program and Verify.
In order to perform these operations on this sector, this flag must be set
to Y, by using More->Device Operation->Device configuration screen.

******************************************************************************

29JL064H
--------
29GL064
-------
29GL064M
--------

Due to ram limitations on the Unisystem programmers, this 64Mbit device
had to be split into 2 equal 32Mbit Quadrants.

Note - Since this device operates with a 16 bit data bus, all the below
numbers are in word (double-bytes) values


                                         Device mapping:
                                 ----------------------  0Mbit
Unisystem RAM mapping:          | Quadrant L           |
                                | 0-1FFFFF hex         |
 --------------- 0Mbit          |                      |
| 0 hex         |               |                      |
|               |---------->    |                      |
|               |               |----------------------| 32Mbit
|               |               |                      |
|               |---------->    | Quadrant U           |
| 200000 hex    |               | 200000->3FFFFF hex   |
 --------------- 32Mbit         |                      |
                                 ----------------------  64Mbit

  Quadrant L   =  Device addresses 0 -> 1FFFFF hex

  Quadrant U   =  Device addresses 200000 -> 3FFFFF hex


--------------------------------------------------------------------------
Example of downloading a data file:

An example of downloading a 8 Megabytes (0 - 3FFFFF hex) file. You will
need to download the files in two halves. The first half is for Quadrant L.
The second half is for Quadrant U.

** NOTE:
   Quadrant L = Device addresses 000000 -> 1FFFFF hex
   Quadrant L settings:

I/O Translation Format     99
I/O addr offset            0
Memory begin address       0
User data size             200000 (word)

Steps:
1) Download the first half (0-1FFFFF hex) of the data file into Quadrant L.
2) Program the device.

** NOTE:
   Quadrant U = Device addresses 200000 -> 3FFFFF hex
   Quadrant U settings:

I/O Translation Format     99
I/O addr offset            200000 (word)
Memory begin address       0
User data size             200000 (word)

Steps:
1)Download the second half (200000-3FFFFF)of the data file into Quadrant U.
2)Program the device.

--------------------------------------------------------------------------
Example of editing device data in the memory editor:
If data editing needs to done in the user RAM memory editor the appropriate
Quadrant Menu Selection (see table above) must first be determined. As an
example if editing data at the device address starting at location 2F8000
hex, that device address location would fall into the Upper Quadrant.
To find where location 2F8000 hex corresponds to location in the Quadrant
U subtract the beginning device address range from the location you want
to edit.
In this case the location of device address location 2F8000 hex is in the
Quadrant U, memory address is F8000 hex
(F8000 hex = 2F8000 hex - 200000 hex).

--------------------------------------------------------------------------
IMPORTANT NOTE:
Sector ERASE operations may be performed within the selected quadrant and
the desired sectors. However the "Protect/Unprotect all sectors" prior to
the erase operation is performed ONLY within the lower quadrant algorithm.
Due to this, it is necessary to erase/program the lower quadrant first
prior to erasing the upper quadrant. This is ONLY needed when any sector
within the upper quadrant is previously protected.

--------------------------------------------------------------------------
The Secure Sector(SecSi) for this device consists of 256 bytes of One Time
Programmable (OTP) memory. The SecSi sector is accessible using the LOWER
algorithm and is mapped as the last sector.

******************************************************************************
29GL128M
------------

WARNING: Enabling Erase for one of the Quadrants Menu-selections will erase
the whole device; i.e. This Erase will perform a Full Chip Erase Operation.

*------- User RAM Partition as it relates to Menu Selections ------------*
Due to User RAM limitations on the UniFam programmers, this device had to be
split into 4 equal 32MegaBit Quadrants. The corresponding menu selections are:
29GL128M-Package-A0 to program the first Quadrant
29GL128M-Package-A1 to program the second Quadrant
29GL128M-Package-A2 to program the third Quadrant
29GL128M-Package-A3 to program the fourth Quadrant
NOTE:
     "x" is defined as either "L" or "H"
     "Package" is defined as "T", "B", "F", etc...

To load data from a data file for a particular Quadrant of the device
you must set the download options as shown in the table below:
                                  Memory    User        Device
                      I/O addr    begin     data        address
Menu selection:       offset:     address:  size:       range:
29GL128M-Package-A0: 0 hex       0 hex     200000 hex  0      -> 1FFFFF hex
29GL128M-Package-A1: 400000 hex  0 hex     200000 hex  200000 -> 3FFFFF hex
29GL128M-Package-A2: 800000 hex  0 hex     200000 hex  400000 -> 5FFFFF hex
29GL128M-Package-A3: C00000 hex  0 hex     200000 hex  600000 -> 7FFFFF hex

*- Example: Downloading a data file for 29GL128M-Package-A1 menu selection -*
NOTE: This is the Quadrant of the 128Mbit device that has the device
addresses: 200000 -> 3FFFFF hex

This example would be in regard to loading data into the programmer
memory map from a datafile which is intended to be programmed into the
29GL128M-Package-A1 Quadrant of the device:

I/O Translation Format     99
I/O addr offset            400000
Memory begin address       0
User data size             200000

Example of editing device data in the memory editor:
If data editing needs to done in the user RAM memory editor the appropriate
Quadrant Menu Selection (see table above) must first be determined. As an
example if editing data at the device address starting at location 2F8000 hex,
that device address location would fall into the Second Quadrant.  To find
where location 2F8000 hex corresponds to location in a specific Quadrant you
must subtract the beginning device address range from the location you want to
edit.  Therefore, in this case, the location of device address location 2F8000
hex is in the Second Quadrant with a User RAM memory address of F8000 hex.
Example: 2F8000 hex - 200000 hex = F8000 hex

*------ SecSi Sector Data -----------*
SecSi Sector is not supported currently for these devices.

******************************************************************************
29GL128P
------------
29GL128N
------------

WARNING: Enabling Erase for one of the Quadrants Menu-selections will erase
the whole device; i.e. This Erase will perform a Full Chip Erase Operation.

*------- User RAM Partition as it relates to Menu Selections ------------*
Due to User RAM limitations on the UniFam programmers, this device had to be
split into 4 equal 32MegaBit Quadrants. The corresponding menu selections are:

  suffix-A0 to program the first Quadrant
  suffix-A1 to program the second Quadrant
  suffix-A2 to program the third Quadrant
  suffix-A3 to program the fourth Quadrant

Note - Since this device operates with a 16 bit data bus, all the below
numbers are in word (16 bit) values.

To load data from a data file for a particular Quadrant of the device
you must set the download options as shown in the table below:
                                  Memory    User        Device
                      I/O addr    begin     data        address
Menu selection:       offset:     address:  size:       range:
  suffix-A0:           0 hex       0 hex     200000 hex  0      -> 1FFFFF hex
  suffix-A1:           400000 hex  0 hex     200000 hex  200000 -> 3FFFFF hex
  suffix-A2:           800000 hex  0 hex     200000 hex  400000 -> 5FFFFF hex
  suffix-A3:           C00000 hex  0 hex     200000 hex  600000 -> 7FFFFF hex

*- Example: Downloading a data file for suffix-A1 menu selection -*
NOTE: This is the Quadrant of the 128Mbit device that has the device
addresses: 200000 -> 3FFFFF hex

This example would be in regard to loading data into the programmer
memory map from a datafile which is intended to be programmed into the
suffix-A1 Quadrant of the device:

I/O Translation Format     99
I/O addr offset            400000
Memory begin address       0
User data size             200000

Example of editing device data in the memory editor:
If data editing needs to done in the user RAM memory editor the appropriate
Quadrant Menu Selection (see table above) must first be determined. As an
example if editing data at the device address starting at location 2F8000 hex,
that device address location would fall into the Second Quadrant.  To find
where location 2F8000 hex corresponds to location in a specific Quadrant you
must subtract the beginning device address range from the location you want to
edit.  Therefore, in this case, the location of device address location 2F8000
hex is in the Second Quadrant with a User RAM memory address of F8000 hex.
Example: 2F8000 hex - 200000 hex = F8000 hex

*------ SecSi Sector Data -----------*
SecSi Sector is not supported currently for these devices.

*------ Sector Protection/UnProtection -----------*
Sector Protection/UnProtection  : Not supported at the present for these devices.

******************************************************************************
29GL256M
---------

WARNING: Enabling Erase for one of the Quadrants Menu-selections will erase
the whole device; i.e. This Erase will perform a Full Chip Erase Operation.

*------- User RAM Partition as it relates to Menu Selections ------------*
Due to User RAM limitations on the UniFam programmers, this device had to be
split into 8 equal 32MegaBit Quadrants. The corresponding menu selections are:
29GL256M-Package-A0 to program the first Quadrant
29GL256M-Package-A1 to program the second Quadrant
29GL256M-Package-A2 to program the third Quadrant
29GL256M-Package-A3 to program the fourth Quadrant
29GL256M-Package-A4 to program the fifth Quadrant
29GL256M-Package-A5 to program the sixth Quadrant
29GL256M-Package-A6 to program the seventh Quadrant
29GL256M-Package-A7 to program the eighth Quadrant

NOTE:
     "Package" is defined as "T", "B", "F", etc...

To load data from a data file for a particular Quadrant of the device
you must set the download options as shown in the table below:
                                  Memory    User        Device
                      I/O addr    begin     data        address
Menu selection:       offset:     address:  size:       range:
29GL256M-Package-A0: 0 hex       0 hex     200000 hex  0      -> 1FFFFF hex
29GL256M-Package-A1: 400000 hex  0 hex     200000 hex  200000 -> 3FFFFF hex
29GL256M-Package-A2: 800000 hex  0 hex     200000 hex  400000 -> 5FFFFF hex
29GL256M-Package-A3: C00000 hex  0 hex     200000 hex  600000 -> 7FFFFF hex
29GL256M-Package-A4 1000000 hex  0 hex     200000 hex  800000 -> 9FFFFF hex
29GL256M-Package-A5 1400000 hex  0 hex     200000 hex  A00000 -> BFFFFF hex
29GL256M-Package-A6 1800000 hex  0 hex     200000 hex  C00000 -> DFFFFF hex
29GL256M-Package-A7 1C00000 hex  0 hex     200000 hex  E00000 -> FFFFFF hex

*- Example: Downloading a data file for 29GL256M-Package-A1 menu selection -*
NOTE: This is the Quadrant of the 256Mbit device that has the device
addresses: 200000 -> 3FFFFF hex

This example would be in regard to loading data into the programmer
memory map from a datafile which is intended to be programmed into the
29GL256M-Package-A1 Quadrant of the device:

I/O Translation Format     99
I/O addr offset            400000
Memory begin address       0
User data size             200000

Example of editing device data in the memory editor:
If data editing needs to done in the user RAM memory editor the appropriate
Quadrant Menu Selection (see table above) must first be determined. As an
example if editing data at the device address starting at location 2F8000 hex,
that device address location would fall into the Second Quadrant.  To find
where location 2F8000 hex corresponds to location in a specific Quadrant you
must subtract the beginning device address range from the location you want to
edit.  Therefore, in this case, the location of device address location 2F8000
hex is in the Second Quadrant with a User RAM memory address of F8000 hex.
Example: 2F8000 hex - 200000 hex = F8000 hex

*------ SecSi Sector Data -----------*
SecSi Sector data  : Not supported at the present for these devices.
************************************************************************

29GL642M
------------

Due to ram limitations on the Unisystem programmers, this device had to be
split into 4 equal 32Mbit quadrants. Make menu selections as:

  suffix A0 to program the first Quadrant, CE
  suffix A1 to program the second Quadrant, CE
  suffix A2 to program the third Quadrant, CE2
  suffix A3 to program the fourth Quadrant, CE2

Note - This device consists of two independent LV0641 devices each being
enabled individually using CE and CE2.


Note - Since this device operates with a 16 bit data bus, all the below
numbers are in word (16 bit) values.


To load data from a data file for a particular Quadrant of the device you must
set the download options as shown in the table below.  The memory size of each
Quadrant corresponds to a 128Mbit device.
                I/O addr     Memory begin   User data     Device address
Menu selection: offset:      address:       size:         range:
Quadrant A0:    0 hex        0 hex          200000 hex    0      -> 1FFFFF hex
Quadrant A1:    200000 hex   0 hex          200000 hex    200000 -> 3FFFFF hex
Quadrant A2:    400000 hex   0 hex          200000 hex    000000 -> 1FFFFF hex
Quadrant A3:    600000 hex   0 hex          200000 hex    200000 -> 3FFFFF hex

--------------------------------------------------------------------------
This device basically consists of two identical Am29LV641D devices stacked
together (CE, and CE2). There are two Secure Silicon (SecSi) Sectors of 256
bytes each within it, and are accessible using the algorithms with A1 and A3
suffices.
Upon selecting these algorithms, programming operations on these two
sectors are defaulted to "NO". In order to enable programming these sectors,
use More->Device Operations->Device configuration and set the Program flag
to YES for these sectors, if programming operations are needed.
Please see the notes for Am29LV641 for more information on this device.

--------------------------------------------------------------------------
IMPORTANT NOTE:
Sector ERASE operations may be performed within the selected quadrant and
the desired sectors in each of the independent LV641 dies. However the
"Protect/Unprotect all sectors" prior to the erase operation is performed
ONLY within the algorithm with A0 and A2 suffices respectively for the
first (CE) and the second (CE2) dies. Due to this, it is necessary to erase
the quadrant with A0 suffix for the first die (CE) and the quadrant with A2
suffix for the second die (CE2). This is ONLY needed when any sector within
the upper quadrants of the individual chips (CE and CE2) are previously
protected.
************************************************************************


