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

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

?? fat16.c

?? 對u盤硬件接口編程源碼
?? C
字號:
/////////////////////////////////////////////////////////////////
//
// Copyright (c) 2004 
// All rights reserved
// 
// Author	:	frank_wang     frank_wang@263.net
// Created	:	JUN 23th 2004
// Modified	:
// Revision	:	ARM7+D12,
// Usage	:	 USB DISK ,SCSI-2
/////////////////////////////////////////////////////////////////

//#include "def.h"

#include "Fat16.h"
#include "Flash.h"
//數(shù)據(jù)結(jié)構(gòu)與全局變量定義

U8 BPB_Data[512]=
{
0xeb,0x3c,0x90,//	Offset_U8_BS_jmpBoot		0
'F','r','a','n','k','w','x','j',// Offset_U8_BS_OEMName		3
0x00,0x02,// Offset_U16_BPB_BytsPerSec	11	//Count of bytes per sector. This value may take on only the  //
//512									//following values: 512, 1024, 2048 or 4096. If maximum       //
										//compatibility is desired, only the value 512 should be used.//
64,// Offset_U8_BPB_SecPerClus	13	//Number of sectors per allocation unit. This value must be a //
										//power of 2 that is greater than 0. The legal values are 1,  //
										//	2, 4, 8, 16, 32, 64,and 128.                                //
0x1,0x00,// Offset_U16_BPB_RsvdSecCnt	14	//Number of reserved sectors in the Reserved region of the    //
										//volume starting at the first sector of the volume.For FAT32 //
										//volumes, this value is typically 32.                        //
0x02,// Offset_U8_BPB_NumFATs		16	//The count of FAT data structures on the volume.             //
0xb0,0x03,// Offset_U16_BPB_RootEntCnt	17	//Is only useful for FAT12 and FAT16 volumes.                 //
//										//For FAT32 volumes,this field must be set to 0.              //
//通過調(diào)整文件項為03b0,從而使數(shù)據(jù)扇區(qū)剛好從Block2Sector0開始,但
//文件分區(qū)表中根目錄區(qū)并為標記為已占用。數(shù)據(jù)實際從Block4Sector0開始
0xea,0x7f,// Offset_U16_BPB_TotSec16		19	//For FAT12 and FAT16 volumes, this field contains the sector //
										//count, and BPB_TotSec32 is 0 if the total sector count fits //
										//(is less than 0x10000).                                     //
0xf8,// Offset_U8_BPB_Media			21	//0xF8 is the standard value for fixed(non-removable) media.  //
										//For removable media, 0xF0 is frequently used.               //
0x02,0x00,// Offset_U16_BPB_FATSz16		22	//This field is FAT12/FAT16 16bit count of sectors occupied by//
										//	1 FAT.On FAT32 volumes this field must be 0, and BPB_FATSz32//
										//contains the FAT size count.                                //
0x00,0x00,// Offset_U16_BPB_SecPerTrk	24	//Sectors per track for interrupt 0x13. This field is only    //
										//relevant for media that have a geometry (volume is broken   //
										//down into tracks by multiple heads and cylinders) and are   //
										//visible on interrupt 0x13.This field contains the           //
										//"sectors per track" geometry value.                         //
0x00,0x00,// Offset_U16_BPB_NumHeads		26	//Number of heads for interrupt 0x13. This field is relevant  //
										//as discussed earlier for BPB_SecPerTrk.                     //
0x01,0x00,0x00,0x00,// Offset_U32_BPB_HiddSec		28	//Count of hidden sectors preceding the partition that        //
										//contains this FAT volume.                                   //
0x00,0x00,0x00,0x00,// Offset_U32_BPB_TotSec32		32	//This field is the new 32-bit total count of sectors on the  //
										//volume. This count includes the count of all sectors in all //
										//four regions of the volume. This field can be 0; if it is 0,//
										//then BPB_TotSec16 must be non-zero. For FAT32 volumes, this //
										//field must be non-zero. For FAT12/FAT16 volumes, this field //
										//contains the sector count if BPB_TotSec16 is 0 (count is    //
										//greater than or equal to 0x10000).//
0x00,// Offset_U8_BS_DrvNum		36	//This field is the FAT32 32-bit count of sectors occupied by //
	//根據(jù)該值得到FAT的大小//				//ONE FAT. BPB_FATSz16 must be 0.                             //
	
0x00,// Offset_U8_BS_Reserved		37	//    Bits 0-3 -- Zero-based number of active FAT.Only valid  //
										//                if mirroring is disabled.                   //
										//    Bits 4-6 -- Reserved.                                   //
										//    Bit 7    -- 0 means the FAT is mirrored at runtime into //
										//                  all FATs.                                 //
										//             -- 1 means only one FAT is active;it is the one//
										//                  referenced in bits 0-3.                   //
										//    Bits 8-15 -- Reserved.                                  //
0x29,// Offset_U8_BS_BootSig		38	//High byte is major revision number.                         //
										//Low byte is minor revision number.                          //
'N','A','M','E',// Offset_U32_BS_VolID		39	//This is set to the cluster number of the first cluster of   //
	//根據(jù)該值得到ROOT的地址//				//the root directory, usually 2 but not required to be 2.     //
	
'N','O',' ','N','A','M','E',' ',' ',' ',' ',// Offset_U2048_BS_VolLab		43	//Sector number of FSINFO structure in the reserved area of   //
										//the FAT32 volume.Usually 1.                                 //
'F','A','T','1','6',' ',' ',' ',// Offset_U256_BS_FilSysType	54	//If non-zero, indicates the sector number in the reserved    //
										//area of the volume of a copy of the boot record.            //
//Executable Code
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,	
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,	
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,	
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,	
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,	

0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,	
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,	
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,	
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,	
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,

0x00,//active partion
0x00,//head
0x00,//partion begin
0x00,//cylinder
0x06,//is partion used
0x00,//end head
0x00,//partion end 
0x00,//end cylinder
0x00,0x00,0x00,0x00,
0x00,0x80,0x00,0x00,//fist partion

0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,//second partion
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,//third partion
0,0,0,0,0,		0,0,0,0,0,		0,0,0,0,0,		0,//forth partion

0x55,0xAA	// Offset_U16_Signature		510	//0x55AA           

};

