USB Mass Storage大型存放區的基本知識

來源:互聯網
上載者:User

標籤:

http://www.crifan.com/files/doc/docbook/usb_disk_driver/release/htmls/ch02_msc_basic.html

目錄

2.1. USB Mass Storage相關的協議
2.1.1. USB Mass Storage相關協議簡介
2.1.1.1. USB MSC Control/Bulk/Interrupt (CBI) Transport
2.1.1.2. USB MSC Bulk-Only (BBB) Transport
2.1.1.2.1. 為何USB MSC中Bulk-only Transport被叫做 BBB
2.1.1.2.2. 為何已經有了CBI,又再弄出個BBB
2.1.1.3. USB MSC UFI Command Specification
2.1.1.4. USB MSC Bootability Specification
2.1.1.5. USB MSC Compliance Test Specification
2.1.1.6. USB Lockable Storage Devices Feature Specification
2.1.1.7. USB MSC USB Attached SCSI Protocol (UASP)
2.1.1.7.1. 已有SCSI協議,為何還要再弄一個UASP
2.1.2. USB MSC的各個協議之間關係總結
2.1.3. 隨身碟與USB中的Class,Subclass和Protocol的對應關係
2.1.3.1. bInterfaceClass=0x08=Mass Storage
2.1.3.2. bInterfaceSubClass=0x06=SCSI Transparent
2.1.3.3. bInterfaceProtocol=0x50=Bulk Only Transport
2.2. USB Mass Storage相關的軟體實現

摘要

【todo】待整理:Linux USB MASS Storage driver流程圖

 

USB Mass Storage所對應的層次和要實現哪些東西:

圖 2.1. USB Mass Storage Framework

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PC電腦和隨身碟之間的關係,以及物理上的組成,可以用表示:

圖 2.2. PC和隨身碟

 

更深入的剖析,對於普通隨身碟的內部結構,則是一個USB物理介面,加上對應的控制晶片(微控制器(含Nand Flash的控制器)+ USB裝置控制器)和一個Nand Flash晶片:

圖 2.3. PC和隨身碟的晶片內部結構

 

上述PC電腦和隨身碟的物理關係,以群聯的PS2251-50 USB 2.0 Flash Controller為例,對應的邏輯關係為:

圖 2.4. PC和隨身碟的內部邏輯框圖

關於隨身碟容量,再多解釋一句:一般隨身碟的大小,就是對應著這個Nand Flash晶片的容量,比如2GB,4GB,8GB等。當然,比如一個8GB的隨身碟,內部也可以用兩塊4GB的Nand Flash晶片來構成。

PC和隨身碟的之間的抽象的邏輯關係,可用來表示:

圖 2.5. PC和USB MSC裝置

中,Storage Media,就是我們例子中的Nand Flash晶片。而例子中的那個控制晶片,是Microcontroller with embedded USB device controller 和Media Controller的集合。

而中的USB MSC(Mass Storage Class) Device,從應用領域來說,可以分為以下幾類:

圖 2.6. USB MSC的分類

  而像上述例子中那樣的常用的隨身碟,屬於中的Flash Drive,即,物理上儲存資料的介質用的是Flash Memory,比如例子中的Nand Flash晶片,對應的,Media Controller,也就是Nand Flash的Controller,負責從Nand Flash晶片中讀寫資料。

  USB MSC裝置中的韌體(firmware)或者硬體(hardware),必須要實現下面這些功能:

  1. 檢測和響應通用的USB Request和USB匯流排上的事件。
  2. 檢測和響應來自USB裝置的關於資訊或者動作的USB Mass Storage Request。
  3. 檢測和響應,從USB Transfer中獲得的SCSI Command。這些業界標準的命令,是用來獲得狀態資訊,控制裝置操作,向儲存介質塊中讀取(read block)和寫入(write block)資料的。

另外,裝置如果想要向儲存介質中,建立/讀取/寫入,檔案/檔案夾的話,那麼就涉及到檔案系統,還要實現對應的檔案系統。嵌入式系統中常見的檔案系統有FAT16或FAT32。

2.1. USB Mass Storage相關的協議

除了本身USB的協議之外,Mass Storage作為其中USB的一種,USB Mass Storage自己又有相關的協議,對應的協議可以去官網下載:

http://www.usb.org/developers/devclass_docs/

其中有關於Mass Storage相關的,一堆的協議:

  • Mass Storage Class Specification Overview 1.4
  • Mass Storage Bulk Only 1.0
  • Mass Storage Control/Bulk/Interrupt (CBI) Specification 1.1
  • Mass Storage UFI Command Specification 1.0
  • Mass Storage Bootability Specification 1.0
  • Lockable Mass Storage Specification 1.0 and Adopters Agreement - Lockable Mass Storage IP Disclosure
  • USB Attached SCSI Protocol (UASP) v1.0 and Adopters Agreement

