USB Mass Storage Class Driver (SCSI, SFF-8070i, ATAPI, RBC Command Sets)

转载 2006年05月18日 09:12:00

USB devices like card readers, memory cards, external hard disks, CD/DVD drives, floppy drives are usually considered as mass storage devices and they are implemented conforming to the "USB Mass Storage Class Specification" published by USB Implementers Forum (USB-IF).

Although the aim is to have compatible systems, mass storage devices have many flavors and implementations.

USB Protocol Implementations

Due to the historical reasons there are 3 different protocol implementations of USB Mass Storage Class:

  • Control/Bulk/Interrupt protocol (CBI)

  • Control/Bulk/Interrupt protocol (CBI with no command completion)

  • Bulk-Only Transport protocol

Although devices implementing bulk-only transport protocol dominate the market there are devices with implementing any of the above which makes it hard to provide compatibility. Therefore USB-Implementers Forum discourages new designs to use CBI protocol. CBI is only approved only for USB full-speed devices and may not be used in high-speed devices.

Command Sets

Mass Storage Class specification defines the transport protocol, however, any command set can be used to control a USB mass storage class device. Following are the command sets which can be used over USB:

  • Reduced Block Commands (RBC) T10 Project 1240-D

  • SFF-8020i, MMC-2 (ATAPI)

  • QIC-157

  • UFI

  • SFF-8070i

  • SCSI transparent command set

Typically, Flash devices use RBC. CD/DVD devices use SFF-8020i or MMC-2 command set. Tape devices use QIC-157 command set. UFI is used by portable removable disk readers like floppy drives. Removable media drives including floppy drives also use SFF-8070i command set. A vast majority of mass storage devices just use SCSI transparent command set. According to a study we have conducted at Centrillium almost %90 of the devices on the market use SCSI transparent command set.

Microsoft Windows 2000 and XP only supports SCSI command set and according to the information given by Microsoft, Microsoft has no plan to support RBC due to technical issues.

File Systems

Although it is not a part of the mass storage class specification or command interface specifications, file systems are inseparable from mass storage devices. Following file systems are used by the majority of the mass storage devices:

  • FAT12

  • FAT16

  • FAT32

  • CDFS

FAT12 is considered to be obsolete, however it is still used by floppies and small capacity memory cards. FAT16 seems to be the most popular file system in removable storage media. Unfortunately FAT16 cannot be used in devices who have a storage capacity bigger then 2Gb. As the devices with more capacity become more available it has to be replaced by FAT32.

We have developed/ported a mass storage class device driver for our client and added new command interfaces like SFF-8070i and RBC. We have also conducted studies for mass storage device compatibility. We have also developed an application using FAT12, FAT16 and FAT32 file systems to access the media on the device.

linux usb mass storage class

1 ehci-hcd控制器 1.1 EHCI构架介绍 1.2 EHCI驱动程序分析 2 Mass Storage主机驱动程序 2.1 Mass Storage规范介绍 2.2...
  • zjjdyb
  • zjjdyb
  • 2014年05月07日 10:17
  • 2782

USB Mass Storage大容量存储的基本知识   USB Mass Storage Framework ...
  • yu704645129
  • yu704645129
  • 2015年01月28日 13:38
  • 5664

USB Mass Storage学习笔记

USB Mass Storage学习笔记-STM32+FLASH实现U盘   一、            内容概述 采用STM32内部自带USB控制器外加大页NAND FLASH K9F1G08...
  • sagacity789
  • sagacity789
  • 2011年08月18日 09:02
  • 6509


内核里已经做好了很完善的 USB 驱动了,可以支持大多数 USB 设备,我的板子上 使用了 USB HUB,扩展出四个 USB,内核里也有对 USB HUB 的支持,可直接使用。   配置内核,...
  • zhaole20094463
  • zhaole20094463
  • 2011年10月25日 21:04
  • 1818

[RK3288][Android6.0] USB Mass Storage流程小结

Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 USB Mass Storage遵循Bulk-Only协议,参见:
  • kris_fei
  • kris_fei
  • 2016年10月26日 13:24
  • 2239

第四十篇:USB Mass Storage Device & USB Attached SCSI Protocol

这几天在看USB3.1的bulk streaming协议。 该协议是针对USB Attached SCSI Protocol Device Class而定的。 bulk streaming协议太复...
  • u013140088
  • u013140088
  • 2016年12月01日 14:31
  • 554

USB Mass Storage类设备的设计与实现

1  引言     目前嵌入式设备往往采用sd卡等大容量存储设备,用于存储媒体、图片、历史数据等文件,因此对pc主机与嵌入式设备之间的数据传输速度提出了更高的要求。本文采用freescale公司的3...
  • wangyong0921
  • wangyong0921
  • 2012年08月28日 14:46
  • 2143

STM32 USB 大容量存储器Mass Storage工程的讲解

哎,要说到USB的大容量存储设备就没有向USB鼠标一样简单了。这里先从官方例程里的mass stroage工程讲起。官方的工程比较复杂,程序可以兼容官方推出来的不同系列的评估版,所以程序里经常看见...
  • u011318735
  • u011318735
  • 2013年12月20日 00:22
  • 2988

USB mass storage framework

博客园 新随笔 管理 搜索   随笔分类(603) (Un)Pack ALGO(13) ALTERA(1) ANDROID(9) ARM...
  • xcydn
  • xcydn
  • 2014年06月02日 21:02
  • 934

如何使USB Mass Storage驱动支持CD-ROM格式

该文章讲解了有USB Mass Storage驱动升级到支持CD-ROM驱动
  • DennisGang
  • DennisGang
  • 2017年11月26日 22:11
  • 124
您举报文章:USB Mass Storage Class Driver (SCSI, SFF-8070i, ATAPI, RBC Command Sets)