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

📄 nflash.c

📁 umon bootloader source code, support mips cpu.
💻 C
字号:
#include "config.h"
#if INCLUDE_NOR_FLASH_S29GL128M90 || INCLUDE_NOR_FLASH_S29GL064A90

#include "nflash.h"

char *NflashHelp[] = {
	"Nor flash memory operations",
	"{op} [args]",
	"Ops...",
	"  erase rnge",
	"  id",
	"  write {dest} {src} {byte_cnt}",
	"  read {dest} {src} {byte_cnt}",
	"",
	"  rnge = range of affected sectors",
	"   Range syntax examples: <1> <1-5> <1,3,7> <all>",
	0,
};

/* Nflash():
 *	Code that handles the user interface.  See SflashHelp[] below for usage.
 */
int
Nflash(int argc,char *argv[])
{
	int	snum, ret,rslt,i,step,process;
	long	dest,src, bytecnt;
	short *tmp;

	if(argc <2)
		return CMD_PARAM_ERROR;
	
	if (strcmp(argv[1],"erase") == 0)
	{
		if (argc != 3) {
			ret = CMD_PARAM_ERROR;
		}
		else {
			for(snum=0;snum<NOR_FLASH_SECTOR_NUMBER;snum++) {
				if ((argv[2] == 0) || inRange(argv[2],snum)) {
					printf("erase sector %d...",snum);
					ticktock();
					if(NorFlashErase(snum))
						printf("OK\n");
					else
						printf("Error\n");
				}
			}
		}
	}
	else if (strcmp(argv[1],"id") == 0) {
		int id;
		id = NorFlashRdID();
		
   		 printf("Norflash id =  0x%x\n",id);
   		// if ()
	    //		printf("It's Intel Strata flash, type is 28F640J3.\n");
    		//else
	   	//	printf("Unknown nor flash device.\n");
	}
	else if (strcmp(argv[1],"write") == 0) {
		if (argc == 5) {
			dest = strtoul(argv[2],(char **)0,0);
			src = strtoul(argv[3],(char **)0,0);
			bytecnt = (long)strtoul(argv[4],(char **)0,0);

			tmp = (short *)src;
			
			step = bytecnt/200;
			process = 0;
			for(snum=0;snum<=(bytecnt +1);snum+=2)
			{
				NorFlashProg(dest+snum, *tmp++);

				if(snum>=process)
	  			{
					putchar('*');
					process += step;
	  			}
	
			}
				
			printf("write sucessful\n");
		}
		else
			ret = CMD_PARAM_ERROR;
	}
	else if (!strcmp(argv[1],"read")) {
		if (argc == 5) {
			dest = strtoul(argv[2],(char **)0,0);
			src = strtoul(argv[3],(char **)0,0);
			bytecnt = (long)strtoul(argv[4],(char **)0,0);

			tmp = (short *)dest;
			NorFlashRdData(src, tmp, bytecnt/2+1);   
			
		}
		else
			ret = CMD_PARAM_ERROR;
	}
	return(ret);
}
/*
char *SetipHelp[] = {
	"Write Mac and IP address into flash",
	"setip <macaddr> <ipaddr>",
	"Mac format:	xx:xx:xx:xx:xx:xx",
	"IP format:	xxx.xxx.xxx.xxx",
	0,
};
*/
/* Setiph():
 *	Write Mac and IP address into flash
 */
 /*
int
Setip(int argc,char *argv[])
{
	int	snum, ret,rslt,i;
	long	dest,src, bytecnt;

	if (argc != 3) {
		ret = CMD_PARAM_ERROR;
	}
	else {
		printf("Erase 127\n");
		SflashSecErase(127);
		printf("Write Mac address into 0x%x...\n",FLASH_MAC_ADDR);
		SflashProgByte(FLASH_MAC_ADDR, argv[1], 20);
		printf("Write IP address into 0x%x...\n",FLASH_IP_ADDR);
		SflashProgByte(FLASH_IP_ADDR, argv[2], 20);
	}

	return(ret);
}
*/

#endif

⌨️ 快捷键说明

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