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

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

?? filesystem.c

?? 使用VC模擬一個(gè)在單片機(jī)內(nèi)部FLASH的順序文件系統(tǒng)
?? C
字號(hào):
#include "stdio.h"
#include "stdlib.h"
#include "type.h"

#include "filesystem.h"

#include "flash.h"
#include "main.h"




/****************************************************************************************************/
//以下為文件系統(tǒng)需要的變量和函數(shù)

FILE_HEAD fileFlash[1];			
FILE_HEAD fileHost[1];	
FILE_OPEN fileOpenTmp[1];
uint16 filePtr,fileNextPtr,fileEndPtr;
uint16 fileTmpLen;


uint8 FILEHeadCompare()
{
	if(	fileFlash->dirID[0] != fileHost->dirID[0]	||		
		fileFlash->dirID[1] != fileHost->dirID[1]	||
		fileFlash->fileID[0] != fileHost->fileID[0]	||
		fileFlash->fileID[1] != fileHost->fileID[1]	)
	{
		return FILE_HEAD_NOT_EQU;
	}
	return FILE_HEAD_EQU;
}

// 參數(shù) mode:  0-> FREE文件 1 ->普通文件
uint8 FILELocateID(uint8 mode)
{
	filePtr = FILE_BASE_ADDR;	
	/* 讀取filePtr處的文件頭信息 */
	FLASHRead(filePtr,(uint8 *)fileFlash,8);	
	do
	{		
		/* 驗(yàn)證當(dāng)前文件頭信息的正確性 */
		if(fileFlash->type > TEA_TYPE) return FILE_LOCATE_ERR;			/* 文件頭信息錯(cuò)誤,返回*/
		// 需要定位的對(duì)象不同,讀取到FREE文件的時(shí)候返回結(jié)果有所區(qū)別		
		if(fileFlash->type == FREE_TYPE) 
		{
			if(mode == 0)
			{
				return FILE_LOCATE_OK;		/* 定位到FREE文件,返回*/
			}
			else
			{
				return FILE_LOCATE_END;	/* 定位到FREE文件,返回*/
			}
		}		
		if(FILE_HEAD_NOT_EQU == FILEHeadCompare((uint8 *)fileFlash,(uint8 *)fileHost))
		{			
			// 定位下一個(gè)文件的地址,并讀取該文件的頭信息到fileFlash
FILELocateID_FindNext:
			fileNextPtr = filePtr;
			if(FILE_LOCATE_ERR == FILELocateNext())
			{
				return FILE_LOCATE_ERR;									/* 如果下一個(gè)文件的地址定位出錯(cuò),返回定位錯(cuò)誤 */
			}
			filePtr = fileNextPtr;
			continue;
		}
		// 文件頭信息相同的情況下有一個(gè)特殊,存在著0000,0000的非FREE文件
		if(mode == FILE_LOCATE_FREE)
		{
			// 需要定位的不是FREE文件,雖然ID相同,但是type不同 繼續(xù)尋找下一個(gè)文件
			goto FILELocateID_FindNext;				
		}
		return FILE_LOCATE_OK;											/* 找到匹配ID */
	}while(1);
	
	return FILE_LOCATE_ERR;												/* 文件系統(tǒng)出錯(cuò) */		
}

void FILEInit()
{
	uint16 i;
	for(i=0;i<16 * 1024;i+=512)
	{
		FLASHPageErase(i);
	}	
	RamSet((uint8 *)fileFlash, 0, 8);
	fileFlash->length[0] = 0x20;
	FLASHWrite(FILE_BASE_ADDR, (uint8 *)fileFlash,8);	
}

uint8 FILEList(uint8 mode)
{
	uint8	i=0;
	if(mode == 0)
	{
		filePtr = FILE_BASE_ADDR;
	}	
	do
	{
		FLASHRead(filePtr,(uint8 *)fileFlash, 8);
		if(fileFlash->type > TEA_TYPE) return FILE_LIST_ERR;		
		
		RamCopy(sysTemp + i,(uint8 *)fileFlash,8);
		i += 8;
		if(i==64)
		{
			return FILE_LIST_OK;	
		}
		if(fileFlash->type == FREE_TYPE)  return FILE_LIST_OK;
		filePtr += 8;	/* 文件頭信息長(zhǎng)度 */
		filePtr += fileFlash->length[0] * 256 + fileFlash->length[1];
		if(filePtr > FILE_END_ADDR) return FILE_LIST_ERR;
	}while(1);

}

