📄 64m_16e.c
字号:
/*****************************************************************************
*
* File name : 64M_16E.c
* Sample Program for 64Mbit(4Mb x16) NOR type Flash Memory
* Version : 0.40.10
* CPU : SH7709A
* Compiler : SHC V.5.1C
* Author : S.Ishimoto, A.Kinoshita, H.Furusaki, F.Saeki
*
* The information described here may contain technical inaccuracies or
* typographical errors. Renesas technology Corporation and Renesas Solutions
* and Oyo Electric Corporation assume no responsibility for any damage,
* liability, or other loss rising from these inaccuracies or errors.
*
* Copyright (c) 2001-2003
* Renesas Technology Coporation and Renesas Solutions Corporation
* and Oyo Electric Corporation All Rights Reserved
*
* ---------------------------------------------------------------------------
* This sample program provides C code for using the Renesas
* 64Mbit(4Mb x16) NOR type Flash Memory and MCP(Multi Chip Package).
* The following typical devices are supported in this file.
* M5M29KB/T641AVP
* M6MGB/T641S4TP
* M6MGB/T641S8AKT
* M6MGB/T647M17AKT
* M6MGB/T647M34CKT
* M6MGB/T64BS4AWG
* M6MGB/T64BS8AWG
* M6MGB/T64BM17AWG
* M6MGB/T64BM34CWG
*
* The following function commands are available in this file.
* FmErase() Erase one or few blocks
* FmEraseAllUnlockedBlocks() Erase all unlocked blocks
* FmWordProgram() Program a word
* FmPageProgram() Program a page(128 words)
* FmSingleDataLoadtoPageBuffer() Single data load to page buffer
* FmPageBuffertoFlash() Page buffer to flash
* FmFlashtoPageBuffer() Flash to page buffer
* FmPBClear() Clear page buffer
* FmReadArray() Read arry
* FmIdRead() ID read
* FmReadStatusRegister() Read status register
* FmClrStatusRegister() Clear status register
*
* ---------------------------------------------------------------------------
* Version History: Ver. 0.10.00 '01/06/04 First release
* Ver. 0.20.00 '01/08/20 Change error determination
* Ver. 0.30.00 '02/03/07 Add software lock release
* Ver. 0.40.00 '03/04/01 Erase function remake,
* Add some functions and comments
* Ver. 0.40.10 '03/08/22 Change of a product type name
* Change of a comment(NOR type)
*****************************************************************************/
#define TRUE 1
#define FALSE 0
#define ON 1
#define OFF 0
/* Specification of Boot Block of Flash Memory */
/*==========================================================================*/
/* Please specify #define of a boot block of Flash Mmeory to be used. */
/*#define DEV_64M_BOTTOM*/
#define DEV_64M_TOP
/*==========================================================================*/
/* Specify Erase Block Number */
#ifdef DEV_64M_BOTTOM
static const unsigned long BlockOfs[] = {
0x000000L, /* Block 0:000000 - 000FFF( 4kword) */
0x001000L, /* Block 1:001000 - 001FFF( 4kword) */
0x002000L, /* Block 2:002000 - 002FFF( 4kword) */
0x003000L, /* Block 3:003000 - 003FFF( 4kword) */
0x004000L, /* Block 4:004000 - 004FFF( 4kword) */
0x005000L, /* Block 5:005000 - 005FFF( 4kword) */
0x006000L, /* Block 6:006000 - 006FFF( 4kword) */
0x007000L, /* Block 7:007000 - 007FFF( 4kword) */
0x008000L, /* Block 8:008000 - 00FFFF(32kword) */
0x010000L, /* Block 9:010000 - 017FFF(32kword) */
0x018000L, /* Block 10:018000 - 01FFFF(32kword) */
0x020000L, /* Block 11:020000 - 027FFF(32kword) */
0x028000L, /* Block 12:028000 - 02FFFF(32kword) */
0x030000L, /* Block 13:030000 - 037FFF(32kword) */
0x038000L, /* Block 14:038000 - 03FFFF(32kword) */
0x040000L, /* Block 15:040000 - 047FFF(32kword) */
0x048000L, /* Block 16:048000 - 04FFFF(32kword) */
0x050000L, /* Block 17:050000 - 057FFF(32kword) */
0x058000L, /* Block 18:058000 - 05FFFF(32kword) */
0x060000L, /* Block 19:060000 - 067FFF(32kword) */
0x068000L, /* Block 20:068000 - 06FFFF(32kword) */
0x070000L, /* Block 21:070000 - 077FFF(32kword) */
0x078000L, /* Block 22:078000 - 07FFFF(32kword) */
0x080000L, /* Block 23:080000 - 087FFF(32kword) */
0x088000L, /* Block 24:088000 - 08FFFF(32kword) */
0x090000L, /* Block 25:090000 - 097FFF(32kword) */
0x098000L, /* Block 26:098000 - 09FFFF(32kword) */
0x0A0000L, /* Block 27:0A0000 - 0A7FFF(32kword) */
0x0A8000L, /* Block 28:0A8000 - 0AFFFF(32kword) */
0x0B0000L, /* Block 29:0B0000 - 0B7FFF(32kword) */
0x0B8000L, /* Block 30:0B8000 - 0BFFFF(32kword) */
0x0C0000L, /* Block 31:0C0000 - 0C7FFF(32kword) */
0x0C8000L, /* Block 32:0C8000 - 0CFFFF(32kword) */
0x0D0000L, /* Block 33:0D0000 - 0D7FFF(32kword) */
0x0D8000L, /* Block 34:0D8000 - 0DFFFF(32kword) */
0x0E0000L, /* Block 35:0E0000 - 0E7FFF(32kword) */
0x0E8000L, /* Block 36:0E8000 - 0EFFFF(32kword) */
0x0F0000L, /* Block 37:0F0000 - 0F7FFF(32kword) */
0x0F8000L, /* Block 38:0F8000 - 0FFFFF(32kword) */
0x100000L, /* Block 39:100000 - 107FFF(32kword) */
0x108000L, /* Block 40:108000 - 10FFFF(32kword) */
0x110000L, /* Block 41:110000 - 117FFF(32kword) */
0x118000L, /* Block 42:118000 - 11FFFF(32kword) */
0x120000L, /* Block 43:120000 - 127FFF(32kword) */
0x128000L, /* Block 44:128000 - 12FFFF(32kword) */
0x130000L, /* Block 45:130000 - 137FFF(32kword) */
0x138000L, /* Block 46:138000 - 13FFFF(32kword) */
0x140000L, /* Block 47:140000 - 147FFF(32kword) */
0x148000L, /* Block 48:148000 - 14FFFF(32kword) */
0x150000L, /* Block 49:150000 - 157FFF(32kword) */
0x158000L, /* Block 50:158000 - 15FFFF(32kword) */
0x160000L, /* Block 51:160000 - 167FFF(32kword) */
0x168000L, /* Block 52:168000 - 16FFFF(32kword) */
0x170000L, /* Block 53:170000 - 177FFF(32kword) */
0x178000L, /* Block 54:178000 - 17FFFF(32kword) */
0x180000L, /* Block 55:180000 - 187FFF(32kword) */
0x188000L, /* Block 56:188000 - 18FFFF(32kword) */
0x190000L, /* Block 57:190000 - 197FFF(32kword) */
0x198000L, /* Block 58:198000 - 19FFFF(32kword) */
0x1A0000L, /* Block 59:1A0000 - 1A7FFF(32kword) */
0x1A8000L, /* Block 60:1A8000 - 1AFFFF(32kword) */
0x1B0000L, /* Block 61:1B0000 - 1B7FFF(32kword) */
0x1B8000L, /* Block 62:1B8000 - 1BFFFF(32kword) */
0x1C0000L, /* Block 63:1C0000 - 1C7FFF(32kword) */
0x1C8000L, /* Block 64:1C8000 - 1CFFFF(32kword) */
0x1D0000L, /* Block 65:1D0000 - 1D7FFF(32kword) */
0x1D8000L, /* Block 66:1D8000 - 1DFFFF(32kword) */
0x1E0000L, /* Block 67:1E0000 - 1E7FFF(32kword) */
0x1E8000L, /* Block 68:1E8000 - 1EFFFF(32kword) */
0x1F0000L, /* Block 69:1F0000 - 1F7FFF(32kword) */
0x1F8000L /* Block 70:1F8000 - 1FFFFF(32kword) */
0x200000L, /* Block 71:200000 - 207FFF(32kword) */
0x208000L, /* Block 72:208000 - 20FFFF(32kword) */
0x210000L, /* Block 73:210000 - 217FFF(32kword) */
0x218000L, /* Block 74:218000 - 21FFFF(32kword) */
0x220000L, /* Block 75:220000 - 227FFF(32kword) */
0x228000L, /* Block 76:228000 - 22FFFF(32kword) */
0x230000L, /* Block 77:230000 - 237FFF(32kword) */
0x238000L, /* Block 78:238000 - 23FFFF(32kword) */
0x240000L, /* Block 79:240000 - 247FFF(32kword) */
0x248000L, /* Block 80:248000 - 24FFFF(32kword) */
0x250000L, /* Block 81:250000 - 257FFF(32kword) */
0x258000L, /* Block 82:258000 - 25FFFF(32kword) */
0x260000L, /* Block 83:260000 - 267FFF(32kword) */
0x268000L, /* Block 84:268000 - 26FFFF(32kword) */
0x270000L, /* Block 85:270000 - 277FFF(32kword) */
0x278000L, /* Block 86:278000 - 27FFFF(32kword) */
0x280000L, /* Block 87:280000 - 287FFF(32kword) */
0x288000L, /* Block 88:288000 - 28FFFF(32kword) */
0x290000L, /* Block 89:290000 - 297FFF(32kword) */
0x298000L, /* Block 90:298000 - 29FFFF(32kword) */
0x2A0000L, /* Block 91:2A0000 - 2A7FFF(32kword) */
0x2A8000L, /* Block 92:2A8000 - 2AFFFF(32kword) */
0x2B0000L, /* Block 93:2B0000 - 2B7FFF(32kword) */
0x2B8000L, /* Block 94:2B8000 - 2BFFFF(32kword) */
0x2C0000L, /* Block 95:2C0000 - 2C7FFF(32kword) */
0x2C8000L, /* Block 96:2C8000 - 2CFFFF(32kword) */
0x2D0000L, /* Block 97:2D0000 - 2D7FFF(32kword) */
0x2D8000L, /* Block 98:2D8000 - 2DFFFF(32kword) */
0x2E0000L, /* Block 99:2E0000 - 2E7FFF(32kword) */
0x2E8000L, /* Block 100:2E8000 - 2EFFFF(32kword) */
0x2F0000L, /* Block 101:2F0000 - 2F7FFF(32kword) */
0x2F8000L /* Block 102:2F8000 - 2FFFFF(32kword) */
0x300000L, /* Block 103:300000 - 307FFF(32kword) */
0x308000L, /* Block 104:308000 - 30FFFF(32kword) */
0x310000L, /* Block 105:310000 - 317FFF(32kword) */
0x318000L, /* Block 106:318000 - 31FFFF(32kword) */
0x320000L, /* Block 107:320000 - 327FFF(32kword) */
0x328000L, /* Block 108:328000 - 32FFFF(32kword) */
0x330000L, /* Block 109:330000 - 337FFF(32kword) */
0x338000L, /* Block 110:338000 - 33FFFF(32kword) */
0x340000L, /* Block 111:340000 - 347FFF(32kword) */
0x348000L, /* Block 112:348000 - 34FFFF(32kword) */
0x350000L, /* Block 113:350000 - 357FFF(32kword) */
0x358000L, /* Block 114:358000 - 35FFFF(32kword) */
0x360000L, /* Block 115:360000 - 367FFF(32kword) */
0x368000L, /* Block 116:368000 - 36FFFF(32kword) */
0x370000L, /* Block 117:370000 - 377FFF(32kword) */
0x378000L, /* Block 118:378000 - 37FFFF(32kword) */
0x380000L, /* Block 119:380000 - 387FFF(32kword) */
0x388000L, /* Block 120:388000 - 38FFFF(32kword) */
0x390000L, /* Block 121:390000 - 397FFF(32kword) */
0x398000L, /* Block 122:398000 - 39FFFF(32kword) */
0x3A0000L, /* Block 123:3A0000 - 3A7FFF(32kword) */
0x3A8000L, /* Block 124:3A8000 - 3AFFFF(32kword) */
0x3B0000L, /* Block 125:3B0000 - 3B7FFF(32kword) */
0x3B8000L, /* Block 126:3B8000 - 3BFFFF(32kword) */
0x3C0000L, /* Block 127:3C0000 - 3C7FFF(32kword) */
0x3C8000L, /* Block 128:3C8000 - 3CFFFF(32kword) */
0x3D0000L, /* Block 129:3D0000 - 3D7FFF(32kword) */
0x3D8000L, /* Block 130:3D8000 - 3DFFFF(32kword) */
0x3E0000L, /* Block 131:3E0000 - 3E7FFF(32kword) */
0x3E8000L, /* Block 132:3E8000 - 3EFFFF(32kword) */
0x3F0000L, /* Block 133:3F0000 - 3F7FFF(32kword) */
0x3F8000L /* Block 134:3F8000 - 3FFFFF(32kword) */
};
#endif
#ifdef DEV_64M_TOP
static const unsigned long BlockOfs[] = {
0x000000L, /* Block 0:000000 - 007FFF(32kword) */
0x008000L, /* Block 1:008000 - 00FFFF(32kword) */
0x010000L, /* Block 2:010000 - 017FFF(32kword) */
0x018000L, /* Block 3:018000 - 01FFFF(32kword) */
0x020000L, /* Block 4:020000 - 027FFF(32kword) */
0x028000L, /* Block 5:028000 - 02FFFF(32kword) */
0x030000L, /* Block 6:030000 - 037FFF(32kword) */
0x038000L, /* Block 7:038000 - 03FFFF(32kword) */
0x040000L, /* Block 8:040000 - 047FFF(32kword) */
0x048000L, /* Block 9:048000 - 04FFFF(32kword) */
0x050000L, /* Block 10:050000 - 057FFF(32kword) */
0x058000L, /* Block 11:058000 - 05FFFF(32kword) */
0x060000L, /* Block 12:060000 - 067FFF(32kword) */
0x068000L, /* Block 13:068000 - 06FFFF(32kword) */
0x070000L, /* Block 14:070000 - 077FFF(32kword) */
0x078000L, /* Block 15:078000 - 07FFFF(32kword) */
0x080000L, /* Block 16:080000 - 087FFF(32kword) */
0x088000L, /* Block 17:088000 - 08FFFF(32kword) */
0x090000L, /* Block 18:090000 - 097FFF(32kword) */
0x098000L, /* Block 19:098000 - 09FFFF(32kword) */
0x0A0000L, /* Block 20:0A0000 - 0A7FFF(32kword) */
0x0A8000L, /* Block 21:0A8000 - 0AFFFF(32kword) */
0x0B0000L, /* Block 22:0B0000 - 0B7FFF(32kword) */
0x0B8000L, /* Block 23:0B8000 - 0BFFFF(32kword) */
0x0C0000L, /* Block 24:0C0000 - 0C7FFF(32kword) */
0x0C8000L, /* Block 25:0C8000 - 0CFFFF(32kword) */
0x0D0000L, /* Block 26:0D0000 - 0D7FFF(32kword) */
0x0D8000L, /* Block 27:0D8000 - 0DFFFF(32kword) */
0x0E0000L, /* Block 28:0E0000 - 0E7FFF(32kword) */
0x0E8000L, /* Block 29:0E8000 - 0EFFFF(32kword) */
0x0F0000L, /* Block 30:0F0000 - 0F7FFF(32kword) */
0x0F8000L, /* Block 31:0F8000 - 0FFFFF(32kword) */
0x100000L, /* Block 32:100000 - 107FFF(32kword) */
0x108000L, /* Block 33:108000 - 10FFFF(32kword) */
0x110000L, /* Block 34:110000 - 117FFF(32kword) */
0x118000L, /* Block 35:118000 - 11FFFF(32kword) */
0x120000L, /* Block 36:120000 - 127FFF(32kword) */
0x128000L, /* Block 37:128000 - 12FFFF(32kword) */
0x130000L, /* Block 38:130000 - 137FFF(32kword) */
0x138000L, /* Block 39:138000 - 13FFFF(32kword) */
0x140000L, /* Block 40:140000 - 147FFF(32kword) */
0x148000L, /* Block 41:148000 - 14FFFF(32kword) */
0x150000L, /* Block 42:150000 - 157FFF(32kword) */
0x158000L, /* Block 43:158000 - 15FFFF(32kword) */
0x160000L, /* Block 44:160000 - 167FFF(32kword) */
0x168000L, /* Block 45:168000 - 16FFFF(32kword) */
0x170000L, /* Block 46:170000 - 177FFF(32kword) */
0x178000L, /* Block 47:178000 - 17FFFF(32kword) */
0x180000L, /* Block 48:180000 - 187FFF(32kword) */
0x188000L, /* Block 49:188000 - 18FFFF(32kword) */
0x190000L, /* Block 50:190000 - 197FFF(32kword) */
0x198000L, /* Block 51:198000 - 19FFFF(32kword) */
0x1A0000L, /* Block 52:1A0000 - 1A7FFF(32kword) */
0x1A8000L, /* Block 53:1A8000 - 1AFFFF(32kword) */
0x1B0000L, /* Block 54:1B0000 - 1B7FFF(32kword) */
0x1B8000L, /* Block 55:1B8000 - 1BFFFF(32kword) */
0x1C0000L, /* Block 56:1C0000 - 1C7FFF(32kword) */
0x1C8000L, /* Block 57:1C8000 - 1CFFFF(32kword) */
0x1D0000L, /* Block 58:1D0000 - 1D7FFF(32kword) */
0x1D8000L, /* Block 59:1D8000 - 1DFFFF(32kword) */
0x1E0000L, /* Block 60:1E0000 - 1E7FFF(32kword) */
0x1E8000L, /* Block 61:1E8000 - 1EFFFF(32kword) */
0x1F0000L, /* Block 62:1F0000 - 1F7FFF(32kword) */
0x1F8000L, /* Block 63:1F8000 - 1FFFFF(32kword) */
0x200000L, /* Block 64:200000 - 207FFF(32kword) */
0x208000L, /* Block 65:208000 - 20FFFF(32kword) */
0x210000L, /* Block 66:210000 - 217FFF(32kword) */
0x218000L, /* Block 67:218000 - 21FFFF(32kword) */
0x220000L, /* Block 68:220000 - 227FFF(32kword) */
0x228000L, /* Block 69:228000 - 22FFFF(32kword) */
0x230000L, /* Block 70:230000 - 237FFF(32kword) */
0x238000L, /* Block 71:238000 - 23FFFF(32kword) */
0x240000L, /* Block 72:240000 - 247FFF(32kword) */
0x248000L, /* Block 73:248000 - 24FFFF(32kword) */
0x250000L, /* Block 74:250000 - 257FFF(32kword) */
0x258000L, /* Block 75:258000 - 25FFFF(32kword) */
0x260000L, /* Block 76:260000 - 267FFF(32kword) */
0x268000L, /* Block 77:268000 - 26FFFF(32kword) */
0x270000L, /* Block 78:270000 - 277FFF(32kword) */
0x278000L, /* Block 79:278000 - 27FFFF(32kword) */
0x280000L, /* Block 80:280000 - 287FFF(32kword) */
0x288000L, /* Block 81:288000 - 28FFFF(32kword) */
0x290000L, /* Block 82:290000 - 297FFF(32kword) */
0x298000L, /* Block 83:298000 - 29FFFF(32kword) */
0x2A0000L, /* Block 84:2A0000 - 2A7FFF(32kword) */
0x2A8000L, /* Block 85:2A8000 - 2AFFFF(32kword) */
0x2B0000L, /* Block 86:2B0000 - 2B7FFF(32kword) */
0x2B8000L, /* Block 87:2B8000 - 2BFFFF(32kword) */
0x2C0000L, /* Block 88:2C0000 - 2C7FFF(32kword) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -