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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fat.c

?? 7s64mp3系統開發軟件
?? C
字號:
/************************************************************/
/*		 SD Code for   AT91SAM7S64						*/
/*				By   pasyong								*/
/*					2006-5									*/
/*				Base IAR 4.30A						*/
/************************************************************/
#include <string.h>
#include "sd.h"
#include "fat.h"
#include "uart.h"
#include "3310.h"
extern uchar BUFFER[512];
unsigned char  LONGNAME_BUFFER_ADDR[30];
unsigned char  DIRNAME_BUFFER_ADDR[30];
 unsigned char *LongNameBuffer =		(unsigned char *) LONGNAME_BUFFER_ADDR;
unsigned char *DirNameBuffer =		(unsigned char *) DIRNAME_BUFFER_ADDR;
struct partrecord *PartInfo;
unsigned char Fat32Enabled;
unsigned long FirstDataSector;
unsigned int  BytesPerSector;
unsigned int  SectorsPerCluster;
unsigned long FirstFATSector;
unsigned long FirstDirSector;
unsigned long FileSize;
unsigned long FatInCache = 0;

//********************************************************************************************
//讀一個扇區
void ReadBlock(unsigned long LBA)
//********************************************************************************************
{   unsigned long temp;
    temp=LBA<<9;
    SD_Read_Block(temp);
}
/*-----------------------------------------------------------------------
 查詢數據區一個簇開始扇區號
-----------------------------------------------------------------------*/
unsigned long fatClustToSect(unsigned long clust)
{
	return ((clust-2) * SectorsPerCluster) + FirstDataSector;
}
/*-----------------------------------------------------------------------
 查詢一個簇所占扇區數
-----------------------------------------------------------------------*/
unsigned int fatClusterSize(void)
{
	// return the number of sectors in a disk cluster
	return SectorsPerCluster;
}
/*-----------------------------------------------------------------------
查詢SD卡文件系統信息
-----------------------------------------------------------------------*/
unsigned char fatInit()
{       unsigned int data;unsigned char t1,t2;
        unsigned char PartType;
        unsigned long StartLBA,FATsecs,Size;
	//struct bpb710 *bpb;
	// 讀MBR結構
	ReadBlock(0);
	// 讀取分區表信息
	//PartInfo = ((struct partrecord *) ((struct partsector *)BUFFER)->psPart);
	// 讀引導扇區
	// 引導扇區號在PartInfo.prStartLBA中
        PartType=BUFFER[450];
        Size=BUFFER[458]+(BUFFER[459]<<8)+(BUFFER[460]<<16)+(BUFFER[461]<<24);
        StartLBA=BUFFER[454]+(BUFFER[455]<<8)+(BUFFER[456]<<16)+(BUFFER[457]<<24);
        ReadBlock(StartLBA);  //FAT32時是99號扇區

        //bpb = (struct bpb710 *) ((struct bootsector710 *) BUFFER)->bsBPB;

	FirstDataSector=StartLBA;     //FirstDataSector	= PartInfo->prStartLBA;
	
        FATsecs=BUFFER[22]+(BUFFER[23]<<8);//bpb->bpbFATsecs
        if(FATsecs)//bpb->bpbFATsecs
	{
		// bpbFATsecs非0,為FAT16,FAT表所占的扇區數在bpbFATsecs里
	   FirstDataSector	+= BUFFER[14]+(BUFFER[15]<<8)+BUFFER[16]*FATsecs;
          //FirstDataSector	+= bpb->bpbResSectors + bpb->bpbFATs * bpb->bpbFATsecs;
	}
	else
	{
		// bpbFATsecs是0,為FAT32,FAT表所占的扇區數在bpbBigFATsecs里
	  FirstDataSector	+= BUFFER[14]+(BUFFER[15]<<8)+BUFFER[16]*(BUFFER[36]+(BUFFER[37]<<8)+(BUFFER[38]<<16)+(BUFFER[39]<<24));
          //FirstDataSector	+= bpb->bpbResSectors + bpb->bpbFATs * bpb->bpbBigFATsecs;
	}
	
	SectorsPerCluster	=BUFFER[13]; //bpb->bpbSecPerClust;
	BytesPerSector		=BUFFER[11]+(BUFFER[12]<<8); //bpb->bpbBytesPerSec;
	FirstFATSector		=BUFFER[14]+(BUFFER[15]<<8)+StartLBA; //bpb->bpbResSectors + PartInfo->prStartLBA;
//查詢SD卡文件系統分區類型
	switch (PartType)//PartInfo->prPartType
	{
		case PART_TYPE_DOSFAT16:
		case PART_TYPE_FAT16:
		case PART_TYPE_FAT16LBA:
			// 第一個目錄扇區號為2
			FirstDirSector	= CLUST_FIRST;
			//FirstDataSector += (bpb->bpbRootDirEnts)/DIRENTRIES_PER_SECTOR;
			Fat32Enabled = 0;
			
			break;
		case PART_TYPE_FAT32LBA:
		case PART_TYPE_FAT32:
			
			FirstDirSector =BUFFER[44]+(BUFFER[45]<<8)+(BUFFER[46]<<16)+(BUFFER[47]<<24); //bpb->bpbRootClust;
			Fat32Enabled = 1;
			break;
		default:break;
			//return 1;
	}
//查詢SD卡文件系統信息
	switch (PartType)
	{
		case PART_TYPE_DOSFAT16:
				LCD_write_english_string(0,0,"DOSFAT 16");
				break;
		case PART_TYPE_FAT16:
				LCD_write_english_string(0,0,"FAT16 ");
				break;
		case PART_TYPE_FAT16LBA:
				LCD_write_english_string(0,0,"FAT16 LBA");
				break;
		case PART_TYPE_FAT32LBA:
				LCD_write_english_string(0,0,"FAT32 LBA");
				break;
		case PART_TYPE_FAT32:
				LCD_write_english_string(0,0,"FAT32");
				break;
		default:
				LCD_write_english_string(0,0,"No Partition!");
				break;
	}
   //顯示磁盤容量
  data=Size>>11;
    LCD_set_XY(56,0);
    t1=data/100;
	LCD_write_char(t1+48);
	data=data%100;
	t1=data/10;
	LCD_write_char(t1+48);
	t2=data%10;
	LCD_write_char(t2+48);
	LCD_write_english_string(76,0,"M");
    LCD_write_english_string(0,1,"RATE");
	
        return 0;	
}