說實話,咋一看,這麼多協議,不知道驢年馬月才能看完和真正理解。不過,等待瞭解了這些協議的關係之後,會發現,其實需要特別關注和研究的協議,並不是很多,至少很多協議可以不用太關心。

 

2.1.1. USB Mass Storage相關協議簡介

凡事至少得對整體系統有個大致瞭解後,才能繼續下一步的深入的開發。所以,我們的目的,首先是要搞懂這麼多協議之間都是啥關係,以及具體寫隨身碟驅動的話,要看哪些協議。

從上面那一堆協議的名詞上,我們就能看到,第一個:Mass Storage Class Specification Overview 1.4  就是對於這麼多協議的概述,其中介紹了各個協議的關係。

下面就把其中的主要內容摘出來,解釋如下:

關於USB Mass Storage相關的一些協議,都是由一個叫做USB Mass Storage Class Working Group (CWG)的組織定義的,如上所述,包括下面一些協議:

  • USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport
  • USB Mass Storage Class Bulk-Only (BBB) Transport
  • USB Mass Storage Class Universal Floppy Interface (UFI) Command Specification
  • USB Mass Storage Class Bootability Specification
  • USB Mass Storage Class Compliance Test Specification
  • USB Lockable Storage Devices Feature Specification (LSD FS)
  • USB Mass Storage Class USB Attached SCSI Protocol (UASP)

對於這些協議,我們一個個的簡單解釋和分析一下:

2.1.1.1. USB MSC Control/Bulk/Interrupt (CBI) Transport

我們所關注的隨身碟,就是所謂的MSC裝置,大量儲存裝置。

隨身碟的功能,就是資料存放區。而對應的資料轉送,用的是USB中的Bulk Transfer。而Control Transfer是用來發送Class-Specific的資訊和Clear Stall。而其他方面的資訊交換,是用Bulk-only協議。

而對於CBI,算是Bulk-only的替代品,也可以用來資訊交換,但是只能用於full-speed的磁碟片(Floppy drive),也不推薦將CBI用於其它新出的MSC裝置上。

【總結】USB MSC Control/Bulk/Interrupt (CBI) 主要用於Floppy裝置,對於我們關心的隨身碟,用不到,不需要太關心,可以忽略之。

 2.1.1.2. USB MSC Bulk-Only (BBB) Transport

如上所述,Bulk-only是USB裝置端,此處的隨身碟和USB Host端,即普通PC,之間資訊交換的協議。

Bulk Only Transport,也被簡稱為BOT。

2.1.1.2.1. 為何USB MSC中Bulk-only Transport被叫做 BBB

USB MSC中的Bulk-Only 常被叫做BBB,是相對於前面所說的CBI來說的。

看起來,USB MSC的CBI,是Control/Bulk/Interrupt的簡寫,但是其具體含義是:

  1. Control

    Control端點用於,除了傳送標準的USB請求之外,還用於通過Class-specific的請求,將命令塊(command block)傳給裝置;即Control端點傳送命令塊

  2. Bulk

    Bulk In和Bulk Out端點用於在主機(Host)和裝置(Device)之間資料的傳輸。即,Bulk用於傳送資料

  3. Interrupt

    Interrupt端點用於(裝置向主機)通知命令完成。即Interrupt用於傳送狀態資訊

因此,上面的USB MSC的Control/Bulk/Interrupt,才被簡稱為CBI。

和CBI中的用三種不同的端點來傳送三種類型的資訊,而不同的是,Bulk-only傳送這些全部的資訊,都之用Bulk端點。

即用Bulk端點來傳送命令塊,資料,狀態,因此,才類似於Control/Bulk/Interrupt被簡稱為CBI一樣,而Bulk/Bulk/Bulk被簡稱為BBB。 

【總結】USB MSC傳輸協議分CBI和BOT,而BOT又稱為BBB。

 

2.1.1.2.2. 為何已經有了CBI,又再弄出個BBB

既然,對於USB MSC裝置來說,USB裝置和USB主機之間的通訊,已經定義了一個CBI規範,那麼為何還要再新定義一個Bulk-only(BBB)呢?

我的理解是,那是因為,最開始USB協議定義的時候,那時候市場上的Floppy Disk還是用的很多的。所以針對Floppy裝置特點,分別定義了多個端點來傳輸不同的資訊,即Control端點傳命令塊,Bulk傳資料,Interrupt傳狀態資訊,