/*
//from 	e Carry
0xeb,0x3c,0x90,0x4d,0x53,0x44,0x4f,0x53,0x35,0x2e,0x30,0x00,0x02,0x08,0x01,0x00,
0x02,0x00,0x02,0x00,0x7d,0xf8,0x0c,0x00,0x3f,0x00,0xff,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x29,0xfa,0x9f,0x92,0x90,0x4e,0x4f,0x20,0x4e,0x41,
0x4d,0x45,0x20,0x20,0x20,0x20,0x46,0x41,0x54,0x31,0x36,0x20,0x20,0x20,

//executable code
0x33,0xc9,
0x8e,0xd1,0xbc,0xf0,0x7b,0x8e,0xd9,0xb8,0x00,0x20,0x8e,0xc0,0xfc,0xbd,0x00,0x7c,
0x38,0x4e,0x24,0x7d,0x24,0x8b,0xc1,0x99,0xe8,0x3c,0x01,0x72,0x1c,0x83,0xeb,0x3a,
0x66,0xa1,0x1c,0x7c,0x26,0x66,0x3b,0x07,0x26,0x8a,0x57,0xfc,0x75,0x06,0x80,0xca,
0x02,0x88,0x56,0x02,0x80,0xc3,0x10,0x73,0xeb,0x33,0xc9,0x8a,0x46,0x10,0x98,0xf7,
0x66,0x16,0x03,0x46,0x1c,0x13,0x56,0x1e,0x03,0x46,0x0e,0x13,0xd1,0x8b,0x76,0x11,
0x60,0x89,0x46,0xfc,0x89,0x56,0xfe,0xb8,0x20,0x00,0xf7,0xe6,0x8b,0x5e,0x0b,0x03,
0xc3,0x48,0xf7,0xf3,0x01,0x46,0xfc,0x11,0x4e,0xfe,0x61,0xbf,0x00,0x00,0xe8,0xe6,
0x00,0x72,0x39,0x26,0x38,0x2d,0x74,0x17,0x60,0xb1,0x0b,0xbe,0xa1,0x7d,0xf3,0xa6,
0x61,0x74,0x32,0x4e,0x74,0x09,0x83,0xc7,0x20,0x3b,0xfb,0x72,0xe6,0xeb,0xdc,0xa0,
0xfb,0x7d,0xb4,0x7d,0x8b,0xf0,0xac,0x98,0x40,0x74,0x0c,0x48,0x74,0x13,0xb4,0x0e,
0xbb,0x07,0x00,0xcd,0x10,0xeb,0xef,0xa0,0xfd,0x7d,0xeb,0xe6,0xa0,0xfc,0x7d,0xeb,
0xe1,0xcd,0x16,0xcd,0x19,0x26,0x8b,0x55,0x1a,0x52,0xb0,0x01,0xbb,0x00,0x00,0xe8,
0x3b,0x00,0x72,0xe8,0x5b,0x8a,0x56,0x24,0xbe,0x0b,0x7c,0x8b,0xfc,0xc7,0x46,0xf0,
0x3d,0x7d,0xc7,0x46,0xf4,0x29,0x7d,0x8c,0xd9,0x89,0x4e,0xf2,0x89,0x4e,0xf6,0xc6,
0x06,0x96,0x7d,0xcb,0xea,0x03,0x00,0x00,0x20,0x0f,0xb6,0xc8,0x66,0x8b,0x46,0xf8,
0x66,0x03,0x46,0x1c,0x66,0x8b,0xd0,0x66,0xc1,0xea,0x10,0xeb,0x5e,0x0f,0xb6,0xc8,
0x4a,0x4a,0x8a,0x46,0x0d,0x32,0xe4,0xf7,0xe2,0x03,0x46,0xfc,0x13,0x56,0xfe,0xeb,
0x4a,0x52,0x50,0x06,0x53,0x6a,0x01,0x6a,0x10,0x91,0x8b,0x46,0x18,0x96,0x92,0x33,
0xd2,0xf7,0xf6,0x91,0xf7,0xf6,0x42,0x87,0xca,0xf7,0x76,0x1a,0x8a,0xf2,0x8a,0xe8,
0xc0,0xcc,0x02,0x0a,0xcc,0xb8,0x01,0x02,0x80,0x7e,0x02,0x0e,0x75,0x04,0xb4,0x42,
0x8b,0xf4,0x8a,0x56,0x24,0xcd,0x13,0x61,0x61,0x72,0x0b,0x40,0x75,0x01,0x42,0x03,
0x5e,0x0b,0x49,0x75,0x06,0xf8,0xc3,0x41,0xbb,0x00,0x00,0x60,0x66,0x6a,0x00,0xeb,
0xb0,0x4e,0x54,0x4c,0x44,0x52,0x20,0x20,0x20,0x20,0x20,0x20,0x0d,0x0a,0x4e,0x54,
0x4c,0x44,0x52,0x20,0x69,0x73,0x20,0x6d,0x69,0x73,0x73,0x69,0x6e,0x67,0xff,0x0d,
0x0a,0x44,0x69,0x73,0x6b,0x20,0x65,0x72,0x72,0x6f,0x72,0xff,0x0d,0x0a,0x50,0x72,
0x65,0x73,0x73,0x20,0x61,0x6e,0x79,0x20,0x6b,0x65,0x79,0x20,0x74,0x6f,0x20,0x72,
0x65,0x73,0x74,0x61,0x72,0x74,0x0d,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xac,0xbf,0xcc,

*/
void WriteMBR2Flash(void)
{
	if(Check_Flash_Id()==KM29U128_ID){
	WritePage(Root_Cluster, BPB_Sector, BPB_Data);
	}
	else Uart_Printf("\nKM29U128 is Not Found!");
}