/*-----------------------------------------------------------------------
查詢一個文件的開始簇
-----------------------------------------------------------------------*/
unsigned long fatGetDirEntry(unsigned char entry)
{
        unsigned char offentry,offsetsector,n;
		unsigned long temp;
        offsetsector=entry/16;
        offentry=entry%16;
	// read dir data
        ReadBlock(fatClustToSect(FirstDirSector)+offsetsector);
		//for( w=0;w<512;w++)
		   //putchar(BUFFER[w]);
        n=offentry*32;
    temp=((unsigned long)BUFFER[26+n])+((unsigned long)BUFFER[27+n]<<8) +((unsigned long)BUFFER[20+n] << 16)+((unsigned long)BUFFER[21+n]<<24);
     //文件的起始簇地址
    if((BUFFER[0+n] == 0x00)||(BUFFER[0+n] == 0xE5))
    return 0;
    else
      return temp;
	
}



/*-----------------------------------------------------------------------
 在FAT表中查詢下一個簇所在扇區號
-----------------------------------------------------------------------*/
unsigned long fatNextCluster(unsigned long cluster)
{
	unsigned long nextCluster;
	unsigned long fatMask;
	unsigned long fatOffset;
	unsigned long sector;
	unsigned int offset;
	
	if(Fat32Enabled)
	{
		// 一個表項為4bytes(32 bits)
		fatOffset = cluster << 2;
		// 設置 FAT32 bit mask
		fatMask = FAT32_MASK;
	}
	else
	{
		// 一個表項為2bytes(16 bits)
		fatOffset = cluster << 1;
		// 設置 FAT16 bit mask
		fatMask = FAT16_MASK;
	}
	
	//計算FAT扇區號
	sector = FirstFATSector + (fatOffset / BytesPerSector);
	//計算FAT扇區號中表項的偏移地址
	offset = fatOffset % BytesPerSector;

	ReadBlock(sector);

	// 讀取下一個簇號
	nextCluster = (*((unsigned long*) &((char*)BUFFER)[offset])) & fatMask;

	// 是否文件的結束簇
	if (nextCluster == (CLUST_EOFE & fatMask))
		nextCluster = 0;
		
	return nextCluster;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线一区二区三区四区五区| 国产91丝袜在线播放0| 欧美日韩一区 二区 三区 久久精品| 亚洲天堂网中文字| 欧美在线你懂得| 日韩高清在线不卡| 精品欧美乱码久久久久久1区2区 | 亚洲日本欧美天堂| 不卡av免费在线观看| 亚洲欧洲综合另类| 欧美精品欧美精品系列| 麻豆精品在线看| 久久久精品国产免费观看同学| 国产传媒久久文化传媒| 亚洲日本va在线观看| 欧美三级日韩在线| 国内精品自线一区二区三区视频| 国产精品毛片a∨一区二区三区| 不卡av电影在线播放| 亚洲v精品v日韩v欧美v专区| 日韩欧美一级特黄在线播放| 国产成人av电影免费在线观看| 亚洲免费在线看| 精品国产制服丝袜高跟| 91一区在线观看| 男女性色大片免费观看一区二区 | 国产亚洲欧美在线| 色婷婷久久久综合中文字幕| 奇米影视一区二区三区| 国产精品国产三级国产aⅴ中文 | 久久精品久久久精品美女| 国产精品久久国产精麻豆99网站 | 日韩美一区二区三区| 成人永久免费视频| 日韩精品视频网| 亚洲天天做日日做天天谢日日欢| 日韩免费高清av| 在线视频国内一区二区| 韩国女主播一区二区三区| 亚洲男人天堂av| 精品国产乱码久久久久久蜜臀| 日本精品视频一区二区| 国产精品1024| 欧美aaaaaa午夜精品| 亚洲制服欧美中文字幕中文字幕| 久久精品人人做人人爽人人| 777奇米四色成人影色区| 94色蜜桃网一区二区三区| 国产麻豆精品在线观看| 日本最新不卡在线| 一区二区三区四区国产精品| 欧美国产日韩亚洲一区| 欧美xxxxxxxxx| 5月丁香婷婷综合| 欧美日韩中文字幕精品| 99久久精品情趣| 不卡的av电影| 成人午夜激情影院| 国产美女精品一区二区三区| 男人的天堂亚洲一区| 日韩成人一级大片| 天天爽夜夜爽夜夜爽精品视频| 一区二区在线免费观看| 亚洲视频在线观看一区| 一区二区中文字幕在线| 国产日韩欧美高清| 日本一区二区三区dvd视频在线| 日韩欧美在线123| 777久久久精品| 欧美另类高清zo欧美| 欧美揉bbbbb揉bbbbb| 欧美中文字幕一二三区视频| 91精品办公室少妇高潮对白| 91香蕉视频mp4| 日本精品视频一区二区三区| 91福利国产成人精品照片| 色成人在线视频| 欧美在线视频全部完| 欧美日韩二区三区| 欧美一区二区三区精品| 精品国产一区二区三区av性色| 日韩欧美一区电影| 久久久久久97三级| 亚洲国产成人一区二区三区| 国产精品久久久久久福利一牛影视| 国产精品久久久久影院色老大| 亚洲欧美在线视频观看| 亚洲免费色视频| 亚洲成av人片观看| 麻豆视频观看网址久久| 国产乱一区二区| 北岛玲一区二区三区四区| 色综合久久久久综合体| 欧美日韩综合在线免费观看| 欧美日韩国产高清一区二区三区| 91麻豆精品国产91久久久久| 日韩欧美在线网站| 中文一区二区完整视频在线观看| 亚洲日本va午夜在线影院| 亚洲一区二区三区四区五区中文| 日韩和的一区二区| 国产在线麻豆精品观看| 99精品热视频| 69堂成人精品免费视频| 国产日韩欧美精品综合| 亚洲午夜免费福利视频| 麻豆91免费看| 99精品热视频| 日韩欧美专区在线| 亚洲同性gay激情无套| 青青草国产精品97视觉盛宴| 国产黄色精品视频| 欧美偷拍一区二区| 精品国产91亚洲一区二区三区婷婷 | 欧美精品自拍偷拍动漫精品| 精品国产一区二区三区四区四| 日韩一区在线看| 蜜桃av一区二区在线观看| 成人sese在线| 日韩色在线观看| 亚洲日本在线看| 国内精品嫩模私拍在线| 欧美亚洲国产一区二区三区va | 国产一区在线不卡| 欧洲色大大久久| 中文字幕av一区二区三区高| 五月婷婷久久综合| 91视频在线看| 久久久久久久久99精品| 日韩黄色免费电影| 91久久精品一区二区| 久久久久久久久久久久电影 | 奇米四色…亚洲| 91视频国产观看| 欧美va亚洲va香蕉在线 | 日本人妖一区二区| 91日韩精品一区| 久久精品人人做人人综合| 亚洲午夜激情网页| 91浏览器在线视频| 亚洲国产精品成人久久综合一区| 另类人妖一区二区av| 91国内精品野花午夜精品| 日本一区二区动态图| 狠狠色丁香久久婷婷综| 欧美丰满一区二区免费视频| 一区二区三区欧美视频| av在线不卡观看免费观看| 欧美激情一区二区三区四区| 国模娜娜一区二区三区| 91麻豆精品国产91久久久久久久久 | 欧美网站大全在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 国产成人精品免费一区二区| 精品国产乱码91久久久久久网站| 性久久久久久久久| 欧美性色综合网| 亚洲午夜一二三区视频| 91一区一区三区| 亚洲激情欧美激情| 色综合欧美在线| 中文字幕中文字幕在线一区 | 欧美色偷偷大香| 亚洲精品国产品国语在线app| 99久久er热在这里只有精品15 | 日韩视频在线一区二区| 日韩黄色一级片| 日韩欧美国产精品| 免费美女久久99| 日韩丝袜情趣美女图片| 激情亚洲综合在线| 久久久激情视频| a级高清视频欧美日韩| 亚洲欧美电影一区二区| 在线观看日韩一区| 污片在线观看一区二区| 欧美精品777| 男人的天堂亚洲一区| 精品国产一区二区三区久久久蜜月 | 亚洲午夜免费电影| 91精品国产综合久久精品app| 香蕉影视欧美成人| 日韩一二在线观看| 国产成人综合亚洲91猫咪| 国产精品毛片久久久久久| 色8久久人人97超碰香蕉987| 亚洲自拍偷拍av| 精品久久久网站| 成人激情校园春色| 亚洲欧美二区三区| 91精品国模一区二区三区| 极品销魂美女一区二区三区| 国产日韩欧美亚洲| 欧美性视频一区二区三区| 另类小说视频一区二区| 国产精品久久久久婷婷| 欧美性一二三区| 国产一区91精品张津瑜| 亚洲另类在线视频| 欧美一区二区日韩一区二区|