uint8 FILECreateItem()
{
	// 檢測(cè)flash中是否存在相同的FILE
	switch (FILELocateID(FILE_LOCATE_FILE))
	{	
	case FILE_LOCATE_OK:
		return ERROR_INDEX;								// 返回參數(shù)錯(cuò)誤
		break;
	case FILE_LOCATE_ERR:
		return ERROR_PROGRAM;						// 返回程序錯(cuò)誤
		break;
	case FILE_LOCATE_END:
		// FLASH中沒(méi)有發(fā)現(xiàn)相同ID的文件,開(kāi)始創(chuàng)建文件
		// 調(diào)用FILELocateID 后 filePtr保存當(dāng)前文件頭信息的首地址
		// 從filePtr處開(kāi)始清空FLASH,長(zhǎng)度為頭文件長(zhǎng)度(8) + 文件長(zhǎng)度 + free文件長(zhǎng)度(8)
		fileTmpLen = 16;
		fileTmpLen += fileHost->length[0] * 256;
		fileTmpLen += fileHost->length[1];
		FLASHClear(filePtr,fileTmpLen);

		FLASHWrite(filePtr,(uint8 *)fileHost,8);		// 寫入文件頭信息
		filePtr += fileTmpLen;
		filePtr -= 8;

		// 準(zhǔn)備寫入FREE文件 
		// fileFlash中存放的是原來(lái)的FREE文件信息,所以只要更新一下文件剩余長(zhǎng)度即可
		fileTmpLen = FILE_END_ADDR -filePtr;
		fileFlash->length[0] = fileTmpLen >> 8;
		fileFlash->length[1] = fileTmpLen & 0x00ff;
		FLASHWrite(filePtr,(uint8 *)fileFlash,8);		// 寫入FREE文件

		return RIGHT_TOKEN;			//文件創(chuàng)建成功
		break;
	}
}

uint8 FILELocateNext()
{
	// 由fileNextPtr決定,下一個(gè)文件
	fileNextPtr += 8;
	fileNextPtr += fileFlash->length[0] * 256;
	fileNextPtr += fileFlash->length[1];
	// 判斷下一個(gè)文件的有效性
	if(fileNextPtr > FILE_END_ADDR)
	{
		return FILE_LOCATE_ERR;
	}
	FLASHRead(fileNextPtr,(uint8 *)fileFlash,8);
	if(fileFlash->type > TEA_TYPE)	return FILE_LOCATE_ERR;
	if (fileFlash->type == FREE_TYPE) return FILE_LOCATE_END;
	return FILE_LOCATE_OK;			// 定位正確
}
// 刪除fileHost中指定的文件
uint8 FILEDelt()
{
	uint16 fileIndex1,fileIndex2;
	//定位文件
	switch(FILELocateID(FILE_LOCATE_FILE))
	{
	case FILE_LOCATE_OK:
		//找到匹配文件 確認(rèn)權(quán)限后 刪除

		//定位下一個(gè)文件的位置
		fileNextPtr = filePtr;
		switch (FILELocateNext())
		{
		case FILE_LOCATE_OK:
			// 下一個(gè)文件有效,進(jìn)行刪除操作
			// 為了加快flash移動(dòng)速度,定位FREE文件地址
			fileIndex1 = filePtr;
			fileIndex2 = fileNextPtr;
			RamSet((uint8 *)fileHost,0,8);		// 清空f(shuō)ileHost中的文件ID信息,準(zhǔn)備查找free文件地址
			if(FILE_LOCATE_OK !=FILELocateID(FILE_LOCATE_FREE))
			{
				// 沒(méi)有找到FREE文件
				return ERROR_PROGRAM;
			}
			// FREE文件定位正確
			fileTmpLen = filePtr - fileIndex2;	// 需要移動(dòng)數(shù)據(jù)的長(zhǎng)度
			fileTmpLen += 8;							// 把FREE文件一起移動(dòng),便于重新定位,更新				
			FLASHMove(fileIndex1,fileIndex2,fileTmpLen);
			// 重新定位free文件,更改剩余空間長(zhǎng)度 			
			FILELocateID(FILE_LOCATE_FREE);
			fileTmpLen = FILE_END_ADDR - filePtr;
			fileFlash->length[0] = fileTmpLen >>8 ;
			fileFlash->length[1] = fileTmpLen & 0x00ff;
			FLASHUpdate(filePtr,(uint8 *)fileFlash,8);
			return RIGHT_TOKEN;
			break;
		case FILE_LOCATE_ERR:				
			// 文件系統(tǒng)錯(cuò)誤,返回程序錯(cuò)誤
			return ERROR_PROGRAM;
			break;
		case FILE_LOCATE_END:
			// 下一個(gè)文件是FREE文件,直接把FREE文件覆蓋到filePtr處
			// 簡(jiǎn)化操作
			RamSet((uint8 *)fileFlash,0,8);
			fileTmpLen = FILE_END_ADDR -filePtr;
			fileFlash->length[0] = fileTmpLen >> 8;
			fileFlash->length[1] = fileTmpLen & 0x00ff;
			FLASHUpdate(filePtr,(uint8 *)fileFlash,8);
			return RIGHT_TOKEN;		// 操作正確
			break;
		}
		break;	
	case FILE_LOCATE_ERR:
		// 文件系統(tǒng)錯(cuò)誤,返回程序錯(cuò)誤
		return ERROR_PROGRAM;
		break;
	case FILE_LOCATE_END:
		// 沒(méi)有匹配文件,返回參數(shù)錯(cuò)誤
		return ERROR_INDEX;
		break;
	}
}

uint8 FILEOpen()
{
	switch (FILELocateID(FILE_LOCATE_FILE))
	{
	case FILE_LOCATE_OK:
		// 找到文件
		fileOpenTmp->address = filePtr + 8;
		fileOpenTmp->length = fileFlash->length[0] * 256 + fileFlash->length[1];
		fileOpenTmp->authority = fileFlash->authority;
		fileOpenTmp->type = fileFlash->type;
		return RIGHT_TOKEN;
		break;
	case FILE_LOCATE_ERR:
		// 文件系統(tǒng)錯(cuò)誤
		return ERROR_PROGRAM;
		break;
	case FILE_LOCATE_END:
		// 找不到文件
		return ERROR_INDEX;
		break;
	}
}

uint8 FILERead()
{
	// 檢驗(yàn)是否已經(jīng)打開(kāi)文件
	if((fileOpenTmp->address = 0) || (fileOpenTmp->address > FILE_END_ADDR))
	{
		return ERROR_NOTOPEN;			// 未打開(kāi)文件
	}

	// 檢驗(yàn)權(quán)限
	

	// 判斷參數(shù)是否正確



}


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区精品欧美日韩一区二区三区| 欧美成人精精品一区二区频| 亚洲国产日产av| 欧美本精品男人aⅴ天堂| 成人av资源网站| 免费一级欧美片在线观看| 国产精品国产三级国产aⅴ无密码| 欧美日韩高清一区二区| 成人97人人超碰人人99| 麻豆国产精品官网| 一区二区三区不卡视频在线观看| 精品国产一区二区精华| 欧美午夜宅男影院| 成人综合婷婷国产精品久久| 日本不卡视频在线观看| 亚洲曰韩产成在线| 亚洲欧洲日本在线| 国产亚洲美州欧州综合国| 日韩欧美综合在线| 欧美在线999| 91网站在线观看视频| 国产成人一区在线| 久久成人久久爱| 日本午夜精品一区二区三区电影| 亚洲欧美日韩国产一区二区三区| 久久久国产精品麻豆| 日韩三级视频中文字幕| 欧美精选在线播放| 欧美日韩免费电影| 欧美亚洲日本国产| 在线免费观看日本欧美| 91浏览器打开| 北岛玲一区二区三区四区| 国产成人8x视频一区二区| 国产一区二区三区久久久| 极品尤物av久久免费看| 美女网站一区二区| 精品一区二区三区香蕉蜜桃 | 日韩一级大片在线观看| 日本丰满少妇一区二区三区| 91在线一区二区三区| 97久久精品人人爽人人爽蜜臀| 成人av影视在线观看| 不卡一区中文字幕| 99天天综合性| 一本大道综合伊人精品热热 | 免费人成在线不卡| 日韩电影在线观看电影| 青青草91视频| 蜜桃91丨九色丨蝌蚪91桃色| 久草精品在线观看| 国产精品 欧美精品| 成人免费av网站| va亚洲va日韩不卡在线观看| 日本韩国欧美一区| 欧美久久久影院| 精品久久一二三区| 国产欧美一区二区在线观看| 亚洲欧美综合色| 亚洲一区二区视频| 轻轻草成人在线| 国产剧情一区在线| 99热这里都是精品| 欧美日韩视频在线第一区| 日韩亚洲欧美一区| 国产色产综合色产在线视频| 国产精品成人一区二区艾草 | 色哟哟一区二区三区| 欧美伊人久久久久久午夜久久久久| 欧美日韩极品在线观看一区| 制服.丝袜.亚洲.中文.综合| 2023国产精华国产精品| 中文字幕永久在线不卡| 亚洲综合另类小说| 精品一区二区在线看| 91啪亚洲精品| 欧美变态tickle挠乳网站| 欧美激情艳妇裸体舞| 一区二区三区国产精华| 精品日韩在线观看| 色综合久久99| 91精品国产aⅴ一区二区| 久久这里只有精品视频网| 国产精品国产三级国产有无不卡| 夜夜嗨av一区二区三区网页 | 91一区一区三区| 欧美日韩精品免费| 欧美激情综合网| 五月天丁香久久| 国产成人免费av在线| 欧美日韩国产成人在线免费| 久久精品夜色噜噜亚洲a∨| 亚洲一区中文在线| 国产电影精品久久禁18| 欧美精品精品一区| 日韩理论片在线| 国产一区二区三区香蕉| 欧美三区免费完整视频在线观看| 久久综合久久综合亚洲| 亚洲超碰97人人做人人爱| 国产传媒欧美日韩成人| 777午夜精品免费视频| 国产精品国产三级国产| 男男视频亚洲欧美| 91视频免费播放| 亚洲午夜久久久久久久久电影院| 美腿丝袜在线亚洲一区| 欧美三级日韩三级国产三级| 国产精品久久久久久久岛一牛影视| 日韩电影免费在线看| 在线一区二区三区| 国产精品视频观看| 韩国欧美国产一区| 欧美精品第一页| 亚洲一区二区三区在线播放| 懂色av中文字幕一区二区三区| 日韩欧美国产成人一区二区| 亚洲www啪成人一区二区麻豆| 91在线观看污| 欧美韩国一区二区| 国产iv一区二区三区| 欧美精品一区二区不卡| 麻豆中文一区二区| 5858s免费视频成人| 亚洲午夜日本在线观看| 91官网在线免费观看| 国产精品沙发午睡系列990531| 麻豆91精品视频| 91精品国产丝袜白色高跟鞋| 亚洲成精国产精品女| 91视频国产资源| 亚洲美女在线一区| www.综合网.com| 国产精品久久久久永久免费观看| 国产美女视频一区| 久久亚洲捆绑美女| 国产精品原创巨作av| 2020国产精品| 国产制服丝袜一区| 久久综合狠狠综合| 国内久久婷婷综合| 国产日韩一级二级三级| 国产99久久久精品| 1区2区3区精品视频| 成人精品一区二区三区中文字幕| 国产精品视频在线看| 成人短视频下载| 国产精品视频一二三| 91日韩精品一区| 午夜激情一区二区三区| 日韩欧美一二三| 国产一区二区美女| 国产精品毛片a∨一区二区三区| 成人av动漫网站| 亚洲精品成a人| 欧美日韩国产乱码电影| 蜜臀99久久精品久久久久久软件| 久久这里只有精品6| 不卡av电影在线播放| 亚洲一区在线视频观看| 91精品欧美一区二区三区综合在| 久久99精品国产麻豆不卡| 欧美激情一区三区| 欧美视频在线一区| 激情文学综合丁香| 日韩一区欧美一区| 欧美日韩精品一区二区在线播放| 天堂蜜桃91精品| 国产三级欧美三级| 色噜噜夜夜夜综合网| 日本不卡在线视频| 国产欧美一区二区在线观看| 欧洲精品在线观看| 经典三级在线一区| 亚洲欧美激情小说另类| 日韩美女在线视频| av电影在线观看一区| 日韩成人dvd| 国产精品女主播av| 欧美高清激情brazzers| 国产98色在线|日韩| 香蕉乱码成人久久天堂爱免费| 久久久精品免费网站| 欧美日韩精品二区第二页| 国产91在线看| 免费观看日韩电影| 国产精品进线69影院| 日韩网站在线看片你懂的| 97久久超碰国产精品| 国产一区二区三区美女| 性做久久久久久久久| 最近中文字幕一区二区三区| 日韩午夜在线播放| 欧美在线视频你懂得| 国产激情偷乱视频一区二区三区| 亚洲mv在线观看| 国产精品久久久久9999吃药| 欧美大胆人体bbbb| 欧美日韩一区二区三区视频| 成人一区二区三区视频|