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

📄 flash.c

📁 凌阳公司机sunplus1002在这个芯片下
💻 C
📖 第 1 页 / 共 3 页
字号:
/*#include "config.h"#include "regmap.h"#include "global.h"#include "sio.h"#include "epp.h"#include "cpu.h"#include "gpio.h"#include "user_init.h"#include "uartsup.h"*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <cyg/hal/types.h>#include <cyg/kernel/kapi.h>#include "custom.h"#include "gpio.h"//#define BOOTLOADER_CODESIZE 0/*#include "graph.h"*/#include "flash.h"//Yvonne_flash_050720#ifdef UPGRADE_SUCCESS_NEW_UI  //added by liuchuanyi 051202.extern void Show_Upgrade_Success(); #endif// Added by houyiwu 9/18/2004 for defining SPHE1000#ifndef SPHE1000#include "ver.h"#endif#if defined(SUPPORT_1M_FLASH)	#ifdef _NONUNIFORM64K_SECTOR_IN_FLASH		#if defined( MX29LV800T ) || defined( MX29LV800B )		#define MAX_SECTORS 19		#elif defined( AT49BV802AT ) || defined( AT49BV802A )		#define MAX_SECTORS 23		#else		//Other Flash		#endif	#else		#define MAX_SECTORS 16	#endif	#ifdef _NONUNIFORM64K_SECTOR_IN_FLASH		#if defined(MX29LV800T)		const FLASHRANGE FlashRange[] =		{			{0x000000,0x00FFFF},	/*SA0  64K*/ 			{0x010000,0x01FFFF},	/*SA1  64K*/ 			{0x020000,0x02FFFF},	/*SA2  64K*/			{0x030000,0x03FFFF},	/*SA3  64K*/ 			{0x040000,0x04FFFF},	/*SA4  64K*/ 			{0x050000,0x05FFFF},	/*SA5  64K*/ 			{0x060000,0x06FFFF},	/*SA6  64K*/ 			{0x070000,0x07FFFF},	/*SA7  64K*/ 			{0x080000,0x08FFFF},	/*SA8  64K*/ 			{0x090000,0x09FFFF},	/*SA9  64K*/			{0x0A0000,0x0AFFFF},	/*SA10 64K*/			{0x0B0000,0x0BFFFF},	/*SA11 64K*/			{0x0C0000,0x0CFFFF},	/*SA12 64K*/			{0x0D0000,0x0DFFFF},	/*SA13 64K*/			{0x0E0000,0x0EFFFF},	/*SA14 64K*/			{0x0F0000,0x0F7FFF},	/*SA15 16K*/			{0x0F8000,0x0F9FFF},	/*SA16  8K*/			{0x0FA000,0x0FBFFF},	/*SA17  8K*/			{0x0FC000,0x0FFFFF}	/*SA18 32K*/		};		#elif defined(MX29LV800B)		const FLASHRANGE FlashRange[] =		{			{0x000000,0x003FFF},	/*SA0  16K*/ 			{0x004000,0x005FFF},	/*SA1  8K*/ 			{0x006000,0x007FFF},	/*SA2  8K*/			{0x008000,0x00FFFF},	/*SA3  32K*/ 			{0x010000,0x01FFFF},	/*SA4  64K*/ 			{0x020000,0x02FFFF},	/*SA5  64K*/ 			{0x030000,0x03FFFF},	/*SA6  64K*/ 			{0x040000,0x04FFFF},	/*SA7  64K*/ 			{0x050000,0x05FFFF},	/*SA8  64K*/ 			{0x060000,0x06FFFF},	/*SA9  64K*/			{0x070000,0x07FFFF},	/*SA10 64K*/			{0x080000,0x08FFFF},	/*SA11 64K*/			{0x090000,0x09FFFF},	/*SA12 64K*/			{0x0A0000,0x0AFFFF},	/*SA13 64K*/			{0x0B0000,0x0BFFFF},	/*SA14 64K*/			{0x0C0000,0x0CFFFF},	/*SA15 64K*/			{0x0D0000,0x0DFFFF},	/*SA16 64K*/			{0x0E0000,0x0EFFFF},	/*SA17 64K*/			{0x0F0000,0x0FFFFF}	/*SA18 64K*/              };		#elif defined( AT49BV802AT ) 		const FLASHRANGE FlashRange[] =		{			{0x000000,0x00FFFF},	/*SA0  64K*/ 			{0x010000,0x01FFFF},	/*SA1  64K*/ 			{0x020000,0x02FFFF},	/*SA2  64K*/			{0x030000,0x03FFFF},	/*SA3  64K*/ 			{0x040000,0x04FFFF},	/*SA4  64K*/ 			{0x050000,0x05FFFF},	/*SA5  64K*/ 			{0x060000,0x06FFFF},	/*SA6  64K*/ 			{0x070000,0x07FFFF},	/*SA7  64K*/ 			{0x080000,0x08FFFF},	/*SA8  64K*/ 			{0x090000,0x09FFFF},	/*SA9  64K*/			{0x0A0000,0x0AFFFF},	/*SA10 64K*/			{0x0B0000,0x0BFFFF},	/*SA11 64K*/			{0x0C0000,0x0CFFFF},	/*SA12 64K*/			{0x0D0000,0x0DFFFF},	/*SA13 64K*/			{0x0E0000,0x0EFFFF},	/*SA14 64K*/			{0x0F0000,0x0F1FFF},	/*SA15  8K*/			{0x0F2000,0x0F3FFF},	/*SA16  8K*/			{0x0F4000,0x0F5FFF},	/*SA17  8K*/			{0x0F6000,0x0F7FFF},	/*SA18  8K*/			{0x0F8000,0x0F9FFF},	/*SA19  8K*/			{0x0FA000,0x0FBFFF},	/*SA20  8K*/			{0x0FC000,0x0FDFFF},	/*SA21  8K*/			{0x0FE000,0x0FFFFF}	/*SA22  8K*/		};		#elif defined( AT49BV802A )			const FLASHRANGE FlashRange[] =		{			{0x000000,0x001FFF},	/*SA0   8K*/			{0x002000,0x003FFF},	/*SA1   8K*/			{0x004000,0x005FFF},	/*SA2   8K*/			{0x006000,0x007FFF},	/*SA3   8K*/			{0x008000,0x009FFF},	/*SA4   8K*/			{0x00A000,0x00BFFF},	/*SA5   8K*/			{0x00C000,0x00DFFF},	/*SA6   8K*/			{0x00E000,0x00FFFF}	/*SA7   8K*/			{0x010000,0x01FFFF},	/*SA8   64K*/ 			{0x020000,0x02FFFF},	/*SA9   64K*/			{0x030000,0x03FFFF},	/*SA10 64K*/ 			{0x040000,0x04FFFF},	/*SA11 64K*/ 			{0x050000,0x05FFFF},	/*SA12 64K*/ 			{0x060000,0x06FFFF},	/*SA13 64K*/ 			{0x070000,0x07FFFF},	/*SA14 64K*/ 			{0x080000,0x08FFFF},	/*SA15 64K*/ 			{0x090000,0x09FFFF},	/*SA16 64K*/			{0x0A0000,0x0AFFFF},	/*SA17 64K*/			{0x0B0000,0x0BFFFF},	/*SA18 64K*/			{0x0C0000,0x0CFFFF},	/*SA19 64K*/			{0x0D0000,0x0DFFFF},	/*SA20 64K*/			{0x0E0000,0x0EFFFF},	/*SA21 64K*/			{0x0F0000,0x0FFFFF}	/*SA22 64K*/		};		#else		#endif	#else	//64K per Sector	#if 0	const FLASHRANGE FlashRange[] =	{		{0x000000,0x00FFFF},	 //SA0  64K		{0x010000,0x01FFFF},	//SA1  64K 		{0x020000,0x02FFFF},	//SA2  64K		{0x030000,0x03FFFF},	//SA3  64K 		{0x040000,0x04FFFF},	//SA4  64K 		{0x050000,0x05FFFF},	//SA5  64K 		{0x060000,0x06FFFF},	//SA6  64K 		{0x070000,0x07FFFF},	//SA7  64K 		{0x080000,0x08FFFF},	//SA8  64K 		{0x090000,0x09FFFF},	//SA9  64K		{0x0A0000,0x0AFFFF},	//SA10 64K		{0x0B0000,0x0BFFFF},	//SA11 64K		{0x0C0000,0x0CFFFF},	//SA12 64K		{0x0D0000,0x0DFFFF},	//SA13 64K		{0x0E0000,0x0EFFFF},	//SA14 64K		{0x0F0000,0x0FFFFF}	//SA15 64K	};	#endif	#endif#elif defined(SUPPORT_2M_FLASH)	#ifdef _NONUNIFORM64K_SECTOR_IN_FLASH		#if defined( MX29LV160CT ) || defined( MX29LV160CB )		//MX29LV160CT(Top)/CB(Bottom)		#define MAX_SECTORS 35		#else		#endif	#else	#define MAX_SECTORS 32	#endif		#ifdef _NONUNIFORM64K_SECTOR_IN_FLASH		#if defined( MX29LV160CT )		//MX29LV160CT Top		const FLASHRANGE FlashRange[] =		{			{0x000000,0x00FFFF},	/*SA0  64K*/ 			{0x010000,0x01FFFF},	/*SA1  64K*/ 			{0x020000,0x02FFFF},	/*SA2  64K*/			{0x030000,0x03FFFF},	/*SA3  64K*/ 			{0x040000,0x04FFFF},	/*SA4  64K*/ 			{0x050000,0x05FFFF},	/*SA5  64K*/ 			{0x060000,0x06FFFF},	/*SA6  64K*/ 			{0x070000,0x07FFFF},	/*SA7  64K*/ 			{0x080000,0x08FFFF},	/*SA8  64K*/ 			{0x090000,0x09FFFF},	/*SA9  64K*/			{0x0A0000,0x0AFFFF},	/*SA10 64K*/			{0x0B0000,0x0BFFFF},	/*SA11 64K*/			{0x0C0000,0x0CFFFF},	/*SA12 64K*/			{0x0D0000,0x0DFFFF},	/*SA13 64K*/			{0x0E0000,0x0EFFFF},	/*SA14 64K*/			{0x0F0000,0x0FFFFF},	/*SA15 64K*/			{0x100000,0x10FFFF},	/*SA16 64K*/			{0x110000,0x11FFFF},	/*SA17 64K*/			{0x120000,0x12FFFF},	/*SA18 64K*/			{0x130000,0x13FFFF},	/*SA19 64K*/			{0x140000,0x14FFFF},	/*SA20 64K*/			{0x150000,0x15FFFF},	/*SA21 64K*/			{0x160000,0x16FFFF},	/*SA22 64K*/			{0x170000,0x17FFFF},	/*SA23 64K*/			{0x180000,0x18FFFF},	/*SA24 64K*/			{0x190000,0x19FFFF},	/*SA25 64K*/			{0x1A0000,0x1AFFFF},	/*SA26 64K*/			{0x1B0000,0x1BFFFF},	/*SA27 64K*/			{0x1C0000,0x1CFFFF},	/*SA28 64K*/			{0x1D0000,0x1DFFFF},	/*SA29 64K*/			{0x1E0000,0x1EFFFF},	/*SA30 64K*/			{0x1F0000,0x1F7FFF},	/*SA31 32K*/			{0x1F8000,0x1F9FFF},	/*SA32  8K*/			{0x1FA000,0x1FBFFF},	/*SA33  8K*/			{0x1FC000,0x1FFFFF}	/*SA34 16K*/		};		#elif defined( MX29LV160CB )		//MX29LV160CB Bottom		const FLASHRANGE FlashRange[] =		{			{0x000000,0x003FFF},	/*SA0  16K*/ 			{0x004000,0x005FFF},	/*SA1  8K*/ 			{0x006000,0x007FFF},	/*SA2  8K*/			{0x008000,0x00FFFF},	/*SA3  32K*/ 			{0x010000,0x01FFFF},	/*SA4  64K*/ 			{0x020000,0x02FFFF},	/*SA5  64K*/ 			{0x030000,0x03FFFF},	/*SA6  64K*/ 			{0x040000,0x04FFFF},	/*SA7  64K*/ 			{0x050000,0x05FFFF},	/*SA8  64K*/ 			{0x060000,0x06FFFF},	/*SA9  64K*/			{0x070000,0x07FFFF},	/*SA10 64K*/			{0x080000,0x08FFFF},	/*SA11 64K*/			{0x090000,0x09FFFF},	/*SA12 64K*/			{0x0A0000,0x0AFFFF},	/*SA13 64K*/			{0x0B0000,0x0BFFFF},	/*SA14 64K*/			{0x0C0000,0x0CFFFF},	/*SA15 64K*/			{0x0D0000,0x0DFFFF},	/*SA16 64K*/			{0x0E0000,0x0EFFFF},	/*SA17 64K*/			{0x0F0000,0x0FFFFF},	/*SA18 64K*/			{0x100000,0x10FFFF},	/*SA19 64K*/			{0x110000,0x11FFFF},	/*SA20 64K*/			{0x120000,0x12FFFF},	/*SA21 64K*/			{0x130000,0x13FFFF},	/*SA22 64K*/			{0x140000,0x14FFFF},	/*SA23 64K*/			{0x150000,0x15FFFF},	/*SA24 64K*/			{0x160000,0x16FFFF},	/*SA25 64K*/			{0x170000,0x17FFFF},	/*SA26 64K*/			{0x180000,0x18FFFF},	/*SA27 64K*/			{0x190000,0x19FFFF},	/*SA28 64K*/			{0x1A0000,0x1AFFFF},	/*SA29 64K*/			{0x1B0000,0x1BFFFF},	/*SA30 64K*/			{0x1C0000,0x1CFFFF},	/*SA31 64K*/			{0x1D0000,0x1DFFFF},	/*SA32 64K*/			{0x1E0000,0x1EFFFF},	/*SA33 64K*/			{0x1F0000,0x1FFFFF}	/*SA34 64K*/		};		#endif	#else	//64K per Sector	#endif#elif defined(SUPPORT_4M_FLASH)//xsyan add 2006-08-12	#ifdef _NONUNIFORM64K_SECTOR_IN_FLASH		#if defined( S29GL032MSOTAIR4 )			#define MAX_SECTORS 71		#endif	#else		#define MAX_SECTORS 67	#endif		#ifdef _NONUNIFORM64K_SECTOR_IN_FLASH		#if defined( S29GL032MSOTAIR4 )		//BOTTOM		const FLASHRANGE FlashRange[] =		{			{0x000000,0x001FFF},	/*SA0  8K*/ 			{0x002000,0x003FFF},	/*SA1  8K*/ 			{0x004000,0x005FFF},	/*SA2  8K*/ 			{0x006000,0x007FFF},	/*SA3  8K*/ 			{0x008000,0x009FFF},	/*SA4  8K*/ 			{0x00A000,0x00BFFF},	/*SA5  8K*/ 						{0x00C000,0x00DFFF},	/*SA6  8K*/ 			{0x00E000,0x0FFFFF},	/*SA7  8K*/ 			{0x010000,0x01FFFF},	/*SA8  64K*/ 			{0x020000,0x02FFFF},	/*SA9  64K*/ 			{0x030000,0x03FFFF},	/*SA10  64K*/ 			{0x040000,0x04FFFF},	/*SA11  64K*/ 			{0x050000,0x05FFFF},	/*SA12  64K*/ 			{0x060000,0x06FFFF},	/*SA13  64K*/ 			{0x070000,0x07FFFF},	/*SA14  64K*/ 			{0x080000,0x08FFFF},	/*SA15  64K*/ 			{0x090000,0x09FFFF},	/*SA16  64K*/ 			{0x0A0000,0x0AFFFF},	/*SA17  64K*/ 			{0x0B0000,0x0BFFFF},	/*SA18  64K*/ 			{0x0C0000,0x0CFFFF},	/*SA19  64K*/ 			{0x0D0000,0x0DFFFF},	/*SA20  64K*/ 			{0x0E0000,0x0EFFFF},	/*SA21  64K*/ 			{0x0F0000,0x0FFFFF},	/*SA22  64K*/ 			{0x100000,0x00FFFF},	/*SA23  64K*/ 			{0x110000,0x11FFFF},	/*SA24  64K*/ 			{0x120000,0x12FFFF},	/*SA25  64K*/ 			{0x130000,0x13FFFF},	/*SA26  64K*/ 			{0x140000,0x14FFFF},	/*SA27  64K*/ 			{0x150000,0x15FFFF},	/*SA28  64K*/ 			{0x160000,0x16FFFF},	/*SA29  64K*/ 			{0x170000,0x17FFFF},	/*SA30  64K*/ 			{0x180000,0x18FFFF},	/*SA31  64K*/ 			{0x190000,0x19FFFF},	/*SA32  64K*/ 			{0x1A0000,0x1AFFFF},	/*SA33  64K*/ 			{0x1B0000,0x1BFFFF},	/*SA34  64K*/ 			{0x1C0000,0x1CFFFF},	/*SA35  64K*/ 			{0x1D0000,0x1DFFFF},	/*SA36  64K*/ 			{0x1E0000,0x1EFFFF},	/*SA37  64K*/ 						{0x1F0000,0x1FFFFF},	/*SA38  64K*/ 						{0x200000,0x20FFFF},	/*SA39  64K*/ 			{0x210000,0x21FFFF},	/*SA40  64K*/ 			{0x220000,0x22FFFF},	/*SA41  64K*/ 			{0x230000,0x23FFFF},	/*SA42  64K*/ 			{0x240000,0x24FFFF},	/*SA43  64K*/ 			{0x250000,0x25FFFF},	/*SA44  64K*/ 			{0x260000,0x26FFFF},	/*SA45  64K*/ 			{0x270000,0x27FFFF},	/*SA46  64K*/ 			{0x280000,0x28FFFF},	/*SA47  64K*/ 			{0x290000,0x29FFFF},	/*SA48  64K*/ 			{0x2A0000,0x2AFFFF},	/*SA49  64K*/ 			{0x2B0000,0x2BFFFF},	/*SA50  64K*/ 			{0x2C0000,0x2CFFFF},	/*SA51  64K*/ 			{0x2D0000,0x2DFFFF},	/*SA52  64K*/ 			{0x2E0000,0x2EFFFF},	/*SA53  64K*/ 			{0x2F0000,0x2FFFFF},	/*SA54  64K*/ 						{0x300000,0x30FFFF},	/*SA55  64K*/ 			{0x310000,0x31FFFF},	/*SA56  64K*/ 			{0x320000,0x32FFFF},	/*SA57  64K*/ 			{0x330000,0x33FFFF},	/*SA58  64K*/ 			{0x340000,0x34FFFF},	/*SA59  64K*/ 			{0x350000,0x35FFFF},	/*SA60  64K*/ 			{0x360000,0x36FFFF},	/*SA61  64K*/ 			{0x370000,0x37FFFF},	/*SA62  64K*/ 			{0x380000,0x38FFFF},	/*SA63  64K*/ 			{0x390000,0x39FFFF},	/*SA64  64K*/ 			{0x3A0000,0x3AFFFF},	/*SA65  64K*/ 			{0x3B0000,0x3BFFFF},	/*SA66  64K*/ 			{0x3C0000,0x3CFFFF},	/*SA67  64K*/ 						{0x3D0000,0x3DFFFF},	/*SA68  64K*/ 			{0x3E0000,0x3EFFFF},	/*SA69  64K*/ 			{0x3F0000,0x3FFFFF}	/*SA70  64K*/ 						};	#endif	#endif	#endifextern void     FSGUI_FillFrameBuf(int x,int y, int xSize,int ySize,UINT16 color_Y,UINT16 color_CrCb);extern void     FSGUI_ShowString(int x, int y, const char *s, BYTE iY, UINT16 iCbCr);unsigned short int cmdFlash[][3] = //should be global, not const{    //  UNLOCK1_ADDR,   UNLOCK2_ADDR,   CMD_OFFSET    {   0x555,  0x2AA,      0x555   }, //MX29F040, A29040A    {   0x5555, 0x2AAA,     0x5555  }, //SST39SF040, SST39VF040, AT49F040, AM29F040    {   0xAAA,  0x555,      0xAAA   }, //MX29F800TB, MX29LV800T	{   0xAAAA, 0x5554,     0xAAAA  }, //AT49F8192AT, AT49F8011};unsigned char iCmd=0;BYTE    cur_idM;    //A1A0(00):manufacturer codeBYTE    cur_idD;    //A1A0(01):device code/*void ShowUpgradeOK(int x, int y, int xSize, int ySize, BYTE color_Y, UINT16 color_CrCb){    int i, j;	for (j = y; j < y + ySize; j++)	{		for (i = x; i < x + xSize; i++)		{			*Y_XY(i, j) = (color_Y) & 0xff;			*C_XY(i, j) = color_CrCb;		}	}}*/void FlashDelay(int n){  while (n--)  {    asm volatile ("\		.set noreorder;		\		li $2,32;	\	1:	addiu $2,-1; 		\

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -