如何实现Linux下的U盘(USB Mass Storage)驱动

版本:v0.7

How to Write Linux USB MSC (Mass Storage Class) Driver

Crifan Li

摘要

本文主要介绍了USB Mass Storage的相关的各种协议之间的关系,以及如何在Linux的USB驱动框架下实现U盘驱动

本文提供多种格式供:
在线阅读 HTML HTMLs PDF CHM TXT RTF WEBHELP
下载(7zip压缩包) HTML HTMLs PDF CHM TXT RTF WEBHELP

HTML版本的在线地址为:

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

有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论:

http://www.crifan.com/bbs/categories/usb_disk_driver/

2013-09-05

修订历史
修订 0.4 2011-07-01 crl
  1. 介绍如何在Linux下实现U盘驱动
修订 0.7 2013-09-05 crl
  1. 通过Docbook发布
  2. 更新所有xml:id

版权 © 2013 Crifan, http://crifan.com


目录

缩略词
正文之前
1. 此文目的
2. 阅读此文所需要的前提知识
3. 声明
1. USB基本知识
1.1. USB的硬件
1.2. USB相关的协议
1.3. USB相关的软件实现
2. USB Mass Storage大容量存储的基本知识
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. U盘与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相关的软件实现
3. 实现U盘驱动的整个流程是什么样的
4. Linux系统下,USB驱动的框架已经做了哪些事情
5. Linux下实现U盘驱动,自己需要做哪些事情以及如何做
参考书目

 

实现Linux下的U盘(USB Mass Storage)驱动的更多相关文章

  1. 如何实现Linux下的U盘(USB Mass Storage)驱动

    如何实现Linux下的U盘(USB Mass Storage)驱动 版本:v0.7 How to Write Linux USB MSC (Mass Storage Class) Driver Cri ...

  2. USB Mass Storage学习笔记-STM32+FLASH实现U盘

    一.内容概述  采用STM32内部自带USB控制器外加大页NAND FLASH K9F1G08U0A实现一个128M的U盘. 1.STM32的USB控制器 STM32F103的MCU自带USB从控制器 ...

  3. linux下挂载U盘

    转:http://www.cnblogs.com/yeahgis/archive/2012/04/05/2432779.html linux下挂载U盘 一.Linux挂载U盘: 1.插入u盘到计算机, ...

  4. Linux下用FFMPEG采集usb摄像头到RTMP

    Linux下用 FFMPEG 采集 usb摄像头视频 和 摄像头内置麦克风音频 到RTMP服务   ffmpeg -f video4linux2 -qscale 10 -r 12 -s 640x480 ...

  5. usb mass storage之旅

    前面总结了usb hid keyboard,现在总结usb mass storage,在枚举阶段没什么好总结的,hid和mass storage差不多,都是同样的枚举过程,但是在他们的配置描述符.接口 ...

  6. USB mass storage协议

    这一节主要把在实现“linux模拟U盘功能”过程中的一些调试过程记录下来,并加以解析. 一.背景知识     1.USB Mass Storage类规范概述        USB 组织在univers ...

  7. USB Mass Storage协议分析

    目录 简介 指令数据和状态协议 CBW指令格式 CSWCommand Status Wrapper状态格式 SCSI命令集 Format Unit Inquiry MODE SELECT 简介 USB ...

  8. USB Mass Storage大容量存储的基本知识

    http://www.crifan.com/files/doc/docbook/usb_disk_driver/release/htmls/ch02_msc_basic.html 目录 2.1. US ...

  9. Android USB Connections Explained: MTP, PTP, and USB Mass Storage

    Android USB Connections Explained: MTP, PTP, and USB Mass Storage Older Android devices support USB ...

随机推荐

  1. knockout.js简单实用教程1

    第一次接触knockout是在一年多之前吧.当时是接手了一个别人的项目,在项目中有用到knockout来进行数据的绑定.也就开始学习起来knockout.在之后的项目中也多次用到了这个.在第一次开始学 ...

  2. perl 爬取某理财网站产品信息

    use LWP::UserAgent; use utf8; use DBI; $user="root"; $passwd="xxxxx"; $dbh=" ...

  3. poj 2299 Ultra-QuickSort(归并排序或是bit 树+离散化皆可)

    题意:给一个数组,计算需要的冒泡排序的次数,元素个数很大,不能用n^2的冒泡排序计算. 解析:这题实际上就是求逆序对的个数,可以用归并排序的方法,我这里用另一种方法写,bit树+离散化.由于元素的值可 ...

  4. LeeCode-Linked List Cycle

    Given a linked list, determine if it has a cycle in it. /** * Definition for singly-linked list. * s ...

  5. tc令牌桶限速心得

    一.实验拓扑与实验现象 实验拓扑如图所示,在①号机上发送数据,③号机上接受数据,同时在④号机的eth1与eth2网口限制速率为115200kbps,命令如下 tc qdisc add dev eth1 ...

  6. 内存映射与DMA

    1.mmap系统调用的实现过程,该系统调用直接将设备内存映射到用户进程的地址空间. 2.用户空间内存如何映射到内核中(get_user_pages). 3.直接内存访问(DMA),他使得外设具有直接访 ...

  7. dp 46(再做一遍)

    Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多 ...

  8. B. Sereja and Mirroring

    B. Sereja and Mirroring time limit per test 1 second memory limit per test 256 megabytes input stand ...

  9. cocos2d-x绑定ccb文件

    首先,ccb文件是如何生成的,我就不多说了,大家可以搜下cocosbuilder,就能找的相关的教程,而通过cocosbuilder,我们可以省去了很多设计的麻烦,比如设计一个精灵的位置啥的,而通过c ...

  10. 在Android中建立Android project没有R.java文件

    最近在搞一下安卓,在新建Android工程,既然发现在gen目录下没有R.java这个文件.我当时感到很郁闷,上次建Android工程才好好的,怎么这次既然报错没有R.java.后来我用以下才解决了. ...