亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? yboot.c

?? 嵌入式linux yaffs文件系統(tǒng)源代碼
?? C
字號:
/* * YAFFS: Yet another FFS. A NAND-flash specific file system. * yboot: A yaffs bootloader. * * Copyright (C) 2002 Aleph One Ltd. * * Created by Charles Manning <charles@aleph1.co.uk> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * */#include <string.h>#include <stdio.h>#include "yaffs_guts.h"const char *yboot_c_version="$Id: yboot.c,v 1.1 2003/01/21 03:32:17 charles Exp $";#define MAX_FILE_SIZE	4000000#define MAX_CHUNKS	(MAX_FILE_SIZE/YAFFS_BYTES_PER_CHUNK + 1)static int chunkLocations[MAX_CHUNKS];// External functions for ECC on datavoid nand_calculate_ecc (const unsigned char*dat, unsigned char*ecc_code);int nand_correct_data (unsigned char*dat, unsigned char*read_ecc, unsigned char*calc_ecc);static const char yaffs_countBits[256] ={0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8};static void spareToTags(yaffs_Spare *spare, yaffs_Tags *tag){	unsigned char *bytes = (char *)tag;	bytes[0] = spare->tagByte0;	bytes[1] = spare->tagByte1;	bytes[2] = spare->tagByte2;	bytes[3] = spare->tagByte3;	bytes[4] = spare->tagByte4;	bytes[5] = spare->tagByte5;	bytes[6] = spare->tagByte6;	bytes[7] = spare->tagByte7;}// yboot_ScanForFile findsstatic int yaffsboot_ScanForFile(yaffs_Device *dev, const char *fileName){	int pg;	int blk;	yaffs_ObjectHeader data;	yaffs_Spare spare;	yaffs_Tags tags;	if (!fileName)	{		//printf("NULL filename\n");		return -1;	}	//printf("Searching block range %d to %d for %s\n", dev->startBlock, dev->endBlock, fileName);	for (blk = dev->startBlock; blk < dev->endBlock; blk++)	{			for (pg = 0; pg < YAFFS_CHUNKS_PER_BLOCK; pg++)		{			dev->readChunkFromNAND(dev, (blk*YAFFS_CHUNKS_PER_BLOCK) + pg, (__u8 *)&data, (yaffs_Spare *)&spare);			if (yaffs_countBits[spare.blockStatus] >=7 && // block OK				yaffs_countBits[spare.pageStatus] >= 7)   // page ok			{				spareToTags(&spare, &tags);								if ( tags.chunkId == 0 &&  // it's a header				     data.parentObjectId == YAFFS_OBJECTID_ROOT && // it's in the root				     strcmp(data.name, fileName) == 0 // name matches				)				{					//printf("%s found at chunk %x objectId is %x\n", fileName, blk* YAFFS_PAGES_PER_BLOCK + pg, tag.objectId);										return tags.objectId;				}			}		}	}	// Sad day... not found.	// printf("%s not found\n",filename);	return -1;}static unsigned char bufferData[YAFFS_BYTES_PER_CHUNK];static int bufferPos = 0;static int bufferChunk = 0;static int bufferInitialised = 0;static int bufferLength = 0;static yaffs_Device *bufferDevice;static int chunkEnd = -1;static int topChunk = -1;static int fileSize = -1;int yaffsboot_InitFile(yaffs_Device *dev, const char *fileName,int *loadedFileSize){	yaffs_Spare spare;	yaffs_Tags  tags;	int fileObjId;	int i;		int blk;	int pg;	int missing;	int chunksMissing = 0;	bufferDevice = dev;			fileObjId = yaffsboot_ScanForFile(dev,fileName);	if(fileObjId < 0)	{		return -1;	}		//printf("Gathering chunks...\n");		for (i = 0; i < MAX_CHUNKS; i++)	{		chunkLocations[i] = -1;	}	for (blk = dev->startBlock; blk <= dev->endBlock; blk++)	{		for (pg = 0; pg < YAFFS_CHUNKS_PER_BLOCK; pg++)		{			dev->readChunkFromNAND(dev, blk * YAFFS_CHUNKS_PER_BLOCK + pg, NULL, &spare);			if (yaffs_countBits[spare.blockStatus] >= 7 &&			    yaffs_countBits[spare.pageStatus] >= 7)			{				spareToTags(&spare, &tags);				if (tags.objectId == fileObjId && tags.chunkId > 0)				{					if(tags.chunkId >= MAX_CHUNKS)					{						printf("Chunk %d out of bounds (max is %d)\n",tags.chunkId, MAX_CHUNKS - 1);						return -1;					}					chunkLocations[tags.chunkId] = (blk*32) + pg;										chunkEnd = (tags.chunkId -1) * YAFFS_BYTES_PER_CHUNK + tags.byteCount;										if(chunkEnd > fileSize) fileSize = chunkEnd;    										if(tags.chunkId > topChunk) topChunk = tags.chunkId;				}			}		}	}	for (missing= 0, i= 1; i<= topChunk; i++)	{		if (chunkLocations[i] < 0)		{			//printf("chunk %x missing\n",i);			chunksMissing++;		}	}	*loadedFileSize = fileSize;		return fileObjId;}int yaffsboot_Reinitialise(void){	bufferInitialised = 0;	return 0;}int yaffsboot_ReadByte(unsigned char *bPtr){	if(!bufferInitialised)	{		//printf("Read buffer initialisation\n");		bufferInitialised = 1;		bufferChunk = 0;		bufferLength = 0;		bufferPos = -1;	}	if(bufferPos < 0)	{		bufferChunk++;		if(bufferChunk> topChunk)		{			printf("Chunk %d past end of file\r\n",bufferChunk);			return -1;		}		if (chunkLocations[bufferChunk] < 0)		{				printf("No chunk %d, zero page\n",bufferChunk);				memset(bufferData,0,YAFFS_BYTES_PER_CHUNK);				bufferLength = YAFFS_BYTES_PER_CHUNK;		}		else		{			yaffs_Spare localSpare;			yaffs_Tags tags;			__u8 calcEcc[3];			bufferDevice->readChunkFromNAND(bufferDevice, chunkLocations[bufferChunk], bufferData, &localSpare);			spareToTags(&localSpare, &tags);			if(0 && bufferChunk <topChunk)			{				bufferLength = YAFFS_BYTES_PER_CHUNK;			}			else			{				bufferLength = tags.byteCount;			}			//printf("Read chunk %d, size %d bytes\n",bufferChunk,bufferLength);			nand_calculate_ecc(bufferData,calcEcc);			nand_correct_data (bufferData,localSpare.ecc1, calcEcc);			nand_calculate_ecc(&bufferData[256],calcEcc);			nand_correct_data (&bufferData[256],localSpare.ecc2, calcEcc);		}		bufferPos = 0;		if(bufferLength <= bufferPos)		{			return -1;		}	}	*bPtr = bufferData[bufferPos];	bufferPos++;	if(bufferPos >= bufferLength)	{		//printf("End of page %d at byte %d\r\n",bufferChunk,bufferLength);		bufferPos = -1;	}	return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费久久精品视频| 一区二区三区免费网站| 精品一区二区三区日韩| 精品久久久久久久久久久久包黑料| 日韩精品国产欧美| 日韩欧美国产综合| 国产一区二三区好的| 欧美国产日产图区| 一本色道**综合亚洲精品蜜桃冫| 亚洲综合成人网| 欧美久久一二区| 韩国精品久久久| 国产精品色噜噜| 在线观看91视频| 久久精品国产精品青草| 国产精品免费观看视频| 在线视频欧美精品| 激情六月婷婷久久| 亚洲视频一二区| 欧美精品123区| 国产福利91精品| 亚洲欧美一区二区三区极速播放| 欧美日韩精品高清| 国产一区 二区| 亚洲一区二区三区国产| xf在线a精品一区二区视频网站| gogo大胆日本视频一区| 日韩制服丝袜av| 日本一区二区三区电影| 欧美日韩国产经典色站一区二区三区| 狠狠色综合播放一区二区| 亚洲人成网站影音先锋播放| 宅男在线国产精品| 不卡在线观看av| 免费在线看成人av| 1区2区3区国产精品| 欧美va天堂va视频va在线| 91蜜桃在线观看| 激情成人综合网| 亚洲午夜久久久| 国产欧美va欧美不卡在线| 91精品国产欧美一区二区18| 不卡免费追剧大全电视剧网站| 日韩av一级电影| 亚洲精品国久久99热| 国产三级精品在线| 日韩午夜在线播放| 欧美色图天堂网| 99国产精品99久久久久久| 韩国成人精品a∨在线观看| 亚洲线精品一区二区三区| 欧美国产精品一区二区| 精品蜜桃在线看| 欧美日韩免费一区二区三区视频| a在线播放不卡| 国产成人h网站| 精品在线视频一区| 男女视频一区二区| 亚洲小说欧美激情另类| 一区二区视频在线看| 国产精品久久午夜夜伦鲁鲁| 久久久久久久综合色一本| 欧美一级黄色大片| 欧美美女一区二区三区| 精品视频一区二区三区免费| 色综合 综合色| 97久久超碰精品国产| www.日本不卡| 北岛玲一区二区三区四区| 国产成人亚洲综合a∨猫咪| 国模冰冰炮一区二区| 久久精品国产一区二区| 久久精品国产77777蜜臀| 日本免费在线视频不卡一不卡二| 午夜欧美2019年伦理| 五月天激情小说综合| 偷拍与自拍一区| 婷婷丁香激情综合| 肉丝袜脚交视频一区二区| 亚洲电影一级黄| 日韩专区在线视频| 日本亚洲三级在线| 久久电影网站中文字幕| 狠狠色狠狠色综合日日91app| 久久精品国产亚洲a| 国产最新精品免费| 国产一区美女在线| 成人av在线资源网| 日本韩国一区二区三区| 在线日韩一区二区| 欧美一区二区免费视频| 精品国产sm最大网站免费看| 久久久天堂av| 国产精品久久久久影视| 夜色激情一区二区| 日韩影院精彩在线| 国产一区二区三区在线观看免费视频| 国产成人无遮挡在线视频| 99久久精品国产麻豆演员表| 日本高清不卡一区| 日韩一区二区三区四区五区六区| 精品国产凹凸成av人网站| 国产精品国产成人国产三级| 亚洲精品国产高清久久伦理二区| 亚洲成人av电影在线| 久久av中文字幕片| eeuss鲁片一区二区三区| 欧美另类变人与禽xxxxx| 久久久亚洲国产美女国产盗摄| 中文字幕一区二区三区不卡| 午夜精品视频一区| 国产福利精品一区| 91国产免费观看| 精品第一国产综合精品aⅴ| 国产精品网友自拍| 午夜久久电影网| 成人网页在线观看| 欧美另类变人与禽xxxxx| 久久精品欧美一区二区三区不卡| 亚洲人123区| 国内成+人亚洲+欧美+综合在线| 色综合久久久久网| 久久色在线观看| 亚洲国产成人porn| 91激情五月电影| 精品国产乱码91久久久久久网站| 亚洲卡通动漫在线| 国产精品一区久久久久| 欧美伊人久久大香线蕉综合69| 久久综合九色欧美综合狠狠 | 青椒成人免费视频| 丁香婷婷综合网| 日韩精品一区二区在线观看| 亚洲欧美日韩国产另类专区| 国产自产视频一区二区三区| 欧美日韩中文字幕精品| 国产精品无遮挡| 捆绑变态av一区二区三区| 欧洲色大大久久| 国产精品免费网站在线观看| 美国十次了思思久久精品导航| 日本黄色一区二区| 国产精品久久看| 国产精品一色哟哟哟| 欧美一区二区三区在| 亚洲一二三四久久| 99视频国产精品| 日本一区二区三区四区| 韩国成人福利片在线播放| 欧美一区二区三区不卡| 一区二区三区国产豹纹内裤在线| 成人动漫一区二区在线| 国产日韩欧美制服另类| 久久国产婷婷国产香蕉| 91精品国产91综合久久蜜臀| 亚洲成av人片在www色猫咪| 91麻豆国产自产在线观看| 国产精品色哟哟网站| 粉嫩在线一区二区三区视频| 久久久久久久久久久电影| 狠狠色综合日日| 久久先锋影音av鲁色资源| 精品午夜一区二区三区在线观看 | 视频一区欧美日韩| 欧美乱熟臀69xxxxxx| 偷窥少妇高潮呻吟av久久免费| 欧美中文字幕亚洲一区二区va在线 | 精品一区二区三区免费观看| 日韩小视频在线观看专区| 麻豆一区二区在线| 日韩欧美不卡在线观看视频| 麻豆极品一区二区三区| 欧美v日韩v国产v| 国产一区不卡在线| 日本一二三四高清不卡| av一本久道久久综合久久鬼色| 中文字幕亚洲视频| 色综合久久中文字幕| 亚洲国产精品一区二区久久 | 免费在线观看不卡| 欧美一级黄色录像| 国产真实乱偷精品视频免| 久久久久久久久99精品| 国产精品77777| 中文字幕亚洲在| 欧美视频在线一区| 亚洲成人www| 精品国产一区二区三区不卡| 国产99一区视频免费| 亚洲婷婷在线视频| 欧美日本韩国一区二区三区视频| 免费高清在线视频一区·| 久久精品在这里| 91久久一区二区| 免费精品视频在线| 国产精品免费人成网站| 在线观看国产91| 国产综合成人久久大片91| 亚洲色图视频网站| 日韩一区二区免费电影|