分类: 嵌入式
2011-10-07 16:31:19
如何实现Linux下的U盘(USB Mass Storage)驱动
How to Write Linux USB MSC (Mass Storage Class) Driver
版本: 0.4
作者: crifan
联系方式:green-waste (at) 163.com
由于本文内容太长,不方便此处发表全文,所以只列出了目录。
这里有PDF版本:
如何实现Linux下的U盘(USB Mass Storage)驱动 v0.4.pdf
1. (991.07 KB)
2。 如何实现Linux下的U盘(USB Mass Storage)驱动 v0.4.pdf
版本历史
版本 |
时间 |
内容更新 |
作者 |
0.4 |
2011-07-01 |
1.介绍如何在Linux下实现U盘驱动 |
crifan |
目录
1 正文之前 6
1.1 本文目的 6
1.2 阅读此文所需要的前提知识 7
1.3 声明 7
2 USB基本知识 8
2.1 USB的硬件 8
2.2 USB相关的协议 8
2.3 USB相关的软件实现 8
3 USB Mass Storage大容量存储的基本知识 9
3.1 USB Mass Storage相关的协议 13
3.1.1 USB Mass Storage相关协议简介 14
3.1.1.1 USB MSC Control/Bulk/Interrupt (CBI) Transport 14
3.1.1.2 USB MSC Bulk-Only (BBB) Transport 15
3.1.1.2.1 为何USB MSC中Bulk-only Transport被叫做 BBB 15
3.1.1.2.2 为何已经有了CBI,又再弄出个BBB 15
3.1.1.3 USB MSC UFI Command Specification 16
3.1.1.4 USB MSC Bootability Specification 16
3.1.1.5 USB MSC Compliance Test Specification 17
3.1.1.6 USB Lockable Storage Devices Feature Specification 17
3.1.1.7 USB MSC USB Attached SCSI Protocol (UASP) 17
3.1.1.7.1 已有SCSI协议,为何还要再弄一个UASP 17
3.1.2 USB MSC的各个协议之间关系总结 19
3.1.3 U盘与USB中的Class,Subclass和Protocol的对应关系 20
3.1.3.1 bInterfaceClass=0x08=Mass Storage 21
3.1.3.2 bInterfaceSubClass=0x06=SCSI Transparent 21
3.1.3.3 bInterfaceProtocol=0x50=Bulk Only Transport 21
3.2 USB Mass Storage相关的软件实现 22
4 实现U盘驱动的整个流程是什么样的 23
5 Linux系统下,USB驱动的框架已经做了哪些事情 24
6 Linux下实现U盘驱动,自己需要做哪些事情以及如何做 25
7 引用文章 26
图表
图表 1 U盘 6
图表 2 USB Mass Storage Framework 9
图表 3 PC和U盘 10
图表 4 PC和U盘的芯片内部结构 10
图表 5 PC和U盘的内部逻辑框图 11
图表 6 PC和USB MSC设备 12
图表 7 USB MSC的分类 12
图表 8 USB Storage Class Protocol Relation 19
图表 9 SubClass Codes Mapped to Command Block Specifications 21
图表 10 Mass Storage Transport Protocol 21
图表 11 USB数据流向图 23
缩写
缩写 |
全称 |
含义 |
注释 |
MSC |
Mass Storage Class |
大容量存储类型 |
常说的大容量存储设备,就是此处的MSC设备,最常见的例子就是U盘 |
SAM4
|
ISO/IEC 14776-414, SCSI Architecture Model-4 (SAM-4) (ANSI INCITS 447:2008) |
SCSI架构的Mode-4 |
|
Spec |
Specification |
规范 |
|