而後來電腦行業的發展了,Floppy類的設定很少用了,儲存資料的話,多數開始用Flash Memory了,再加上通過合理規劃,可以用同一種端點,即Bulk端點,傳輸上述三種資訊,即命令塊,資料,狀態,因此,只需要物理上實現一個Bulk端點,節省掉了其他兩個端點:Control端點和Interrupt端點,達到了物理上實現起來方便和節省資源,而達到同樣的資訊傳輸的目的。

此部分理解,有待進一步考證。 

【總結】USB MSC Bulk-Only (BBB) 協議,是我們要重點關注的對象。因為我們的隨身碟和USB主機(PC端)直接資訊互動,主要是用此協議。

 

2.1.1.3. USB MSC UFI Command Specification

UFI,即Universal Floppy Interface,因此看名字就知道,是關於磁碟片的。此USB MSC UFI規範,定義了UFI命令集合(Command Set),設計出來此規範,就是用於磁碟片的。此UFI命令集合,是基於SCSI-2 和SFF-8070i命令集合的。 

【總結】看完上面的解釋,就明白了,我們此處關心的是隨身碟,是USB Flash Memory類型的,不是Floppy Disk類型的,所以,此處也可以不關心,暫忽略之。

 

2.1.1.4. USB MSC Bootability Specification

目前常見的電腦啟動,很多都是從MSC大量儲存裝置中啟動的,比如硬碟。因此,設計了這個規範,以使得作業系統可以從USB MSC裝置上啟動。關於此規範的具體內容,主要是定義了一些命令和相關的一些資料的定義。即,如果你想要實現讓作業系統從你的這個MSC裝置啟動,那麼你就要實現對應的CDB(Command Descriptor Block,命令描述符塊)或者Data資料。 

【總結】我們主要關心隨身碟如何和主機資料互動,暫不關心是否能否從此隨身碟啟動,所以也可不太關心,暫忽略之。

 

2.1.1.5. USB MSC Compliance Test Specification 

【總結】無須多解釋,看名字就知道,是一個關於相容性測試的規範,和我們此處所關心的隨身碟和主機的資料互動,關係不大,暫忽略之。

 

2.1.1.6. USB Lockable Storage Devices Feature Specification

“Lockable Storage Devices Feature Specification”,簡稱為 LSD FS。“Lockable”的意思是,可鎖定,即鎖定以防止其他人訪問或者寫入,即變成唯讀,甚至不允許其他人再訪問。說白了就是對USB存放裝置的安全控制方面的規範。

而基於目前還沒有一個標準的規範去定義,如何去控制那些對於USB存放裝置的訪問,所以此處才定義了一個這麼個和存取控制相關的協議。此協議可實現允許主機Host或者裝置Device去鎖定Lock或者解鎖Unlock 對應的存放裝置。 

【總結】和安全儲存和許可權控制相關的協議,我們此處也是暫不關心,可忽略之。

 

2.1.1.7. USB MSC USB Attached SCSI Protocol (UASP)

“Attached”顧名思義,是附在某個上面的,此處即附在SCSI協議的上面的,即SCSI協議的補充部分。UASP規範,定義了關於如何在USB 2.0和USB 3.0中,UAS的傳輸通訊協定是如何?的,並且給出了一些範例和一些推薦的做法。

2.1.1.7.1. 已有SCSI協議,為何還要再弄一個UASP

既然已經有了對應的SCSI協議,用於發送對應命令,實現對應功能。作為隨身碟等應用的話,直接實現對應的協議,符合對應的規範,不是也就可以實現對應功能了嗎,為何還要另外再弄出一個SSCI的附屬協議UASP?

那是因為,原先的BOT(Bulk Only Transport),雖然協議簡單已實現,適合用於大量儲存裝置中,但其就像一個單線程,不能同時並存執行多個傳輸。即,對於BOT,每一個由Host發起資料轉送(transaction),都必須等待裝置完成,然後裝置再返回對應的完成狀態資訊,然後才能開始下一次資料轉送。這樣的話,對於整個資料轉送過程的話,就造成了一個很大(大概有20%)的浪費(overhead)。

而對於USB 3.0來說,速度從USB 2.0的480Mb/s變成了 5.0Gb/s,而如果繼續用BOT的話,那麼相對來說CPU效能的利用率很低,USB傳輸速度也不太高,例如,有研究表明,2.4 GHz Core Duo™的CPU,利用率只要大概12%,CPU傳輸速度只有大約250MB/s,而USB 3.0的理論速度是5.0Gb/s=640MB/s,即還不到理論最大速度的一半。

因此,才有了這個UASP,對於SCSI協議進行了補充,以提高USB 2.0的USB匯流排利用率,和充分利用USB 3.0的全雙工系統能力,可以使得傳輸速度達到大約400MB/s。此新的協議UASP的實現,也需要對應的新的Host端的軟體,新的Device端的韌體(Firmware)。