void CreatFAT16(void)
{
	U16 i;
	static U8 FAT[528];
	for(i=0;i<528;i++) FAT[i] = 0x00;
	//disk type lower byte is equal to Offset_U8_BPB_Media
	FAT[0] = 0xf8;
	FAT[1] = 0xff;//system occupied the first cluster
	FAT[2] = 0xff;
	FAT[3] = 0x7f;
	
	if(Check_Flash_Id()==KM29U128_ID){
		WritePage(Root_Cluster,Fat_Sector,FAT);	//Sector 1 of Fat16
		WritePage(Root_Cluster,Fat_Sector+2,FAT);	//Sector 1 of Fat16
		FAT[0]=FAT[1]=FAT[2]=FAT[3]=0x00;
		WritePage(Root_Cluster,Fat_Sector+1,FAT);	//Sector 2 of Fat16
		WritePage(Root_Cluster,Fat_Sector+3,FAT);	//Sector 2 of Fat16
		}
	else Uart_Printf("\nKM29U128 is Not Found!");
}

void CreatDirectoryEntry(void)
{
	static U8 Directory_Enties[528];
	U32 i;
	for(i=0;i<528;i++)  Directory_Enties[i]= 0x00;

	if(Check_Flash_Id()==KM29U128_ID){
		for(i=0;i<0x35;i++) {
			WritePage(Root_Cluster,Directory_Sector+i,Directory_Enties);
			Delay(100);
			}
		}	
	else Uart_Printf("\nKM29U128 is Not Found!");
	
}


