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

📄 f29lv160.c

📁 xscale pxa255 bootloader 程序
💻 C
字号:
#include "mylib.h"


int  Flash_SectorErase(U32 Sector)
{
	U32 i;
	U16 tmp;
	gFlash16[0x555]=0xAA;  gFlash16[0x2AA]=0x55;
	gFlash16[0x555]=0x80;  gFlash16[0x555]=0xAA;
	gFlash16[0x2AA]=0x55;  gFlash16[Sector]=0x30;
	
	i = 10000;
	while(i--);

	for(i=0; i<0x1000000; i++)
	{
		tmp=gFlash16[Sector];
		
		if(tmp&0x80)
			return 0;
			
		if(tmp&0x20)
		{
			tmp = gFlash16[Sector];
			if(tmp&0x80)
				return 0;
			else
				return -1;
		}
	}
	
	return -1;
}

int SectorErase(U32 secadd)
{
	int ret;
	if(secadd < 0x8000)
	{
		ret = Flash_SectorErase(0);
		ret += Flash_SectorErase(0x2000);
	    ret +=Flash_SectorErase(0x3000);
		ret +=Flash_SectorErase(0x4000);	
	} 
	else
	{
		ret = Flash_SectorErase(secadd);
	}
	return ret;
}
int Flash_WriteWord(U32 Addr, U16 Data)
{
	U32 i;
	U16 tmp;
	
	gFlash16[0x555]=0xAA;  gFlash16[0x2AA]=0x55;
	gFlash16[0x555]=0xA0;  gFlash16[Addr]=Data;

	for(i = 0; i < 0x100000; i++)
	{
		tmp = gFlash16[Addr];
		if( tmp  == Data )
			return 0;
	}
	
	return -1;
}


int Erase_Flash(U32 startaddr, U32 len)
{
	U32 addr;

	
	startaddr &= 0x7fff;
	
	for(addr = startaddr; addr < len + startaddr; addr += 0x8000)
	{
		if( SectorErase(addr) )
		{
			printf("SectorErase fail add=0x%x\r\n", addr);
			return -1;
		} 
		else 
		{
			printf("SectorErase success add=0x%x\r\n", addr);
		}	
	}
	return 0;

}

int Write_Flash64K(U32 addr, void *buf, U32 len)
{
	U32 i, wlen = 0;
	U16 *pbuf = (U16*)buf;

			
	addr &= 0x7fff;
	printf("\r\n");
	
	while(len) 
	{
		
		wlen = len < 0x8000? len: 0x8000;
		len -= wlen;
		if(SectorErase(addr))
		{
			printf("SectorErase fail add=0x%x\r\n", addr);
			return -1;
		}
		
		for (i = 0; i < wlen; i++)
		{
			if(Flash_WriteWord(addr+i, *pbuf++) )
			{
				printf("write word fail add=0x%x\r\n", addr+i);
				return -1;			
			}
			
		}
		
		addr +=wlen;
		printf(".");	
	}
	printf(".\r\n");
	return 0;

}


⌨️ 快捷键说明

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