如何实现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. linux下挂载U盘

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

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

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

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

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

  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. A Distributed Multichannel MAC Protocol for Multihop Cognitive Radio Networks

    2010 这个呢,就是time slotted的DSA网络MAC层协议. 跟上一篇单纯的Multi Channel实现类似,不过这里是CR网络,因为多了嗅探等操作. 简单的说,time slotted ...

  2. 给兄弟说下如何处理Debian下常见的apache2的几个问题

    这段时间总是有兄弟问到在linux下的apache2配置,其实很简单,这里统一答复下. 一.安装 当然是apt-get install 最简单了, 顺便把php5和GD什么的一起装上吧,基本上不用配置 ...

  3. Mysql基本类型(五种年日期时间类型)——mysql之二

    转自:<MySQL技术内幕:时间和日期数据类型> http://tech.it168.com/a2012/0904/1393/000001393605_all.shtml

  4. Ubuntu14.0.4 64位安装Chrome浏览器

    下载链接:translate.google.com.hk/translate?hl=zh-CN&sl=en&u=http://95.31.35.30/chrome/pool/main/ ...

  5. C 宏定义

    C/C++中宏使用总结 .C/C++中宏总结C程序的源代码中可包括各种编译指令,这些指令称为预处理命令.虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境.本节将介绍如何应用预处理程序和注释 ...

  6. perl 爬取数据<1>

    use LWP::UserAgent; use POSIX; use DBI; $user="root"; $passwd="11111111"; $dbh=& ...

  7. [置顶] think in java interview番外篇-谈程序员如何修练英语

    一.程序员对英语能力的重视度和能力要求应该是在各行各业中排在比较靠前的 这样说吧,英语程度的好坏直接影响着一个程序员的编程.开发.创新能力. 道理很简单: 1. 计算机和软件是用英语创造出来的 2. ...

  8. Python的ASCII, GB2312, Unicode , UTF-8 相互转换

    ASCII 是一种字符集,包括大小写的英文字母.数字.控制字符等,它用一个字节表示,范围是 0-127 Unicode分为UTF-8和UTF-16.UTF-8变长度的,最多 6 个字节,小于 127 ...

  9. poj 3216 (最小路径覆盖)

    题意:有n个地方,m个任务,每个任务给出地点,开始的时间和完成需要的时间,问最少派多少工人去可以完成所有的任务.给出任意两点直接到达需要的时间,-1代表不能到达. 思路:很明显的最小路径覆盖问题,刚开 ...

  10. 把Storyboard减轻的方法

    把Storyboard减轻的方法 by 伍雪颖 UIViewController *secondStoryboard = [[UIStoryboard storyboardWithName:@&quo ...