************************************************************************ ************************************************************************ ** ** ** Application notes for Intel/Micron FLASH memory devices ** ** ** ** To find the application notes for your device search for the ** ** 'core' part name. As an example using the GE28F320W18B 56 pin ** ** VFBGA you would search on '28F320W' ** ** ** ************************************************************************ ************************************************************************ ************************************************************************ TE28F160C18B/T ---------- GT28F160C2BA/TA ---------- GT28F320D18B/T ---------- RC28F320J3A ---------- GE28F320W18T/B ---------- GE28F320W30B/T ---------- RD28F3204W30B/T ---------- RD28F3208W30B/T ---------- Protection register data is represented in the last 4 words of device data. User ram is increased to reflect this. For a 16 MEG Bit x 16 device, the user ram is resized to 100004H locations. Address 100000H -> 100003H contain protection register data. For a 32 MEG Bit x 16 device, the user ram is resized to 200004H locations. Address 200000H -> 200003H contain protection register data. To enable programming and verifying protection register data you will need to make sure that the "Program" flag is enabled for the last Sector in the SECTOR CONFIGURATION Tab(TaskLink) or Screen(Hiterm/Terminal mode.) Programming the protection register lock bit is accomplished by setting the "Program security fuse" switch to "Y" in the Program device screen. ************************************************************************ GE28F640C3BC/TC ---------- TE28F640C3BC/TC ---------- RD28F64008J3 ---------- RD28F6408J3A ---------- RC28F640J3A ---------- TE28F640J3A ---------- GT28F640W18B/T ---------- GT28F640W30B/T ---------- RD28F6408W18B/T ---------- RD28F6408W30B/T ---------- 28F640J3C ---------- 28F640J3D ---------- Due to User RAM limitations on the Unisystem programmers, this 64Mbit device had to be split into 2 equal 32Mbit Quadrants . Device mapping: ---------------------- 0Mbit Unisystem RAM mapping: | Quadrant 1 | | 0-1FFFFF hex | --------------- 0Mbit | | | 0 hex | | | | |----------> | | | | |----------------------| 32Mbit | | | | | |----------> | | | 200000 hex | | 200000->3FFFFF hex | --------------- 32Mbit | | |----------------------| 64Mbit | 400000->400003 hex | ---------------------- Protection Registers Quadrant 1 = Device addresses 0 -> 1FFFFF hex Quadrant 2 = Device addresses 200000 -> 3FFFFF hex Protection Registers = Device addresses 400000 -> 400003 hex Due to ram limitations on the Unisystem programmers, this 64Mbit device had to be split into 2 equal 32Mbit Quadrants . Make menu selections as: suffix L = The Quadrant of the 64Mbit device that has Device addresses 0 -> 1FFFFF hex ( 0 -> 3FFFFF for 8-Bit devices) suffix U = The Quadrant of the 64Mbit device that has Device addresses 200000 -> 3FFFFF hex ( 400000 -> 7FFFFF for 8-Bit devices) Protection register data can be programmed with either Quadrant selected. To load data from a data file for either 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 64Mbit device. I/O addr Memory begin User data Device addr Menu selection: offset: address: size: range: Quadrant L : 0 hex 0 hex 200000 hex 0 -> 1FFFFF hex Quadrant U : 400000 hex 0 hex 200000 hex 200000 -> 3FFFFF hex Note - For an 8-Bit device the User Data Sizes and Device Address Ranges would need to be doubled. Example of downloading a data file: NOTE: Quadrant L = The Quadrant of the 64Mbit device that has Device addresses 0 -> 1FFFFF hex (0 -> 3FFFFF for 8 bit devices) Quadrant A1 = The Quadrant of the 128Mbit device that has Device addresses 200000 -> 3FFFFF hex (400000 -> 7FFFFF for 8 bit devices) The following example would be in regard to loading data into the programmer memory map from a datafile, and the data is intended to be programmed into either Quadrant L or Quadrant A1: I/O Translation Format 99 I/O addr offset 400000 Memory begin address 0 User data size 200000 (400000 for 8 bit devices) 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 Quadrant U or Quadrant A1. To find where location 2F8000 hex corresponds to location in the Quadrant U or Quadrant A1 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 or Quadrant A1 memory address is F8000 hex (F8000 hex = 2F8000 hex - 200000 hex). Protection register data is represented in the last 4 words of device data. User ram is increased to reflect this. For a 16 MEG Bit x 16 device, the user ram is resized to 100004H locations. Address 100000H -> 100003H contain protection register data. For a 32 MEG Bit x 16 device, the user ram is resized to 200004H locations. Address 200000H -> 200003H contain protection register data. To enable programming and verifying protection register data you will need to make sure that the "Program" flag is enabled for the last Sector in the SECTOR CONFIGURATION Tab(TaskLink) or Screen(Hiterm/Terminal mode.) Programming the protection register lock bit is accomplished by setting the "Program security fuse" switch to "Y" in the Program device screen. Protection register data is represented in the last 4 words of device data. User ram is increased to reflect this, i.e. on a 16 MEG Bit x 16 device, user ram is resized to 100004H locations. Address 100000H through 100003H will contain protection register data. To enable programming, verifying or loading protection register data, set the "Program" switch to "Y" for the last sector represented in the "Device Configure" screen. Programming the protection register lock bit is accomplished by setting the "Program security fuse" switch to "Y" in the Program device screen. **************************************************************************** DA28F640J5 ---------- G28F640J5 ---------- Due to User RAM limitations on the Unisystem programmers, this 64Mbit device had to be split into 2 equal 32Mbit Quadrants . Device Memory mapping: UniSite-xpi/UniSite ---------------------- 0Mbit 3980xpi/3980/3900 | | User RAM mapping: | | --------------- 0Mbit | Quadrant 1 | | 0 hex | | 0 -> 1FFFFF hex | | |<------------->| | | | |----------------------| 32Mbit | | | | | | | | | |<------------->| Quadrant 2 | | 200000 hex | | 200000 -> 3FFFFF hex | --------------- 32Mbit | | ---------------------- 64Mbit Quadrant 1 = Device addresses 0 -> 1FFFFF hex Quadrant 2 = Device addresses 200000 -> 3FFFFF hex Due to ram limitations on the Unisystem programmers, this 64Mbit device had to be split into 2 equal 32Mbit Quadrants . Make menu selections as: suffix L = The Quadrant of the 64Mbit device that has Device addresses 0 -> 1FFFFF hex ( 0 -> 3FFFFF for 8-Bit devices) suffix U = The Quadrant of the 64Mbit device that has Device addresses 200000 -> 3FFFFF hex ( 400000 -> 7FFFFF for 8-Bit devices) To load data from a data file for either 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 64Mbit device. I/O addr Memory begin User data Device addr Menu selection: offset: address: size: range: Quadrant L : 0 hex 0 hex 200000 hex 0 -> 1FFFFF hex Quadrant U : 400000 hex 0 hex 200000 hex 200000 -> 3FFFFF hex Note - For an 8-Bit device the User Data Sizes and Device Address Ranges would need to be doubled. Example of downloading a data file: NOTE: Quadrant L = The Quadrant of the 64Mbit device that has Device addresses 0 -> 1FFFFF hex (0 -> 3FFFFF for 8 bit devices) Quadrant A1 = The Quadrant of the 128Mbit device that has Device addresses 200000 -> 3FFFFF hex (400000 -> 7FFFFF for 8 bit devices) The following example would be in regard to loading data into the programmer memory map from a datafile, and the data is intended to be programmed into either Quadrant L or Quadrant A1: I/O Translation Format 99 I/O addr offset 400000 Memory begin address 0 User data size 200000 (400000 for 8 bit devices) 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 Quadrant U or Quadrant A1. To find where location 2F8000 hex corresponds to location in the Quadrant U or Quadrant A1 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 or Quadrant A1 memory address is F8000 hex (F8000 hex = 2F8000 hex - 200000 hex). **************************************************************************** RC28F128J3A ------------ RC28F128J3C ------------ RC28F128J3D ------------ *------- 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: RC28F128J3D0 to program the first Quadrant RC28F128J3D1 to program the second Quadrant RC28F128J3D2 to program the third Quadrant RC28F128J3D3 to program the fourth Quadrant Device Memory mapping: UniSite-xpi/UniSite ---------------------- 0Mbit 3980xpi/3980/3900 | | User RAM mapping: | | --------------- 0Mbit -->| Quadrant 1 | | 0 hex | | | 0 -> 1FFFFF hex | | |<----------' | | | |<----------- |----------------------| 32Mbit | |<--------- \ | | | |<------- \ ->| Quadrant 2 | | 200000 hex | \ | | 200000 -> 3FFFFF hex | --------------- 32Mbit | | | | | | | | | | |----------------------| 64Mbit | | | | | `--->| Quadrant 3 | | | 400000 -> 5FFFFF hex | | | | | | | | |----------------------| 96Mbit | | | `----->| Quadrant 4 | | 600000 -> 7FFFFF hex | | | | | ---------------------- 128Mbit Quadrant 1 = Device addresses 0 -> 1FFFFF hex Quadrant 2 = Device addresses 200000 -> 3FFFFF hex Quadrant 3 = Device addresses 400000 -> 5FFFFF hex Quadrant 4 = Device addresses 600000 -> 7FFFFF hex 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: RC28F128J3D0: 0 hex 0 hex 200000 hex 0 -> 1FFFFF hex RC28F128J3D1: 400000 hex 0 hex 200000 hex 200000 -> 3FFFFF hex RC28F128J3D2: 800000 hex 0 hex 200000 hex 400000 -> 5FFFFF hex RC28F128J3D3: C00000 hex 0 hex 200000 hex 600000 -> 7FFFFF hex *-- Example of downloading a data file for RC28F128J3D1 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 RC28F128J3D1 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 *------ Protection Register Data -----------* Protection register data is represented in the last 4 words of device data. The User RAM is increased by these four to reflect this in terms of the total device size. For each Quadrants Menu Selection, the device size is increased by four Words to allow access to this data from any of the possible menu selections. Again, for this device, the user ram is resized to 200004 hex locations for each Quadrants menu selection. This way each Quadrants menu selection allows access to the Protection Register data. This data will be stored or accessed at User RAM Addresses: 200000 hex -> 200003 hex. To enable programming and verifying protection register data you will need to make sure that the "Program" flag is enabled for the last Sector in the SECTOR CONFIGURATION Table To enable protection register lock bit programming you will need to make sure that both the "Program" AND "Protection" flag in the SECTOR CONFIGURATION Table are enabled(set to "Y"). ************************************************************************ 28F128J3CX ----------- This application note is applicable only to INT 28F128J3CX-TSOP and MTI 28F128J3X-TSOP device menu selection. It details how to setup programming a portion of the device. Due to Ram limitations on the Unisystem programmers, this device has to be split into parts before doing any operation on the device. The device size for the device under consideration is 0x80000. This splitting of memory is explained in the examples given below. Example1-a: Operation - Load First 6 MBytes of memory. ------------------------------------------ Say you need to do operation on the first 6 MBytes of memory. So the device being a 16 bit device, address range becomes 0x300000. If any operation is tried out before selecting the proper range, following error is displayed by the programmer. "OPERATION FAILED: End of user RAM exceeded. Press F3" In order to setup the address range for programming portions of the device, jump to "Device Configure" screen and enter the values of addresses. Where the "Device begin address" is not equal to zero, address setting should be done in "Ctrl+k" mode On entering the 'Device Configure' menu, you need to enter: Begin Device: 0 Device Block Size: 300000 The programmer will now display the sector configuration.The address range required is now selected: SECTOR CONFIGURATION Sectors to be Erased: 0-47 Sectors to be Programmed: 0-47 Sectors to be Protected: - To leave the "Device Configure" screen hit "F1" to return. Upon returning set go to the Device Operation screen(Load device/Verify device) b: Operation - Program first 6 MBytes of memory ---------------------------------------------- Assuming that you select device and follow the steps as per Example1 to set the address range. Now, when you enter the programming mode, you need to set one more parameter - "Total set size" 3 (dummy value) Here, set the 'Total set size' value to 1. "Total set size" 1 (required value) To leave the "Device Configure" screen hit "F1" to return. Upon returning set go to the Device Operation screen Program device. The programmer is now ready for the program operation. Example2: Operation - Load last 6 MBytes of memory. ------------------------------------------ Say you need to do operation on the last 6 MBytes of memory. So the device address range becomes 0x300000 because this is a 16 bit device. And the device begin address is 0x500000. This parameter entry is displayed as follows: Begin Device: 500000 Device Block Size: 300000 The programmer will now display the sector configuration. The address range required is now selected: SECTOR CONFIGURATION Sectors to be Erased: 80-127 Sectors to be Programmed: 80-127 Sectors to be Protected: - Consider two cases here: a) device with size greater than the available ram in the programmer. Like if we try to give the device block size 0x600000 at the begin address 0x0000. b) Device Block Size selected is more than the ram required. Like in this example, we enter block size as 0x400000. In both the above cases, the programmer will set the address range automatically to required value, in case a: 0x420000 and case b: 0x300000 displaying the following message. "Device Block Limits needed to be adjusted." Here the value is adjusted to the device size in order to utilize the correct amount of programmer RAM. The programmer also adjusts the memory begin address or the block size in case the program block is not on the sector boundary b: Operation - Program last 6 MBytes of memory ---------------------------------------------- Assuming that you select device and follow the steps as per Example1 to set the address range. Now, when you enter the programming mode, you need to set one more parameter - "Total set size" 3 (dummy value) Here, set the 'Total set size' value to 1. "Total set size" 1 (required value) To leave the "Device Configure" screen hit "F1" to return. Upon returning set go to the Device Operation screen Program device. The programmer is now ready for the program operation of the last 6 MBytes of memory. ************************************************************************ RD28F6432JC3 ---------- - Protection register data is represented in the last 8 words of device data. User ram is increased to reflect this, i.e. on a 16 MEG Bit x 16 device, user ram is resized to 100008H locations. Address 100000H through 100007H will contain protection register data. - By default, the program and protect option for this sector will be set to "NO". - Programming the protection register lock bit is accomplished by setting the "Program security fuse" switch to "Y" in the Program device screen. - Address locations 100000H-100003H are factory default and are not programmable by the user. - To program/verify/load locations 100004H-100007 of the protection register, set the "Program" switch to "Y" for the last sector represented in the "Device Configure" screen. - Address locations 100004-100007 are one time programmable. An attempt to re-program locations 100004-100007 will result in a programming error. Due to ram limitations on the Unisystem programmers, this device had to be split into 3 Quadrants. Make menu selections as: suffix A0 = The Quadrant of the 64Mbit device that has Device addresses 0 -> 1FFFFF hex suffix A1 = The Quadrant of the 64Mbit device that has Device addresses 200000 -> 3FFFFF hex suffix A2 = The Quadrant of the 32Mbit device that has Device addresses 0 -> 1FFFFF hex Protection register data can be programmed with either Quadrant A0 OR A1 selected. To load data from a data file for either Quadrant of the J3 device you must set the download options as shown in the table below. The memory size of each Quadrant corresponds to a 64Mbit device. I/O addr Memory begin User data Device addr Menu selection: OFFSET: address: size: range: Quadrant A0: 0 hex 0 hex 200000 hex 0 -> 1FFFFF hex Quadrant A1: 400000 hex 0 hex 200000 hex 200000 -> 3FFFFF hex Example of downloading a data file: NOTE: Quadrant L = The Quadrant of the 64Mbit device that has Device addresses 0 -> 1FFFFF hex (0 -> 3FFFFF for 8 bit devices) Quadrant A1 = The Quadrant of the 128Mbit device that has Device addresses 200000 -> 3FFFFF hex (400000 -> 7FFFFF for 8 bit devices) The following example would be in regard to loading data into the programmer memory map from a datafile, and the data is intended to be programmed into either Quadrant L or Quadrant A1: I/O Translation Format 99 I/O addr offset 400000 Memory begin address 0 User data size 200000 (400000 for 8 bit devices) 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 Quadrant U or Quadrant A1. To find where location 2F8000 hex corresponds to location in the Quadrant U or Quadrant A1 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 or Quadrant A1 memory address is F8000 hex (F8000 hex = 2F8000 hex - 200000 hex). ************************************************************************ 28F640P30T 28F640P30B ----------- Due to User RAM limitations on the Unisystem programmers, this 64Mbit device had to be split into 2 equal 32Mbit Quadrants . Device Memory mapping: UniSite-xpi/UniSite ---------------------- 0Mbit 3980xpi/3980/3900 | | User RAM mapping: | | --------------- 0Mbit | Quadrant 1 | | 0 hex | | 0 -> 1FFFFF hex | | |<------------->| | | | |----------------------| 32Mbit | | | | | | | | | |<------------->| Quadrant 2 | | 200000 hex | | 200000 -> 3FFFFF hex | --------------- 32Mbit | | ---------------------- 64Mbit Quadrant 1 = Device addresses 0 -> 1FFFFF hex Quadrant 2 = Device addresses 200000 -> 3FFFFF hex Due to ram limitations on the Unisystem programmers, this 64Mbit device had to be split into 2 equal 32Mbit Quadrants . Make menu selections as: suffix L = The Quadrant of the 64Mbit device that has Device addresses 0 -> 1FFFFF hex ( 0 -> 3FFFFF for 8-Bit devices) suffix U = The Quadrant of the 64Mbit device that has Device addresses 200000 -> 3FFFFF hex ( 400000 -> 7FFFFF for 8-Bit devices) To load data from a data file for either 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 64Mbit device. I/O addr Memory begin User data Device addr Menu selection: offset: address: size: range: Quadrant L : 0 hex 0 hex 200000 hex 0 -> 1FFFFF hex Quadrant U : 400000 hex 0 hex 200000 hex 200000 -> 3FFFFF hex Note - For an 8-Bit device the User Data Sizes and Device Address Ranges would need to be doubled. Example of downloading a data file: NOTE: Quadrant L = The Quadrant of the 64Mbit device that has Device addresses 0 -> 1FFFFF hex (0 -> 3FFFFF for 8 bit devices) Quadrant A1 = The Quadrant of the 128Mbit device that has Device addresses 200000 -> 3FFFFF hex (400000 -> 7FFFFF for 8 bit devices) The following example would be in regard to loading data into the programmer memory map from a datafile, and the data is intended to be programmed into either Quadrant L or Quadrant A1: I/O Translation Format 99 I/O addr offset 400000 Memory begin address 0 User data size 200000 (400000 for 8 bit devices) 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 Quadrant U or Quadrant A1. To find where location 2F8000 hex corresponds to location in the Quadrant U or Quadrant A1 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 or Quadrant A1 memory address is F8000 hex (F8000 hex = 2F8000 hex - 200000 hex). Protection register data is represented in the last 128 words of device data. User ram is increased to reflect this. Follwing is the Protection Regsiter Map Sector Number Address Range(Hex) Protection Register Name ============ ==================== =================== 32 00200000 - 00200003 64-bit User programmable Regsiter 33 00200004 - 0020000B 128-bit Protection Register-1 34 0020000C - 00200013 128-bit Protection Register-2 35 00200014 - 0020001B 128-bit Protection Register-3 36 0020001C - 00200023 128-bit Protection Register-4 37 00200024 - 0020002B 128-bit Protection Register-5 38 0020002C - 00200033 128-bit Protection Register-6 39 00200034 - 0020003B 128-bit Protection Register-7 40 0020003C - 00200043 128-bit Protection Register-8 41 00200044 - 0020004B 128-bit Protection Register-9 42 0020004C - 00200053 128-bit Protection Register-10 43 00200054 - 0020005B 128-bit Protection Register-11 44 0020005C - 00200063 128-bit Protection Register-12 45 00200064 - 0020006B 128-bit Protection Register-13 46 0020006C - 00200073 128-bit Protection Register-14 47 00200074 - 0020007B 128-bit Protection Register-15 48 0020007C - 00200083 128-bit Protection Register-16 For a 32 MEG Bit x 16 device, the user ram is resized to 200084H locations. Address 200000H -> 200084H contain protection register data. To enable programming and verifying protection register data you will need to make sure that the "Program" flag is enabled for the corresponding Sector in the SECTOR CONFIGURATION Tab(TaskLink) or Screen(Hiterm/Terminal mode.) All the Protection registers PR0-PR16 are represented in a sector architecture. Programming the protection register lock bit is accomplished by setting the corresponding "Protect" flag of the sector to "Y" in the SECTOR CONFIGURATION Tab(TaskLink) or Screen(Hiterm/Terminal mode.). Progarmming and Protection of the protection regsiters is OTP, once programmed please make sure to set the corresponding flag to 'N' to avoid further operations on these registers. ************************************************************************ ************************************************************************