From:http://www.csksoft.net/blog/post/linux_storage_mod.html
这原本是我这学期OS课程设计最后一次的作业,因为比较有意思,所以就把它公布出来吧。
作业要求:
开发Linux下的usb存储设备的驱动,仅需支持自己的u盘即可。
下面是我写的驱动,他基于linux下自带的usb-storage驱动(/driver/usb/storage)。仅支持基于Bulk-only传输模式下的ATAPI协议的存储设备。我使用自己的SAMSUNG D828手机的usb mass storage功能测试成功。
使用方法是insmod。
代码:
http://www.csksoft.net/data/legacyftp/Products/code_and_lib/csk_udisk_mgr.rar
下面是这次作业报告的节选,希望对需要研究usb-storage或者想自己开发linux u盘驱动(虽然那已经没有必要了)的朋友有帮助。这次报告的原文后面给出的地址。
1.USB MASS STORAGE 协议分析
|
Sub Class
|
协议名
|
说明
|
|
0x01
|
Reduced Block Commands(RBC)
|
通常为
Flash Rom
介质的存储设备使用
|
|
0x02
|
8020i, MMC-2(ATAPI)
|
通常为
CD/DVD
设备使用
|
|
0x03
|
QIC-157
|
常用于磁带机设备
|
|
0x04
|
UFI
|
常用于软磁盘设备
(FDD)
|
|
0x05
|
8070i
|
常用于软磁盘设备或者其他设备
|
|
0x06
|
SCSI
协议
|
|
|
0x07-0xFF
|
保留
|
|
|
接口协议号
|
协议名
|
|
0x00
|
Control/Bulk/Interrupt
协议
(CBI)
带有
command completion
中断
|
|
0x01
|
Control/Bulk/Interrupt
协议
(CBI)
不带有
command completion
中断
|
|
0x50
|
Bulk-Only
协议
|
|
0x02-0x4F
|
保留
|
|
0x51-0xFF
|
保留
|
2.自带驱动usb-storage的简要原理分析
|
文件
|
功能说明
|
|
usb.c/.h
|
Usb-storage
的核心文件,是整个驱动的框架代码
|
|
transport.c/.h
|
实现了对于不同通讯方式的支持函数
|
|
scsiglue.c/.h
|
Scsi
设备的模拟函数
|
|
protocol.c/.h
|
实现了对于几种通讯协议的
SCSI
命令翻译函数
|
|
initializers.c/.h
|
对于某些设备的专用初始化函数
|
|
unusual_devs.h
|
对于非常规设备
ProductID
和
VendorID
的支持
|
|
shuttle_usbat.c/.h
|
支持
SCM Microsystems
设备的驱动
|
|
sddr55.c/.h
|
SanDisk SDDR-55 SmartMedia reader
的驱动
|
|
sddr09.c/.h
|
anDisk SDDR-09 SmartMedia reader
的驱动
|
|
onetouch.c/.h
|
Maxtor OneTouch USB hard drive
驱动支持
|
|
libusual.c
|
对于常规设备的
ProductID
和
VendorID
的支持
|
|
karma.c/.h
|
Rio Karma
设备驱动
|
|
jumpshot.c/.h
|
Lexar "Jumpshot" Compact Flash reader
驱动
|
|
isd200.c/.h
|
ISD200
专属通讯协议支持
|
|
freecom.c/.h
|
Freecom USB/IDE
转化器支持
|
|
dpcm.c/.h
|
DPCM-USB CompactFlash/SmartMedia reader
设备支持
|
|
debug.c/.h
|
用于调试的工具函数
|
|
datafab.c/.h
|
Datafab USB Compact Flash reader
驱动支持
|
|
alauda.c/.h
|
Alauda-based card readers
驱动支持
|
3.对usb-storage的简化
- 删除其中对罕见设备的支持
- 删除Delayed Device Scan机制
- 删除对于除了本次试验所用u盘设备外其他的通讯协议和通讯方式的处理函数。
- 对于仅调用一次的函数作inline处理
4.制作专用驱动
报告原文,请勿随意抄袭!
ftp://FTP_Visitor:visitor@ftp.csksoft.net/Public/Article/osprj_mass_storage_csk.rar
5102



被折叠的 条评论
为什么被折叠?



