ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:234.67KB ,
资源ID:21423663      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21423663.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LinuxUSBgadget设备驱动解析Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LinuxUSBgadget设备驱动解析Word文档格式.docx

1、 s3c2410_gpio_cfgpin(S3C2410_GPG9, S3C2410_GPG9_OUTP); switch (cmd) case S3C2410_UDC_P_ENABLE : s3c2410_gpio_setpin(S3C2410_GPG9, 1); /set gpg9 output HIGH break; case S3C2410_UDC_P_DISABLE : s3c2410_gpio_setpin(S3C2410_GPG9, 0); /set gpg9 output LOW case S3C2410_UDC_P_RESET : /FIXME! default: stati

2、c struct s3c2410_udc_mach_info smdk2410_udc_cfg _initdata = .udc_command = smdk2410_udc_pullup,static struct platform_device *smdk2410_devices _initdata = , &s3c_device_usbgadget, /*USB gadget device设备登记*/static void _init sdmk2410_init(void) u32 upll_value; set_s3c2410fb_info(&smdk2410_lcdcfg); s3c

3、24xx_udc_set_platdata(&smdk2410_udc_cfg); /* 初始化*/ s3c_device_sdi.dev.platform_data = &smdk2410_mmc_cfg; /* Turn off suspend on both USB ports, and switch the * selectable USB port to USB device mode. */ s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST | S3C2410_MISCCR_USBSUSPND0 | S3C2410_MISCCR_USBSUS

