⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 64m_16e.c

📁 SLICION7的Flash驱动程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************
*
*   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 + -