当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Linux USB gadget设备驱动解析(2)---驱动调试
帖子发表于 : 2010-07-06 11:28 

注册: 2010-07-06 11:19
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
一、背景知识
1、USB Mass Storage类规范概述
USB 组织在universal Serial Bus Mass Storage Class Spaceification 1.1版本中定义了海量存储设备类(Mass Storage Class)的规范,这个类规范包括四个
独立的子类规范,即:
1. USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport
2.USB Mass Storage Class Bulk-Only Transport
3.USB Mass Storage Class ATA Command Block
4.USB Mass Storage Class UFI Command Specification
前两个子规范定义了数据/命令/状态在USB 上的传输方法。Bulk- Only 传输规范仅仅使用Bulk 端点传送数据/命令/状态,CBI 传输规范则使用Control/Bulk/Interrupt 三种类型的端点进行数据/命令/状态传送。后两个子规范则定义了存储介质的操作命令。ATA 命令规范用于硬盘,UFI 命令规范是针对USB 移动存储。
Microsoft Windows 中提供对Mass Storage 协议的支持,因此USB 移动设备只需要遵循 Mass Storage 协议来组织数据和处理命令,即可实现与PC 机交换数据。而Flash 的存储单元组织形式采用FAT16 文件系统,这样,就可以直接在Windows的浏览器中通过可移动磁盘来交换数据了,Windows 负责对FAT16 文件系统的管理,USB 设备不需要干预FAT16 文件系统操作的具体细节。
USB(Host)唯一通过描述符了解设备的有关信息,根据这些信息,建立起通信,在这 些描述符中,规定了设备所使用的协议、端点情况等。因此,正确地提供描述符,是USB 设备正常工作的先决条件。
Linux-2.6.26内核中在利用USB gadget驱动实现模拟U盘时主要涉及到file_storage.c、s3c2410_udc.c等驱动文件(这些文件的具体结构,将在下一篇文章中描述)。此时我们想先从这些代码中找到USB描述描述符,从中确定使用的存储类规范,从而确定协议。确定通讯协议是我们调试的基础。
存储类规范是由接口描述符决定的。接口描述符各项的定义义如下:



其中,bInterfaceClass、bInterfaceSubClass、bInterfaceProtocol可以判断出设备是否是存储类,以及属于哪种存储子类和存储介质的操作命令。
在file_storage.c文件中,

/* USB protocol value = the transport method */
#define USB_PR_CBI 0x00 // Control/Bulk/Interrupt
#define USB_PR_CB 0x01 // Control/Bulk w/o interrupt
#define USB_PR_BULK 0x50 // Bulk-only

/* USB subclass value = the protocol encapsulation */
#define USB_SC_RBC 0x01 // Reduced Block Commands (flash)
#define USB_SC_8020 0x02 // SFF-8020i, MMC-2, ATAPI (CD-ROM)
#define USB_SC_QIC 0x03 // QIC-157 (tape)
#define USB_SC_UFI 0x04 // UFI (floppy)
#define USB_SC_8070 0x05 // SFF-8070i (removable)
#define USB_SC_SCSI 0x06 // Transparent SCSI

......

http://www.hzlitai.com.cn/article/ARM11/SYSTEM/1746.html


页首
 用户资料  
 
2 楼 
 文章标题 : Re: Linux USB gadget设备驱动解析(2)---驱动调试
帖子发表于 : 2010-07-06 11:30 
头像

注册: 2008-03-25 15:49
帖子: 25877
地址: 谁知道?
送出感谢: 8
接收感谢: 10
linux那些事儿系列 ?


页首
 用户资料  
 
3 楼 
 文章标题 : Re: Linux USB gadget设备驱动解析(2)---驱动调试
帖子发表于 : 2010-07-12 10:05 

注册: 2010-07-06 11:19
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
Linux2.6.28标准版介绍:

图片

ARMSYS6410_Linux2.6.28标准版详细配置

引导装载