4、PND1, 0x0); /* 设置USB时钟 */ upll_value = ( 0x78 S3C2410_PLLCON_MDIVSHIFT) | (0x02 S3C2410_PLLCON_PDIVSHIFT) | (0x03 USB Gadget Support - USB Peripheral Controller (S3C2410 USB Device Controller) - S3C2410 USB Device Controller * S3C2410 udc debug messages USB Gadget Drivers Storage Gadget3、编译内核#make z

5、Image #make modules在目录drivers/usb/gadget下生成g_加载驱动,测试功效利用前面的生成的内核,启动系统后,加载g_#insmod g_ # insmod g_ stall=0 removable=1 0.03 USB: usb_gadget_register_driver() g_ 0.04 USB: binding gadget driver 0.05 USB: s3c2410_set_selfpowered() g_ gadget: Storage Gadget, version: 20 October 2004 Number of LUNs=1 g_

6、gadget-lun0: ro=0, file: /dev/mtdblock3 0.06 USB: udc_enable called smdk2410_udc: Pull-up enable连接设备到windows,windows系统会自动设备到一个新的U盘参加。格式化U盘,存入文件。卸载U盘后,在目标板上执行如下操纵:# mkdir /mnt/gadget # mount -t vfat /dev/mtdblock2 /mnt/gadget/ #ls可以看到windows存入U盘的文件。二、usbnet功效的实现配置内核支持usbnet USB Gadget Drivers Etherne

7、t Gadget (with CDC Ethernet support) * RNDIS support2、编译内核在目录drivers/usb/gadget下生成g_ether.ko3、加载驱动,测试功效利用前面的生成的内核,启动系统后,加载g_ether.ko#insmod g_ether.ko #ifconfig usb0 192.168.1.120 usb0 Link encap:Ethernet HWaddr 5E:C5:F6:D4:2B:91 inet addr:192.168.1.120 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROA

8、DCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:253 errors:0 dropped:0 overruns:0 frame: TX packets:43 errors:0 carrier: collisions:0 txqueuelen:1000 RX bytes:35277 (34.4 KiB) TX bytes:10152 (9.9 KiB)连接设备到windows,windows系统会提示安装驱动,凭据提示安装上RNDIS驱动。这个驱动可以在网络上找到。此时windows会新生成一个网络连接,配置它的ip地点等信息。然后就可以

9、和目标系统通过USB实现网络通讯了。Linux USB gadget设备驱动解析(2)-驱动调试作者:刘洪涛, 华清远见嵌入式学院金牌讲师。这一节主要把在实现“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

10、/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 三种类型的端点进行数据/命令/状态传送。后两个子范例则界说

11、了存储介质的操纵命令。ATA 命令范例用于硬盘,UFI 命令范例是针对USB 移动存储。 Microsoft Windows 中提供对Mass Storage 协议的支持,因此USB 移动设备只需要遵循 Mass Storage 协议来组织数据和处置惩罚命令,即可实现与PC 机互换数据。而Flash 的存储单位组织形式接纳FAT16 文件系统,这样,就可以直接在Windows的浏览器中通过可移动磁盘来互换数据了,Windows 卖力对FAT16 文件系统的治理,USB 设备不需要干涉FAT16 文件系统操纵的具体细节。 USB(Host)唯一通过描述符了解设备的有关信息,凭据这些信息,创建起通

12、信,在这 些描述符中,划定了设备所使用的协议、端点情况等。因此,正确地提供描述符,是USB 设备正常事情的先决条件。 Linux-2.6.26内核中在利用USB gadget驱动实现模拟U盘时主要涉及到、s3c2410_udc.c等驱动文件(这些文件的具体结构,将在下一篇文章中描述)。此时我们想先从这些代码中找到USB描述描述符,从中确定使用的存储类范例,从而确定协议。确定通讯协议是我们调试的底子。 存储类范例是由接口描述符决定的。接口描述符各项的界说义如下: 其中,bInterfaceClass、bInterfaceSubClass、bInterfaceProtocol可以判断出设备是否是存

13、储类,以及属于哪种存储子类和存储介质的操纵命令。 在文件中, /* 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 / Red

14、uced 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 默认的情况是: mod_data = / Default values .tr

15、ansport_parm = BBB .protocol_parm = SCSI默认的赋值如下: bInterfaceClass=08 表现:存储类 bInterfaceSubClass=0x06 表现:透明的SCSI指令 bInterfaceProtocol=0x50 表现:bulk-only 传输 2、BulkOnly 传输协议 下面看看BulkOnly 传输协议:(详细的范例请阅读Universal Serial BusMass Storage ClassBulk-Only Transport) 设备插入到USB 后,USB 即对设备进行搜索,并要求设备提供相应的描述符。在USBHost

16、 得到上述描述符后,即完成了设备的配置,识别出为BulkOnly 的Mass Storage 设备, 然后即进入BulkOnly 传输方法。在此方法下,USB 与设备间的所有数据均通过BulkIn和BulkOut 来进行传输,不再通过控制端点传输任何数据。 在这种传输方法下,有三种类型的数据在USB 和设备之间传送,CBW、CSW 和普通数据。CBW(Command Block Wrapper,即命令块包)是从USB Host 发送到设备的命令, 命令格式遵从接口中的bInterfaceSubClass 所指定的命令块,这里为SCSI 传输命令集。USB设备需要将SCSI 命令从CBW 中提取

17、出来,执行相应的命令,完成以后,向Host 发出反应 当前命令执行状态的CSW(Command Status Wrapper),Host 凭据CSW 来决定是否继承发 送下一个CBW 或是数据。Host 要求USB 设备执行的命令可能为发送数据,则此时需要将 特定命据传送出去,完毕后发出CSW,以使Host 进行下一步的操纵。USB 设备所执行的操纵可用下图描述:CBW的格式如下:dCBWSignature: CBW的标识,牢固值:43425355h (little endian)。 dCBWTag: 主机发送的一个命令块标识,设备需要原样作为dCSWTag(CSW中的一部门)再发送给Host

18、;主要用于关联CSW到对应的CBW。 dCBWDataTransferLength: 本次CBW命令要求在命令与回应之间传输的字节数。如果为0,则不传输数据。 bmCBWFlags: 反应数据传输的偏向,0 表现来自Host,1 表现发至Host; bCBWLUN: 对付有多个LUN逻辑单位的设备,用来选择具体目标。如果没有多个LUN,则写0。 bCBWCBLength: 命令的长度,范畴在016.CBWCB: 传输的具体命令,切合bInterfaceSubClass.中界说的命令范例,此处是SCSI CSW命令格式如下: dCSWSignature: CSW的标识,牢固值:53425355h

19、 (little endian) dCSWTag: 设置这个标识和CBW中的dCBWTag一致,参照上面关于dCBWTag的解释 dCSWDataResidue: 还需要传送的数据,此数据凭据dCBWDataTransferLength本次已经传送的数据得到 bCSWStatus: 指示命令的执行状态。如果命令正确执行,bCSWStatus 返回0 即可。3、SCSI指令集 Bulk-Only 的CBW 中的CBWCB 中的内容即为如下格式的命令块描述符(Command Block Descriptor)。SCSI-2 有三种字长的命令,6 字节、10字节和12字节,Microsoft Win

20、dows 情况下支持12 字节长的命令。 Operation Code: 操纵代码,表现特定的命令。高3 位为Group Code,共有8 种组合, 即8 个组,低5 五位为Command Code,可以有32 种命令。 Logicol unit Number: 为了兼容SCSI1 而设的,此处可以不必体贴。 Logical block address: 为高位在前,低位在后的逻辑块地点,即扇区地点。第2 位为高位,第3、4、5 依次为低位。 Transfer length: 为需要从逻辑块地点处开始传输的扇区数(好比在Write 命令中)。 Parameter list length: 为需

21、要传输的数据长度(好比在Mode Sense 命令中); Allocation length: 为初始步伐为返回数据所分派的最大字节数,此值可以为零,表现不需要传送数据。 SCSI指令集的Direct Accesss 类型存储介质的传输命令有许多, Mass Storage协议只用到了其中的一些。更多的SCSI指令拜见: 指令代码 指令名称 说明 04h Format Unit 格式化存储单位 12h Inquiry 索取器件信息 1Bh Start/Stop load/unload 55h Mode select 允许Host对外部设备设置参数。 5Ah Mode Sense 向host传输

22、参数 Eh Prevent/Allow Medium Removal 写掩护 28h Read(10) Host读存储介质中的二进制数据 A8h Read(12) 同上,不外比力详细一点 25h Read Capacity 要求设备返回当前容量 23h Read Format Capacity 查询当前容量及可用空间 03h Request Sense 请求设备向主机返回执行结果,及状态数据 01h Rexero Unit 返回零轨道 2Bh Seek(10) 为设备分派到特定地点 1Dh Send Diagnostic 执行固件复位并执行诊断 00h Test Unit Ready 请求设备

23、陈诉是否处于Ready状态 2Fh Verify 在存储中验证数据 2Ah Write(10) 从主机向介质写二进制数据 AAh Write(12) 同上,不外比力详细 2Eh Write and Verify 写二进制数据并验证 对付差别的命令,其命令块描述符略有差别,其要求的返回内容也有所差别,凭据相 应的文档,可以对每种请求作出适当的回应。好比,下面是INQUIRY 请求的命令块描述符和其返回内容的数据格式:如:INQUIRY 命令描述符:返回数据格式 Host 会依次发出INQUIRY、Read Capacity、UFI Mode Sense 请求,如果上述请求的返回结果都正确,则Ho

24、st 会发出READ 命令,读取文件系统0 簇0 扇区的MBR 数据,进入文件系统识别阶段。4、利用USB View视察结果 可通过USB View软件检察到USB设置阶段获取到的信息。 二、出现的主要问题 在调试历程中遇到了一个问题。现象是:在目标板加载完驱动后,即执行完: 后,接好USB线。此时在windows端设备出有usb storage设备参加,但出现不了盘符。 下面记载下调试历程。三、调试历程 凭据范例,当完成SCSI指令会合Inquiry 命令时,可以出现盘符。所以可以通过bushound软件检察通讯历程,找出原因。 下面是利用bushound东西在出现问题时收罗到的数据。 De

25、v Phase Data Info Time Cmd.Phase. Ofs - - - - - - 26 CTL 80 06 00 01 - 00 00 12 00 GET DESCRIPTR 0us 1.1.0 26 DI 12 01 10 01 - 00 00 00 10 - 25 05 a5 a4 - 12 03 01 02 .%. 4.8ms 1.2.0 03 01 . 1.2.16 26 CTL 80 06 00 02 - 00 00 09 00 GET DESCRIPTR 14us 2.1.0 26 DI 09 02 20 00 - 01 01 04 c0 - 01 . . 3.9ms 2.2.0 26 CTL 80 06 00 02 - 00 00 20 00 GET DESCRIPTR 16us 3.1.0 26 DI 09 02 20 00 - 01 01 04 c0 - 01 09 04 00 -

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1