<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 開(kāi)發(fā)U盤(pán)的幾點(diǎn)體會(huì )

開(kāi)發(fā)U盤(pán)的幾點(diǎn)體會(huì )

作者: 時(shí)間:2014-07-17 來(lái)源:網(wǎng)絡(luò ) 收藏

  如果你開(kāi)發(fā)過(guò)相關(guān)項目,理解的一些基本概念,例如設備描述符、配置描述符、子類(lèi)規范等,那么開(kāi)發(fā)只要概念清晰應該不難。以下是我開(kāi)發(fā)過(guò)程中的幾個(gè)相關(guān)步驟:

本文引用地址:http://dyxdggzs.com/article/249850.htm

  保證 芯片正常工作,用其他USB成功項目驗證硬件連接及固件的正確性, 按Mass Storage協(xié)議Bulk-Only 模式提供描述符,使PC 機控制面板上設備類(lèi)型出現Mass Storage Device響應SCSI指令集中Inquiry 命令,可以出現盤(pán)符, 實(shí)現FAT16文件系統處理SCSI命令集中READ命令及其他UFI命令,可以訪(fǎng)問(wèn)盤(pán)符處理SCSI命令集中WRITE命令, 開(kāi)發(fā)成功開(kāi)發(fā)有三個(gè)工具軟件應該必備:USBVIEW 察看設備描述符,端點(diǎn)測試等;BUSHOUND 截取USB總線(xiàn)數據,可分析UFI命令及U盤(pán)返回的數據流;串口助手可實(shí)時(shí)了解U盤(pán)所收命令流及程序流程, 由于每個(gè)人知識面不同,我想實(shí)現上面的幾個(gè)步驟遇到的問(wèn)題也不一樣。對我最大的困惑是實(shí)現FAT16文件系統,直到在微軟網(wǎng)站找到它的白皮書(shū)才算解惑。這里簡(jiǎn)介一下方便大家有的放矢。

  USB 組織定義了海量存儲設備類(lèi)(Mass Storage Class)的規范,這個(gè)類(lèi)規范包括四個(gè)獨立的子類(lèi)規范,

  即:

  1. USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport

  2. USBMass Storage Class Bulk-Only Transport

  3. USB Mass Storage Class ATA Command Block

  4.USB Mass Storage Class UFI Command Specification。

  前兩個(gè)子規范定義了數據/命令/狀態(tài)在USB 上的傳輸方法。Bulk-Only 傳輸規范僅僅使用Bulk 端點(diǎn)傳送數據/命令/狀態(tài),CBI 傳輸規范則使用Control/Bulk/Interrupt三種類(lèi)型的端點(diǎn)進(jìn)行數據/命令/狀態(tài)傳送。后兩個(gè)子規范則定義了存儲介質(zhì)的操作命令。ATA 命令規范用于硬盤(pán),UFI 命令規范是針對USB 移動(dòng)存儲。Windows95 OSR2和Windows 98開(kāi)始支持 文件系統,它是對早期DOS的FAT16文件系統的增強,由于文件系統的核心--文件分配表FAT由16位擴充為32位,所以稱(chēng)為文件系統。在一邏輯盤(pán)(硬盤(pán)的一分區)超過(guò) 512 兆字節時(shí)使用這種格式,會(huì )更高效地存儲數據,減少硬盤(pán)空間的浪費,一般還會(huì )使程序運行加快,使用的計算機系統資源更少,因此是使用大容量硬盤(pán)存儲文件的極有效的系統。本人對Windows 98下的 文件系統做了分析實(shí)驗,總體上與FAT16文件系統變化不大,現將有關(guān)變化部分簡(jiǎn)介如下:

  (一)FAT32 文件系統將邏輯盤(pán)的空間劃分為三部分,依次是引導區(BOOT區)、文件分配表區(FAT區)、數據區(DATA區)。引導區和文件分配表區又合稱(chēng)為系統區。

  (二)引導區從第一扇區開(kāi)始,使用了三個(gè)扇區,保存了該邏輯盤(pán)每扇區字節數,每簇對應的扇區數等等重要參數和引導記錄。之后還留有若干保留扇區。而FAT16文件系統的引導區只占用一個(gè)扇區,沒(méi)有保留扇區。

  (三)文件分配表區共保存了兩個(gè)相同的文件分配表,因為文件所占用的存儲空間(簇鏈)及空閑空間的管理都是通過(guò)FAT實(shí)現的,FAT如此重要,保存兩個(gè)以便第一個(gè)損壞時(shí),還有第二個(gè)可用。文件系統對數據區的存儲空間是按簇進(jìn)行劃分和管理的,簇是空間分配和回收的基本單位,即,一個(gè)文件總是占用若干個(gè)整簇,文件所使用的最后一簇剩余的空間就不再使用,而是浪費掉了。從統計學(xué)上講,平均每個(gè)文件浪費0.5簇的空間,簇越大,存儲文件時(shí)空間浪費越多,利用率越低。因此,簇的大小決定了該盤(pán)數據區的利用率。FAT16系統簇號用16位二進(jìn)制數表示,從0002H到FFEFH個(gè)可用簇號(FFF0H到FFFFH另有定義,用來(lái)表示壞簇,文件結束簇等),允許每一邏輯盤(pán)的數據區最多不超過(guò)FFEDH(65518)個(gè)簇。FAT32系統簇號改用32位二進(jìn)制數表示,大致從00000002H到FFFFFEFFH個(gè)可用簇號。FAT表按順序依次記錄了該盤(pán)各簇的使用情況,是一種位示圖法。每簇的使用情況用32位二進(jìn)制填寫(xiě),未被分配的簇相應位置寫(xiě)零;壞簇相應位置填入特定值;已分配的簇相應位置填入非零值,具體為:如果該簇是文件的最后一簇,填入的值為FFFFFF0FH,如果該簇不是文件的最后一簇,填入的值為該文件占用的下一個(gè)簇的簇號,這樣,正好將文件占用的各簇構成一個(gè)簇鏈,保存在FAT表中。0000000H、00000001H兩簇號不使用,其對應的兩個(gè)DWORD位置(FAT表開(kāi)頭的8個(gè)字節)用來(lái)存放該盤(pán)介質(zhì)類(lèi)型編號。FAT表的大小就由該邏輯盤(pán)數據區共有多少簇所決定,取整數個(gè)扇區。

  (四)FAT32系統一簇對應8個(gè)邏輯相鄰的扇區,理論上,這種用法所能管理的邏輯盤(pán)容量上限為16TB(16384GB),容量大于16TB時(shí),可以用一簇對應16個(gè)扇區,依此類(lèi)推。FAT16系統在邏輯盤(pán)容量介于128MB到256MB時(shí),一簇對應8個(gè)扇區,容量介于256MB到512MB時(shí),一簇對應16個(gè)扇區,容量介于512MB到1GB時(shí),一簇對應32個(gè)扇區,容量介于1GB到2GB時(shí),一簇對應32個(gè)扇區,超出2GB的部分無(wú)法使用。顯然,對于容量大于512MB的邏輯盤(pán),采用FAT32的簇比采用FAT16的簇小很多,大大減少了空間的浪費。但是,對于容量小于512MB的盤(pán),采用FAT32雖然一簇8個(gè)扇區,比使用FAT16一簇16個(gè)扇區,簇有所減小,但FAT32的FAT表較大,占用空間較多,總數據區被減少,兩者相抵,實(shí)際并不能增加有效存儲空間,所以微軟建議對小于512M的邏輯盤(pán)不使用FAT32。另外,對于使用FAT16文件系統的用戶(hù)提一建議,硬盤(pán)分區時(shí),不要將分區(邏輯盤(pán))容量正好設為某一區間的下限,例:將一邏輯盤(pán)容量設為1100M(稍大于1024M),則使用時(shí)其有效存儲容量比分區為950M的一般還少,因其簇大一倍,浪費的空間較多。還有,使用FDISK等對分區指定容量時(shí),由于對1MB的定義不一樣(標準的二進(jìn)制的1MB為1048576B,有的系統將1MB理解為1000000B,1000KB等),及每個(gè)分區需從新磁道開(kāi)始等因素,實(shí)際分配的容量可能稍大于指定的容量,亦需注意掌握。

  (五)根目錄區(ROOT區)不再是固定區域、固定大小,可看作是數據區的一部分。因為根目錄已改為根目錄文件,采用與子目錄文件相同的管理方式,一般情況下從第二簇開(kāi)始使用,大小視需要增加,因此根目錄下的文件數目不再受最多512的限制。FAT16文件系統的根目錄區(ROOT區)是固定區域、固定大小的,是從FAT區之后緊接著(zhù)的32個(gè)扇區,最多保存512個(gè)目錄項,作為系統區的一部分。

  (六)目錄區中的目錄項變化較多,一個(gè)目錄項仍占32字節,可以是文件目錄項、子目錄項、卷標項(僅跟目錄有)、已刪除目錄項、長(cháng)文件名目錄項等。目錄項中原來(lái)在DOS下保留未用的10個(gè)字節都有了新的定義,全部32字節的定義如下:

  (1) 0-- 7字節 文件正名。

  (2) 8--10字節 文件擴展名。

  (3) 11字節 文件屬性,按二進(jìn)制位定義,最高兩位保留未用,0至5位分別是只讀位、隱藏位、系統位、卷標位、子目錄位、歸檔位。

  (4) 12--13字節 僅長(cháng)文件名目錄項用,用來(lái)存儲其對應的短文件名目錄項的文件名字節校驗和等。

  (5) 14--15字節 24位二進(jìn)制的文件建立時(shí)間,其中的高5位為小時(shí),次6位為分鐘。

  (6) 16--17字節 16位二進(jìn)制的文件建立日期,其中的高7位為相對于1980年的年份值,次4位為月份,后5位為月內日期。

  (7) 18--19字節 16位二進(jìn)制的文件最新訪(fǎng)問(wèn)日期,定義同(6)。

  (8) 20--21字節 起始簇號的高16位。

  (9) 22--23字節 16位二進(jìn)制的文件最新修改時(shí)間,其中的高5位為小時(shí),次6位為分鐘,后5位的二倍為秒數。

  (10)24--25字節 16位二進(jìn)制的文件最新修改日期,定義同(6)。

  (11)26--27字節 起始簇號的低16位。

  (12)28--31字節 32位的文件字節長(cháng)度。

  其中第(4)至(8)項為以后陸續定義的。 對于子目錄項,其(12)為零;已刪除目錄項的首字節值為E5H。在可以使用長(cháng)文件名的FAT32系統中,文件目錄項保存該文件的短文件名,長(cháng)文件名用若干個(gè)長(cháng)文件名目錄項保存,長(cháng)文件名目錄項倒序排在文件短目錄項前面,全部是采用雙字節內碼保存的,每一項最多保存十三個(gè)字符內碼,首字節指明是長(cháng)文件名的第幾項,11字節一般為0FH,12字節指明類(lèi)型,13字節為校驗和,26--27字節為零。

  (七)以前版本的 Windows 和DOS與 FAT32 不兼容,不能識別FAT32分區,有些程序也依賴(lài)于FAT16文件系統,不能和 FAT32 驅動(dòng)器一道工作。將硬盤(pán)轉換為 FAT32,就不能再用雙引導運行以前版本的Windows(Windows 95 [Version 4.00.950]、Windows NT 3.x、Windows NT 4.0 和 Windows 3.x)。

  磁盤(pán)結構綜述

  1.硬盤(pán)結構

  硬盤(pán)的內部是由圓形金屬片堆疊起來(lái)的,每個(gè)盤(pán)片的兩面都有一個(gè)磁頭(Head)負責讀寫(xiě)這個(gè)磁面(Side),在每個(gè)磁面上劃分了一圈一圈的同心圓,叫做柱面(Cylinder)對于軟盤(pán)通常稱(chēng)之為磁道,在每個(gè)柱面中又劃分了若干段,稱(chēng)之為扇區(Sector)。由于技術(shù)的發(fā)展,硬盤(pán)的密度越來(lái)越大,使得硬盤(pán)的實(shí)際盤(pán)片數越來(lái)越少,對磁盤(pán)操作的柱面、磁頭、扇區被硬盤(pán)控制器內部轉換,已經(jīng)不是實(shí)際的柱面、磁頭、扇區了。由于最早時(shí)磁盤(pán)存取系統估計不足,傳輸數據時(shí)只給扇區留了6位,柱面留了10位,磁頭留了8位。也就是說(shuō),柱面最大只能為1023。但是大硬盤(pán)的柱面遠大于這個(gè)數,所以后來(lái)就采用將柱面數減少,將磁頭數增加的方式來(lái)滿(mǎn)足磁盤(pán)尋址的要求,對于實(shí)際地址的轉換在BIOS中進(jìn)行,這叫邏輯塊尋址方式(Logical Block Addressing,LBA)硬盤(pán)中有關(guān)柱面、磁頭、扇區的數據都是以此為基準的。

  2.分區結構

  眾多的文件數據存放在磁盤(pán)上,需要有組織,這就形成了文件系統。但是各個(gè)操作系統的文件系統都不盡相同,為了劃分管理文件系統,在現在的PC機上都采用通用的分區結構。分區機構是這樣的:硬盤(pán)的以一個(gè)扇區(就是0柱面0磁頭1扇區)叫主引導扇區(Main Boot Record,MBR),存放著(zhù)引導程序和主分區表(Main Partition Table)和結束標志“55AA”。一般稱(chēng)的分區表即是主分區表。一個(gè)分區表最多可包含四個(gè)分區表項,每個(gè)分區表項中標示著(zhù)一個(gè)分區信息或一個(gè)擴展分區表的位置,而擴展分區表中可能還有擴展分區表,這就形成了一個(gè)鏈狀結構,可以記錄很多個(gè)分區。 C語(yǔ)言定義如下

  typedef struct

  {

  char bootcode[0x1be]; //啟動(dòng)代碼

  PartitionTable PT[4]; //分區表

  word EndingFlag; //結束標識

  }MBR;

  分區表項的如下:

  typedef struct

  {

  byte BootFlag; //啟動(dòng)標志

  CHS StartCHS; //分區開(kāi)始的柱面、磁頭、扇區

  byte SystemID; //分區類(lèi)型

  CHS EndCHS; //分區結束的柱面、磁頭、扇區

  dword RelativeSectors; //分區相對扇區數,指分區相對于記錄該分區的分區表的扇區位置之差

  dword TotalSectors;//分區總扇區數

  }PartitionTable;

  其中CHS為一個(gè)柱面、磁頭、扇區的結構,定義如下:

  struct CHS

  {

  byte Head; //磁頭

  byte Sector:6; //扇區

  byte CyH2:2; //柱面的高兩位

  byte CyL8; //柱面的低八位

  };

  word Cylinder()

  {

  return (word(CyH2)*256+CyL8);

  } //返回柱面值

  void SetCylinder(word Cylinder) //設置柱面值

  {

  CyH2=(Cylinder>>8)&0x3;

  CyL8=(Cylinder&0xff);

  }

  };

  其中分區類(lèi)型是對應于各種文件系統統一編排的一個(gè)代碼。比如06H是大于32M的FAT16分區的標志,05H是擴展分區的標志,等等。一般的,對于DOS/Windows3.x/Windows95/98的系統來(lái)說(shuō),第一個(gè)分區表項記錄著(zhù)DOS主分區(C盤(pán))的信息,而且是可以啟動(dòng)的,第二個(gè)分區表項一般是擴展分區,在這個(gè)擴展分區表項所指向的分區表中又是一個(gè)Dos主分區(D盤(pán))和一個(gè)擴展分區,依次類(lèi)推。而在絕大部分系統中Dos主分區(C盤(pán))是從0柱面1磁頭1扇區開(kāi)始的。(有些機器在這個(gè)位置有個(gè)小分區,專(zhuān)門(mén)用來(lái)管理啟動(dòng)或機器設置,之后才是C盤(pán)的分區)

  3.FAT文件系統

  FAT文件系統(FAT12/FAT16/FAT32)是從DOS發(fā)展過(guò)來(lái)的一種文件系統,其優(yōu)點(diǎn)是簡(jiǎn)單易用,并被多種操作系統支持。(目前支持FAT32的操作系統還不多)FAT文件系統名稱(chēng)后的數字是標識文件中系統一個(gè)分配單元所需的位(bit)數。一個(gè)FAT12/16文件系統的結構是這樣的:引導扇區 第一文件分配表 第二文件分配表 根目錄 數據區

  (1).引導扇區

  引導扇區是文件系統的第一個(gè)扇區,其中包含分區重要的數據信息——BPB(BIOS Paramenter Block-磁盤(pán)參數表)。磁盤(pán)參數表中包含分區總大小、磁盤(pán)參數等重要信息。其C語(yǔ)言定義為:

  typedef struct

  {

  word SectorBytes; //每扇區字節數

  byte SectorsPerCluster; //每簇扇區數

  word ReservedSectors; //保留扇區數

  byte NbrFat; //FAT的個(gè)數

  word RootEntry; //根目錄項數

  word TotalSectors; //分區總扇區數(分區小于32M時(shí))

  byte Media; //分區介質(zhì)標識

  word SectorsPerFAT; //每個(gè)FAT占的扇區數

  word SectorsPerTrack; //每道扇區數

  word Heads; //磁頭數

  dword HiddenSectors; //隱含扇區數

  dword BigTotalSectors; //分區總扇區數(分區大于32M時(shí))

  }BPB_FAT16;

  其中保留扇區數為從分區開(kāi)始到第一個(gè)FAT表開(kāi)始中間的扇區數。隱含扇區數同分區表中的隱含扇區數含義相同。雖然存在FAT個(gè)數的定義,但現在的FAT12/16系統基本上沒(méi)有除2以外的值。因而一般不考慮其他情況。根目錄項數是指根目錄總共能容納下的目錄的項數。一個(gè)目錄項占32個(gè)字節,所以一個(gè)扇區有512/32=16個(gè)目錄項。用這個(gè)值除以16就是根目錄所占的扇區數。分區總扇區數在分區大于32M時(shí)已經(jīng)超過(guò)65535,兩個(gè)字節已經(jīng)無(wú)法表示,因此在大于32M的分區中TotalSector總是等于零,而將實(shí)際的數放在BigTotalSectors中。分區介質(zhì)標識是確定BPB有效的標志。它必須與FAT表中第一個(gè)字節的分區介質(zhì)標識統一。硬盤(pán)的分區介質(zhì)標識為0F8h,如果這個(gè)標識不對或者與FAT不統一則將會(huì )出“Invalid media type”的錯誤。

  SectorsPerFAT是每個(gè)FAT所占的扇區數。系統根據分區起始地址+保留扇區數+每個(gè)FAT所占扇區數*FAT個(gè)數+根目錄項數/16來(lái)確定數據區開(kāi)始的位置,然后由這個(gè)位置+簇號*每簇扇區數來(lái)最終確定數據在硬盤(pán)扇的具體位置。

  (2)文件分配表

  文件分配表是文件在磁盤(pán)上分布的信息。FAT文件系統將數據區按每簇扇區數為單位劃分成一個(gè)一個(gè)單元,每個(gè)單元是文件分配的最小單位。這個(gè)單元就稱(chēng)為簇。一些大的文件可能占用了很多簇,而且在磁盤(pán)上沒(méi)有連續存放。FAT表就是為了確定文件每個(gè)簇的連接關(guān)系而設的。FAT表的每一項都對應著(zhù)數據區的一個(gè)簇,FAT16的FAT表每一項占16位,也就是兩個(gè)字節。每一項的內容表示其對應簇的分配情況,0表示尚未分配;FFF0h~FFF6h為備用;FFF7h表示壞簇,即該簇中磁盤(pán)有損壞;FFF8h~FFFF表示文件結束;其他值則表示當前簇的下一簇的簇號。FAT表的最前面兩項是不用的,因此第一個(gè)數據簇的簇號為2。FAT表第一個(gè)字節也是分區介質(zhì)類(lèi)型,和BPB中的一樣。因此用“F8 FF FF”可以作為硬盤(pán)FAT起始的標志。絕大多數FAT系統有兩個(gè)FAT表,第二個(gè)FAT表又稱(chēng)為后備文件分配表。系統內部完成后備文件分配表與第一文件分配表的統一。本文討論的完全恢復是基于后備文件分配表沒(méi)有被破壞的情況下的恢復,如果兩個(gè)文件分配表都被損壞,理論上就無(wú)法完全確定文件信息,因此無(wú)法完全恢復。

  (3)根目錄

  FAT12/16的根目錄是單獨列出來(lái)的,在后備文件分配表和數據區之間。每個(gè)目錄項為32個(gè)字節,記錄一個(gè)文件或目錄的信息。(長(cháng)文件名例外)文件修復的原理就是由目錄項中指示的起始簇號和數據區開(kāi)始位置來(lái)確定文件的位置,從而恢復小的文件。

  4.FAT32文件系統

  FAT32文件系統與FAT12/16的差別較大,一個(gè)主要的差別就是將根目錄劃歸到數據區中了,在BPB中專(zhuān)門(mén)加了一項根目錄開(kāi)始簇號。這樣根目錄的大小就不再受到限制,大大增加了根目錄的自由度。

  FAT32的BPB定義如下:

  typedef struct

  {

  word BytesPerSector; //每扇區字節數

  byte SectorsPerCluster; //每簇扇區數

  word ReservedSectors; //保留扇區數

  byte NumberOfFATs; //FAT的個(gè)數

  word RootEntries; //根目錄項數(FAT32不用)

  word TotalSectors; //分區總扇區數(FAT32不用)

  byte MediaDescriptor; //分區介質(zhì)標識

  word SectorsPerFAT; //每個(gè)FAT占的扇區數(FAT32不用)

  word SectorsPerTrack; //每道扇區數

  word Heads; //磁頭數

  dword HiddenSectors; //隱含扇區數

  dword BigTotalSectors; //分區總扇區數

  dword BigSectorsPerFat; //每個(gè)FAT占的扇區數

  word ExtFlags; //擴展標志

  word FS_Version; //文件系統版本

  dword RootDirStartClus; //根目錄起始簇號

  word FSInfoSec; //指向包含BIGFATBOOTFSINFO結構的扇區

  word BkUpBootSec; //后備引導區的位置

  byte Reserved[12]; //備用

  }BPB_FAT32;

  從上可以看出,FAT32的BPB是在FAT16BPB的基礎上加入了一些參數,并停用了一些參數。每個(gè)FAT所占扇區數變?yōu)?個(gè)字節,根目錄項數不再使用。FAT32與FAT12/16的另一不同點(diǎn)在于,FAT32既可以同時(shí)使用多個(gè)FAT表,也可以只使用其中的某一個(gè)FAT表。ExtFlags正是這個(gè)標志。當ExtFlags的第8位為0時(shí)表示同時(shí)使用每個(gè)FAT表,當其為1時(shí)表示只使用其中的一個(gè)FAT表,這個(gè)FAT表的序號由ExtFlags的低4位給出。FS_Version文件系統版本現在都為0。FAT32將根目錄也視作一個(gè)目錄文件,使用一個(gè)簇鏈(Cluster Chain),RootDirStartClus正是這個(gè)鏈的起始簇號。FAT32有個(gè)專(zhuān)門(mén)放BIGFATBOOTFSINFO結構的扇區,該結構包含了剩余簇個(gè)數,下一個(gè)空閑簇號等信息。這個(gè)扇區通常緊接著(zhù)引導扇區。由于與恢復關(guān)系不大,本文不做討論。FAT32將引導扇區和文件系統信息扇區信息存了兩份,另一份的位置由BkUpBootSec指出。這樣由于偶然發(fā)生的損壞就很容易恢復。

  5.擴展BIOS參數塊

  在BPB的后面是Extended BIOS Paramenter Block。EBPB的結構如下:

  typedef struct //Extended BIOS Paramenter Block

  {

  byte PhysicalDriveNumber; //物理硬盤(pán)號

  byte CurrentHead; //當前磁頭

  byte ExtBootRecSign; //擴展引導記錄標志

  dword SerialNumber; //序列號

  char VolumeLabel[11]; //卷標

  char FSID[8]; //文件系統標識

  }EBPB;

  其中物理硬盤(pán)號和當前磁頭是系統運行時(shí)使用的,硬盤(pán)上的值沒(méi)有什么實(shí)際意義。ExtBootRecSign一般為28h或29h。SerialNumber是格式化后生成的序列號。文件系統標識指示了文件系統的類(lèi)型,即“FAT12”、 “FAT16”、 “FAT32”

  Mass Storage 協(xié)議 Bulk-Only 傳輸協(xié)議可參考USBMASSBULK.PDF文檔

  SCSI 指令集可參考USBMASSUFI.PDF文檔

  FAT16文件系統可參考FAT_PAPER.PDF文檔

  相關(guān)文檔可到WWW.USB.ORG官方網(wǎng)站下載

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程




關(guān)鍵詞: U盤(pán) USB FAT32

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>