//函數(shù)實現(xiàn)
void Format_Fat16Media(void)
{	
	Flash_Reset();
	Erase_Cluster(Root_Cluster);
	WriteMBR2Flash();
	CreatFAT16();
	CreatDirectoryEntry();
	}

void Write2Flash(unsigned int block,unsigned int StSector,unsigned int EnSector,unsigned char *ClusterBuf)

{
	unsigned int i;
	for(i=0;i<StSector;i++) 
		{ReadPage(block,i,ClusterBuf+i*528);	//前前面的扇區(qū)讀出
		}
	for(i=EnSector+1;i<32;i++) 
		{ReadPage(block,i,ClusterBuf+i*528);	//前前面的扇區(qū)讀出
		}
	Erase_Cluster(block);
	for(i=0;i<32;i++) 
		{
//		Uart_Printf("W:%x",ClusterBuf[i*528]);
		WritePage(block,i,ClusterBuf+i*528);	//前前面的扇區(qū)讀出
//		ReadPage(block,i,BPB_Data);
//		Uart_Printf("R:%x",BPB_Data[0]);
		
		}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人福利视频在线看| 欧美日韩成人激情| 久久精品国产亚洲一区二区三区| 久久免费视频色| 亚洲午夜一二三区视频| 色视频一区二区| 中文字幕亚洲在| 成人av动漫在线| 欧美精品日韩综合在线| 香港成人在线视频| 在线免费观看不卡av| 亚洲黄色免费网站| 欧美午夜视频网站| 亚洲天堂成人网| 在线欧美日韩国产| 亚洲午夜在线视频| 91超碰这里只有精品国产| 亚洲成人av资源| 欧美日韩午夜精品| 日韩va欧美va亚洲va久久| 日韩视频免费观看高清在线视频| 麻豆91精品视频| 久久综合网色—综合色88| 免费成人在线观看| 欧美一区二区三区日韩| 日本电影欧美片| 亚洲小说欧美激情另类| 精品国产乱码久久久久久图片| www.亚洲色图.com| 奇米综合一区二区三区精品视频| 欧美激情一区二区三区全黄| 欧美三级在线视频| 成人理论电影网| 视频一区中文字幕| 国产精品久久二区二区| 欧美一区二区在线免费观看| aaa国产一区| 男女视频一区二区| 一区二区不卡在线视频 午夜欧美不卡在| 日韩三级免费观看| 欧美性淫爽ww久久久久无| 国产精品99久久久久久宅男| 日产精品久久久久久久性色| 中文字幕亚洲综合久久菠萝蜜| 日韩欧美不卡在线观看视频| 色偷偷久久人人79超碰人人澡| 国产最新精品免费| 日韩综合小视频| 亚洲婷婷综合色高清在线| 欧美精品一区二区三区很污很色的 | 免费的国产精品| 一区二区三区精品视频| 中文字幕免费不卡在线| 26uuu久久综合| 日韩欧美三级在线| 91精品国产综合久久久蜜臀图片| 色呦呦国产精品| www.久久久久久久久| 国产在线一区观看| 久久99精品国产91久久来源| 五月婷婷久久综合| 亚洲一区二区在线视频| 亚洲精品一卡二卡| 亚洲色图都市小说| 国产精品动漫网站| 国产精品久久精品日日| 国产精品欧美一区喷水| 久久久久高清精品| 精品久久久久久久人人人人传媒| 3d动漫精品啪啪一区二区竹菊| 欧美午夜影院一区| 欧美手机在线视频| 欧美日韩免费电影| 欧美日韩激情在线| 欧美一区二区私人影院日本| 欧美写真视频网站| 欧美日韩一区二区在线视频| 欧美日韩一区二区三区高清| 欧美日韩一区二区三区不卡| 欧美日韩在线一区二区| 欧美日韩国产在线播放网站| 欧美日本在线播放| 日韩欧美国产一区二区三区| 精品国产网站在线观看| 国产亚洲制服色| 国产精品网曝门| 中文字幕一区二区在线观看| 亚洲欧美日韩久久| 亚洲v精品v日韩v欧美v专区| 日韩av在线播放中文字幕| 精品一区二区三区久久| 岛国一区二区在线观看| 一本在线高清不卡dvd| 欧美在线免费视屏| 日韩三级精品电影久久久 | 亚洲欧美日韩在线不卡| 亚洲日本在线天堂| 午夜精品福利一区二区三区av | 欧美日韩国产美| 51精品秘密在线观看| 精品国产乱子伦一区| 中日韩av电影| 亚洲国产日日夜夜| 国内外成人在线视频| 91亚洲男人天堂| 欧美三级日韩三级国产三级| 欧美成人激情免费网| 最新国产成人在线观看| 亚洲国产综合人成综合网站| 日韩成人午夜精品| 高清成人在线观看| 欧美亚洲禁片免费| 欧美成人a∨高清免费观看| 国产精品久久久久久久久免费相片| 亚洲综合免费观看高清在线观看| 美女视频黄免费的久久| eeuss鲁一区二区三区| 欧美精品丝袜中出| 亚洲欧洲三级电影| 蜜桃精品在线观看| 91福利在线播放| 2014亚洲片线观看视频免费| 亚洲一二三专区| 国产白丝精品91爽爽久久| 欧美在线观看视频一区二区| 久久精品视频在线看| 亚洲国产精品精华液网站| 国产精品99久| 日韩一区二区不卡| 亚洲主播在线观看| 国产成人夜色高潮福利影视| 7777精品伊人久久久大香线蕉的| 国产精品国产精品国产专区不蜜| 欧美aaaaa成人免费观看视频| 99re这里只有精品首页| 久久久精品tv| 久草在线在线精品观看| 91久久精品一区二区三| 国产精品美女一区二区三区| 久久精品国产精品亚洲红杏| 欧美日韩午夜在线视频| 亚洲欧洲综合另类| 丁香激情综合国产| 国产日韩欧美精品在线| 狠狠色伊人亚洲综合成人| 欧美午夜宅男影院| 一级中文字幕一区二区| 97se狠狠狠综合亚洲狠狠| 久久综合九色综合97婷婷女人 | caoporen国产精品视频| 久久久久久麻豆| 久久99久久久久久久久久久| 欧美日韩不卡一区二区| 夜色激情一区二区| 一本久久精品一区二区| 亚洲视频在线观看一区| 不卡在线观看av| 国产精品三级在线观看| 国产成人自拍网| 欧美激情综合在线| 国产精品1区2区3区| 国产欧美日韩久久| 国产aⅴ综合色| 国产农村妇女毛片精品久久麻豆| 精品一区二区三区在线观看 | 欧美成人bangbros| 九色综合国产一区二区三区| 欧美mv日韩mv| 国产一区二区三区高清播放| 久久综合成人精品亚洲另类欧美| 国内精品久久久久影院一蜜桃| 精品播放一区二区| 国产河南妇女毛片精品久久久| 久久先锋资源网| 国产91精品一区二区麻豆网站| 中文字幕av免费专区久久| 成人免费看视频| 亚洲激情中文1区| 欧美日韩国产免费| 久久精品国产一区二区三区免费看| 精品乱码亚洲一区二区不卡| 懂色中文一区二区在线播放| 亚洲人成亚洲人成在线观看图片| 欧美综合天天夜夜久久| 日韩精品每日更新| 久久夜色精品国产欧美乱极品| 国产成人亚洲综合a∨猫咪| 亚洲天堂精品在线观看| 欧美日韩一区 二区 三区 久久精品| 视频一区国产视频| 精品对白一区国产伦| 99久久777色| 日日夜夜一区二区| 久久综合九色欧美综合狠狠 | 欧美日韩精品久久久| 国内精品写真在线观看| 亚洲视频精选在线| 91精品国产免费| 成人精品视频.| 五月婷婷激情综合网|