U盘实现代码分析

        这是我在以前做的一个笔记。它的功能是实现一个U盘。记得当时花了很多时间,但现在翻出来看已经有些不记得了。现在把它共享出来,我想也许会对在做这方面刚入门的朋友有些帮助。

       作者的联系方式:

       E-mail: gbing163@163.com

         BLOG:http://blog.csdn.net/xgbing

        CSDN下载:http://download.csdn.net/detail/xgbing/6926225

 

索引
作者前言 ..........................................................................................................................................1
索引 ..................................................................................................................................................1
at91lib\usb\common\core..................................................................................................................3
at91lib\usb\ device\core ....................................................................................................................3
初始化 ..............................................................................................................................................3
USB 标准请求..................................................................................................................................6
主机发送到设备的第一个数据...............................................................................................6
STALL 包 .........................................................................................................................................7
USBDDriver.c 代码阅读..................................................................................................................8
SetConfiguration(USBDDriver *pDriver, unsigned char cfgnum)...........................................8
GetConfiguration ......................................................................................................................8
GetDeviceStatus........................................................................................................................8
GetEndpointStatus ....................................................................................................................8
GetDescriptor............................................................................................................................9
SetInterface ...............................................................................................................................9
GetInterface ..............................................................................................................................9
USBDDriver_Initialize .............................................................................................................9
USBDDriver_RequestHandler..................................................................................................9
MSDDStateMachine.c 代码阅读 ...................................................................................................10
Struct MSDDriver...................................................................................................................10
MSDD_PreProcessCommand(MSDDriver *pMsdDriver)..................................................... 11
MSDD_StateMachine .............................................................................................................21
MSDLun.h/MSDLun.c ...................................................................................................................24
Struct MSDLun.......................................................................................................................24
LUN_Read..............................................................................................................................25
LUN_Write .............................................................................................................................25
LUN_Init.................................................................................................................................25

SBCMethod.c 代码阅读.................................................................................................................26
SBCLunIsReady 和 SBCLunCanBeWritten...........................................................................26
SBC_Write10..........................................................................................................................28
USBD_UDP.C 硬件驱动层(端点操作)...................................................................................38
(1)硬件层的状态 ..............................................................................................................38
(2)void USBD_Init(void) ..................................................................................................39
(3)中断服务 UDPD_IrqHandler .......................................................................................39
(4)进入端点中断处理 UDP_EndpointHandler ................................................................43
(A) 写数据的过程.........................................................................................................47
(B)读数据的过程..............................................................................................................50
USB Mass Stroage 传输可能发生的四种错误 .............................................................................53
SCSI 命令 .......................................................................................................................................53
词语解释 ................................................................................................................................55
INQUIRY................................................................................................................................55
ModeSense..............................................................................................................................57
PREVENT-ALLOW MEDIUM REMOVAL .........................................................................57
ReadCapacity ..........................................................................................................................58
Read10 ....................................................................................................................................59
Write10 ...................................................................................................................................59
SCSI_TEST_UNIT_READY .................................................................................................60
USB Mass Storage Class – UFI Command Specification 1.0 第 5 节翻译...................................60
AT91 使用的 Sense Data........................................................................................................61
总结 ................................................................................................................................................62
附 A ...............................................................................................................................................63
CBW 是否总是由主机发往设备?...............................................................................63
CBW 中 SCSI 的命令大小是否都小于等于 16 个字节?如果大于的话,那命令就要
分包传输。 ....................................................................................................................63
控制传输总是以一个空包结束吗?.....................................................................................63

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值