為了實現裝置的向後相容性,Device同時支援BOT和UAS。而此UASP規範,定義了就是如何在USB 2.0和USB 3.0上實現對應的UAS協議。

當Host和Device都實現了此UAS協議的話,那麼Host將通過Host端的SCSI Software Stack去訪問Device,而USB的Interface也將從功能上看,變成Host Stack中的另外一個SCSI Host Adapter。Device需要實現SAM4的架構模型,這樣Host也就可以查詢(Queue)Device中的命令了,以及對應效能的提升。 

【總結】為了克服舊的BOT協議的匯流排利用率不高的缺點,所以定義了新的UAS協議,即UASP,來提升USB的傳輸效率,提升USB速度。當然,我們此處為了實現隨身碟功能的話,當然希望效能越高越好了,所以,這個協議也是我們應該好好研究的。

 

2.1.2. USB MSC的各個協議之間關係總結

為了說明清楚USB Mass Storage各個協議的關係,我們先給這些協議編個號:

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

②USB Mass Storage Class Bulk-Only (BBB) Transport

③USB Mass Storage Class Universal Floppy Interface (UFI) Command Specification

④USB Mass Storage Class Bootability Specification

⑤USB Mass Storage Class Compliance Test Specification

⑥USB Lockable Storage Devices Feature Specification (LSD FS)

⑦USB Mass Storage Class USB Attached SCSI Protocol (UASP)

直接用圖來表示USB MSC各個協議之間的關係,顯得更加直觀:

圖 2.7. USB Storage Class Protocol Relation


如,我們隨身碟實現的功能,主要就是資料的讀寫,而Device和Host之間的資料通訊,主要有兩種:

  1. CBI:主要用於Floppy裝置,所以新的裝置,都很少用此協議
  2. BOT:Bulk-Only Transport,也稱BBB(Bulk/Bulk/Bulk),

而對於BOT/BBB來說,對其提高USB匯流排利用率,提高了USB速度後,就是對應的UASP協議,故此處稱UASP為BOT的增強版的協議。

協議方面說完了,再來看看USB Device這一端。

而USB的Device端,根據內部資料存放區的介質類型不同,又分兩種:

  1. 一種是Floppy裝置,對應用的是UFI Command Set;
  2. 而另外一種,就是我們常見的Flash Memory,對應的是用SCSI Command Set。

而SCSI協議,本身就是有的了,所以不是屬於USB MSC協議範疇,即SCSI只是和USB MSC相關的協議。

同樣的,對於USB Device本身,如果需要一些用到其他的特性,比如可啟動性,相容性,可鎖定性等等,那麼分別對應的規範是

④USB Mass Storage Class Bootability Specification

⑤USB Mass Storage Class Compliance Test Specification

⑥USB Lockable Storage Devices Feature Specification (LSD FS) 

【總結】至此,各個協議和規範之間的關係,就很容易理解了。上面這麼多協議中,其中我們所要關心的,只有三個規範,如前面的圖中,已經用星號標識出來了:

  1. 最需要關心的是BOT,即Host和Device間資料通訊的協議

    ★★★ ②USB Mass Storage Class Bulk-Only (BBB) Transport

  2. 其次,需要關心USB Device內部和資料存放區介質之間通訊的協議

    ★★ SCSI - Small Computer System Interface

  3. 最後,對於,如果要實現更好的效能,那麼需要關心BOT的升級版

    ★⑦USB Mass Storage Class USB Attached SCSI Protocol (UASP)

 2.1.3. 隨身碟與USB中的Class,Subclass和Protocol的對應關係

對應的,瞭解USB的都知道,每個裝置的描述符中,都有對應下面這幾個域:

  • bInterfaceClass
  • bInterfaceSubClass
  • bInterfaceProtocol

分別對應著USB的Class,Subclass,Protocol。

而對於我們此處的隨身碟:

2.1.3.1. bInterfaceClass=0x08=Mass Storage

Class就是USB Mass Storage Class,

2.1.3.2. bInterfaceSubClass=0x06=SCSI Transparent

Subclass,所支援的列表如下:

圖 2.8. SubClass Codes Mapped to Command Block Specifications

2.1.3.3. bInterfaceProtocol=0x50=Bulk Only Transport

Protocol,所支援的列表如下:

圖 2.9. Mass Storage Transport Protocol


從上面這些規範中所定義的支援的協議來看,加上色塊的那幾個,也就是我們前面所解釋過的,需要我們關心和研究的協議,即SCSI,BBB和UAS。

USB Mass Storage大型存放區的基本知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.