您的位置:笔笔发 技术资料 嵌入式操作系统 Android 正文
内容搜索
笔笔发:技术产业信息平台----成就有识之士创业梦想的殿堂
热门内容
推荐内容
Linux USB gadget设备驱动解析(2)---驱动调试

本文章共15879字,分10页,当前第1页,快速翻页:
 

这一节主要把在实现“linux模拟U盘功能”过程中的一些调试过程记录下来,并加以解析。

一、背景知识 
    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)
 

 
点这里复制本页地址发送给您QQ/MSN上的好友

相关文章

USB gadget设备驱动解析(1)——功能体验
面对不断升级的内核,如何学习linux设备驱动
RT73 wifi无线网卡驱动移植过程
实例解析linux内核I2C体系结构(1)
Android HAL实例解析
进一步分析Android HAL
让你定制的Launcher成为系统中唯一的Launch
创建android sdk(包含emulator)
视频电话中camera部分数据流分析
编译自己的本地库介绍
USB gadget设备驱动解析(3)——驱动结构分
Linux USB gadget设备驱动解析(4)--编写一
linux-2.6.26内核中ARM中断实现详解(1)
linux-2.6.26内核中ARM中断实现详解(2)
在Android中使用OpenCv
android2.3源码下载编译全过程
[Android算法] Activity的四种加载模式(转
Android2.2平台上支持多camera
edittext 插入表情(基于socket方式)
Android用户的一些误区——关于进程管理

相关评论


本文章所属分类:首页 技术资料 嵌入式操作系统 Android


反馈意见和建议