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

📄 loadcfg.c

📁 nand flash烧写源代码
💻 C
字号:
/* * Configfile parsing. */#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <sys/mman.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include "include.h"#define CFG_FIELD_NUM 10static np_data np;extern struct nand_oobinfo oob_64[];const char CFG_FIELD[][30]={	"CPUTYPE",	"BUSWIDTH",				"ROWCYCLES",			"PAGESIZE",			"PAGEPERBLOCK",			"OOBSIZE",	"BADBLOCKPOS",	"BADBLOCKPAGE",	"ECCTYPE",	"[END]",};np_data * load_cfg(void){	FILE *fp;	char line[100];	unsigned short i,j;	unsigned int d;	if ((fp = fopen("nandprog.cfg", "r"))==NULL)	{		printf("Can not open configration file!\n");		return 0;	}		while(!strstr(line, "[NANDPROG]"))     //find the nandprog section!	{		if (feof(fp))		{			printf("nand programmer configration file illege!\n");			return 0;		}		fscanf(fp,"%s",line);	}	while(1)	{		if (feof(fp))		{			printf("nand programmer configration file illege!\n");			return 0;		}		fscanf(fp,"%s",line);		if (line[0]==';') 		{			line[0]='\0';			continue;		}		for (i=0;i<CFG_FIELD_NUM;i++)			if (strstr(line,CFG_FIELD[i])) break;				switch (i)		{		case 0:		//CPUTYPE			while (!feof(fp))			{				fscanf(fp,"%s",line);				if (strstr(line,"JZ4730"))				{					np.pt = JZ4730;					break;				}				else  if  (strstr(line,"JZ4740"))				{					np.pt = JZ4740;					break;				}				else	continue;			}			break;		case 1:		//BUSWIDTH			while (!feof(fp))			{				fscanf(fp,"%d",&d);				if (d!=8 && d!=16) continue;				np.bw = d;				break;			}			break;		case 2:		//ROWCYCLES			while (!feof(fp))			{				fscanf(fp,"%d",&d);				if (d!=3 && d!=2) continue;				np.rc = d;				break;			}			break;		case 3:		//PAGESIZE			while (!feof(fp))			{				fscanf(fp,"%d",&d);				if (d!=2048 && d!=512) continue;				np.ps = d;				break;			}			break;		case 4:		//PAGEPERBLOCK			while (!feof(fp))			{				fscanf(fp,"%d",&d);				if (d!=128 && d!=64) continue;				np.ppb = d;				break;			}			break;		case 5:		//OOBSIZE			while (!feof(fp))			{				fscanf(fp,"%d",&d);				if (d!=16 && d!=64) continue;				np.os = d;				break;			}			break;		case 6:		//BADBLOCKPOS			while (!feof(fp))			{				fscanf(fp,"%d",&d);				if (d>2048) continue;				np.bbp = d;				break;			}			break;		case 7:		//BADBLOCKPAGE			while (!feof(fp))			{				fscanf(fp,"%d",&d);				if (d>np.ppb) continue;				np.bba = d;				break;			}			break;		case 8:		//ECCTYPE			while (!feof(fp))			{				fscanf(fp,"%s",line);				if (strstr(line,"RS"))				{					np.et = HARDRS;					d = 36;     //36 bytes ecc					oob_64[4].eccbytes = 36;					np.ep = 4;					break;				}				else  if  (strstr(line,"HM"))				{					np.et = HARDHM;					d = 24;     //24 bytes ecc					oob_64[4].eccbytes = 24;					np.ep = 4;					break;				}				else	continue;			}			while (!feof(fp))			{				fscanf(fp,"%s",line);				if (strstr(line,"{")) break;			}			for (j = 0;j < d;j++)			{				if (feof(fp)) 				{					printf("nand programmer configration file illege!\n");					return 0;				}				fscanf(fp,"%d",&d);				if (d > np.os) 				{					printf("nand programmer configration file illege!\n");					return 0;				}				oob_64[4].eccpos[j] = d;			}			while (!feof(fp))			{				fscanf(fp,"%s",line);				if (strstr(line,"}")) break;			}			break;		case 9:						return &np;		default:			;		}	}}

⌨️ 快捷键说明

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