(u-boot1.1.6) Bootloader
初始化并装载启动linux内核
支持与DNW软件配合USB下载
支持设置内核启动参数
支持映像文件的固化
Nand Boot,SD Boot
提供从Nandflash启动和SD卡启动两个版本

内核及设备驱动

1,采用2.6.28.6版本内核
2,系统主频:533MHz
3,4路串口驱动(ttySAC0~3)
4,256M NandFlash驱动
5,1路10/100M以太网控制器驱动(DM9000)
6,2 ×5用户按键驱动
7,RTC实时时钟驱动
8,1路USB Host驱动(USB1.1)支持优盘、鼠标等
9,2路SD/MMC卡座驱动,支持热插拔
10,音频设备(WM9714),支持耳机和扬声器放音,音量可调
11,液晶(支持立宇泰电子TFT型液晶屏系列)驱动
12,支持4线触摸屏
13,支持H.263/264,MPEG4,VC-1编码和解码
14,支持JPEG图片的编解码
15,支持Post Processor
16,支持TV OUT
17,支持2D/3D
18,支持Camera(OV9650)
19,支持视频和JPEG编码
20,支持Watchdog

文件系统
支持/CRAMFS/EXT2/FAT/NFS/InitRAMFS /JFFS2/YAFFS2等文件系统
根文件系统采用NFS、YAFFS2、CRAMFS

NFS Client
NFS网络文件系统客户端

编译器
cross-4.2.2-eabi.tar.bz2

网络服务 TCP/IP
完整的TCP/IP协议
Telnet服务器
FTP客户端服务
Telnet远程登录
提供ifconfig,inetd等网络配置和服务程序
使用ping检查系统

基本命令
Busybox
Linux常用命令

触摸屏校准工具
TslibV1.4
触摸屏校准工具

图形界面
Qtpia2.2.0
图形界面系统。Trolltech 开发的用于嵌入式 Linux 的图形用户界面PDA版系统,支持浏览器,Medialplay播放器,文件管理器等等。

测试程序
1,视频硬件解码测试(H.263/H.264,MPEG4,VC-1格式)
2,多种视频格式同时解码(4窗口)测试
3,JPEG图像解码测试
4,摄像头预览和H.264编码测试
5,摄像头预览和JPEG编码测试
6,摄像头预览和MFC解码
7,视频解码TVOUT输出测试
8,摄像头预览和TVOUT输出测试
9,触摸屏设备驱动测试与TSLIB校准
10,AC97音频设备驱动测试
11,键盘驱动测试
12,以太网口驱动测试(PING)
13,ttySAC0~3串口驱动测试
14,两路SD/MMC卡驱动测试
15,主USB接口设备驱动测试


页首
 用户资料  
 
4 楼 
 文章标题 : Re: Linux USB gadget设备驱动解析(2)---驱动调试
帖子发表于 : 2010-07-19 10:48 

注册: 2010-07-06 11:19
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
Ubuntu版本:

图片

ARMSYS6410_ubuntu 9.04相关资源

引导装载
(u-boot1.1.6)
Bootloader
初始化并装载启动linux内核
支持设置内核启动参数
提供从SD卡启动的版本

内核及设备驱动
采用2.6.29.1版本内核
系统主频:533MHz
4路串口驱动(ttySAC0~3)
256M NandFlash驱动
2×5用户按键驱动
1路SD/MMC卡座驱动
液晶(支持立宇泰电子TFT型液晶屏系列)驱动
支持4线触摸屏

文件系统
支持EXT3根文件系统

编译器
Arm-none-linux-gnueabi

图形界面
Lxde-ubuntu


页首
 用户资料  
 
5 楼 
 文章标题 : Re: Linux USB gadget设备驱动解析(2)---驱动调试
帖子发表于 : 2010-08-16 14:35 

注册: 2010-07-06 11:19
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
图片

系统丰富


页首
 用户资料  
 
6 楼 
 文章标题 : Re: Linux USB gadget设备驱动解析(2)---驱动调试
帖子发表于 : 2011-10-27 9:18 

注册: 2011-10-27 9:02
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
给力的技术文章,顶起来!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译