U盘驱动程序设计

合集下载

USB驱动程序开发全程

USB驱动程序开发全程

USB驱动程序开发全程编写USB驱动程序步骤:1所有usb驱动都必须创建主要结构体struct usb_driver struct usb_driver->struct module *owner(有他可正确对该驱动程序引用计数,应为THIS_MODULE)->const char *name(驱动名字,运行时可在查看 /sys/bus/usb/drivers/)->const struct usb_device_id *id_table(包含该驱动可支持的所有不同类型的驱动设备,没添探测回调函数不会被调用)->int (*probe)(struct usb_interface *intf,const struct usb_device_id *id)(usb驱动探测函数,确认后struct usb_interface 应恰当初始化,然后返0,如果出错则返负值)->void(*disconnect)(struct usb_interface *intf)(当struct usb_interface 被从系统中移除或驱动正从usb核心中卸载时,usb核心将调用此函数)代码实例:static struct usb_driver skel_driver={.owner = THIS_MODULE,.name = "skeleton",.id_table = skel_table,.probe = skel_probe,.disconnect = skel_disconnect,};↓2usb_register()注册将struct usb_driver 注册到usb核心,传统是在usb驱动程序模块初始化代码中完成该工作的static int __init usb_skel_init(void){...usb_register(&skel_driver);...}↓3struct usb_device_id usb核心用该表判断哪个设备该使用哪个驱动程序,热插拔脚本使用它来确定当一个特定的设备插入到系统时该自动装载哪个驱动程序。

USB驱动程序编写

USB驱动程序编写

USB驱动程序编写linux‎下usb驱动编写(内核2.4)—‎—2.6与此接口有区别2006-‎09-15 14:57我们知道了‎在Linux下如何去使用一些最常‎见的USB设备。

但对于做系统设计‎的程序员来说,这是远远不够的,我‎们还需要具有驱动程序的阅读、修改‎和开发能力。

在此下篇中,就是要通‎过简单的USB驱动的例子,随您一‎起进入USB驱动开发的世界。

‎USB骨架程序(usb-ske‎l eton),是USB驱动程序的‎基础,通过对它源码的学习和理解,‎可以使我们迅速地了解USB驱动架‎构,迅速地开发我们自己的USB硬‎件的驱动。

USB驱动开发‎在掌握了USB设备的配置后,‎对于程序员,我们就可以尝试进行一‎些简单的USB驱动的修改和开发了‎。

这一段落,我们会讲解一个最基础‎U SB框架的基础上,做两个小的U‎S B驱动的例子。

USB骨架‎在Linux kernel‎源码目录中driver/usb/‎u sb-skeleton.c为我‎们提供了一个最基础的USB驱动程‎序。

我们称为USB骨架。

通过它我‎们仅需要修改极少的部分,就可以完‎成一个USB设备的驱动。

我们的U‎S B驱动开发也是从她开始的。

‎那些linux下不支持的USB‎设备几乎都是生产厂商特定的产品。

‎如果生产厂商在他们的产品中使用自‎己定义的协议,他们就需要为此设备‎创建特定的驱动程序。

当然我们知道‎,有些生产厂商公开他们的USB协‎议,并帮助Linux驱动程序的开‎发,然而有些生产厂商却根本不公开‎他们的USB协议。

因为每一个不同‎的协议都会产生一个新的驱动程序,‎所以就有了这个通用的USB驱动骨‎架程序,它是以pci 骨架为模‎板的。

如果你准备写一个li‎n ux驱动程序,首先要熟悉USB‎协议规范。

USB主页上有它的帮助‎。

一些比较典型的驱动可以在上面发‎现,同时还介绍了USB urbs‎的概念,而这个是usb驱动程序中‎最基本的。

USB驱动程序的编写采用WDM 驱动程序

USB驱动程序的编写采用WDM 驱动程序

USB驱动程序的编写采用WDM 驱动程序。

WDM 驱动程序是一些例程的集合,它们被动地存在,等待主机系统软件(PnP 管理器、I/O 管理器、电源管理器等)来调用或激活它们。

具体驱动程序不同,其所包含的例程也不同。

一个WDM 驱动程序的基本组成包括以下5个例程:(1)驱动程序入口例程:处理驱动程序的初始化。

(2)即插即用例程:处理PnP 设备的添加、删除和停止。

(3)分发例程:处理用户应用程序发出的各种 I/O 请求。

(4)电源管理例程:处理电源管理请求。

(5)卸载例程:处理驱动程序的卸载。

包含文件:ezusbsys.c, ezusbsys.h,ezusbsys.rc, resource.h, version.h, makefile,sources)在ezusbsys.c文件中,包含了上述五个例程:ezusbsys.h中定义了各种数据结构还有各种IOCTL控制码,用于不同数据的读写。

Ezusbsys.c 中实现了各种驱动例程。

包含了上述五个所说例程外还包含了其他例程,课程从下面的驱动程序入口例程得出一些信息。

驱动程序入口例程:NTSTATUSDriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath){NTSTATUS ntStatus = STATUS_SUCCESS;PDEVICE_OBJECT deviceObject = NULL;DriverObject->MajorFunction[IRP_MJ_CREATE] = Ezusb_Create; DriverObject->MajorFunction[IRP_MJ_CLOSE] = Ezusb_Close;//分发例程DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = Ezusb_ProcessIOCTL;//即插即用例程DriverObject->MajorFunction[IRP_MJ_PNP] = Ezusb_DispatchPnp;//电源管理例程DriverObject->MajorFunction[IRP_MJ_POWER] = Ezusb_DispatchPower;//设备添加例程DriverObject->DriverExtension->AddDevice = Ezusb_PnPAddDevice;//卸载例程DriverObject->DriverUnload = Ezusb_Unload;return ntStatus;}在原有框架下,主要实现了的代码段在于ezusbsys.c文件中的如下例程:NTSTATUSEzusb_Read_Write( IN PDEVICE_OBJECT fdo, IN PIRP Irp )在该例程中实现对大数据块的读写控制和实现。

“操作系统”实验教学之U盘驱动程序开发-文档资料

“操作系统”实验教学之U盘驱动程序开发-文档资料

“操作系统”实验教学之U盘驱动程序开发1引言设备管理是操作系统的一个关键内容, 在实际操作系统的开发中,有相当多的代码是各类设备的驱动程序。

因此, 在操作系统实践环节中设计一个合适的设备驱动程序开发实验具有非常重要的意义。

本文介绍了一个 Linux 环境下的 U盘驱动程序开发实验的设计与实施情况。

U盘是一个典型的块设备 , 这类设备种类多、使用广泛, 其驱动程序的开发也比字符设备复杂。

为了降低复杂性, 许多相关的实验安排都是针对一个虚拟设备, 如内存盘 (RAM disk) 。

但这样做也有它的弊端 , 即与真实物理设备的驱动程序开发差异很大, 学生不能更真实地了解设备管理的实际情况。

因此, 如果能够设计一个真实块设备( 如 U 盘) 的驱动程序开发实验 , 将能够弥补上述缺憾。

在 Linux 环境下 , 已经有一个通用的 U 盘驱动程序 usb-storage.ko, 其源程序放在目录 drivers\usb\storage 下( 相对于内核源码根目录 ) 。

但这个驱动的实现相当复杂 , 它将一个 USB设备模拟成了一个 SCSI设备 , 进而通过 SCSI设备的接口来访问 , 该驱动程序很难被学生所理解。

在我们设计的实验中 , 希望学生开发一个相对简单些的 U盘驱动程序 , 不求高性能 , 只求结构明朗、清晰易懂, 主要是让学生掌握一个实际块设备的驱动方式, 从而加深对设备管理原理的理解。

事实上 , 本实验开发的驱动程序应该能够适用于所有基于Bulkonly 传输协议的USB大容量存储设备(USB Mass Storage), 比如USB移动硬盘和 USB外置光驱 ,U 盘只是其中的一种。

由于 USB大容量存储设备具有容量大、速度快、连接灵活、即插即用、总线供电等优点, 它们得到了广泛使用 , 掌握这类设备驱动程序的开发技术无疑具有很强的实用性。

本文第二节介绍此实验的内容设计情况 , 包括实验过程和思路的描述 , 第三节介绍实验的组织情况和实验效果分析, 最后是小结。

USB设备的驱动程序实现

USB设备的驱动程序实现

USB设备的驱动程序实现
USB驱动是用来控制使用USB接口的设备的软件程序,其实现是将实
际的硬件设备抽象为虚拟的设备,使其能够在计算机操作系统上应用。


般来讲,当你将USB设备插入你的计算机时,它将通过计算机的USB主控
芯片找到USB设备,然后测试它的功能,并决定它是否能够被用来通信,
最后安装相应的驱动程序。

实际的USB驱动程序的实现有若干方法,其中
有两种常用的技术:应用程序编程接口(API)和驱动程序模板。

1、应用程序编程接口(API)
API是一组用于访问操作系统提供的服务和功能的特殊指令序列。


用程序编程接口(API)可以用来创建USB驱动程序,其实现包括以下步骤:
(1)定义硬件设备的描述
在编写USB驱动程序时,首先需要定义硬件设备,即定义设备的功能,记录其编号、最大支持通信速率、硬件连接方式、发送和接收设备数据的
方式以及支持的驱动软件要求等信息。

(2)实现设备驱动的关键函数
关键函数是控制USB设备正常工作所必需的函数,包括初始化函数、
发送和接收数据的函数、获取设备状态的函数以及关闭设备的函数等。

usb驱动程序设计

usb驱动程序设计

课程设计专业综合课程设计报告班级:通信10--02班姓名:王瑾学号:1006030218指导教师:杨春玲成绩:电子与信息工程学院信息与通信工程系随着人们生活水平的提高,我们用到的USB设备也越来越多,但是Linux在硬件配置上仍然没有做到完全即插即用,对于Linux怎样配置和使用他们,也越来越成为困扰我们的一大问题;本文的目地是使大家了解怎样编制USB设备驱动,为更好地配置和使用USB 设备提供方便;对于希望开发Linux系统下USB设备驱动的人员,也可作为进一步学习USB驱动的大体架构进而编写出特殊USB设备的驱动程序。

关键词:S3C2440A微处理器,Linux系统,USBB基础知识 (1)2.硬件电路的设计 (1)B驱动程序基础 (1)B驱动程序 (4)5.驱动模块的编译、配置和使用 (14)6.总结 (15)7.参考文献 (15)B基础知识USB是英文Universal Serial Bus的缩写,意为通用串行总线。

USB最初是为了替代许多不同的低速总线(包括并行、串行和键盘连接)而设计的,它以单一类型的总线连接各种不同的类型的设备。

USB的发展已经超越了这些低速的连接方式,它现在可以支持几乎所有可以连接到PC上的设备。

最新的USB规范修订了理论上高达480Mbps的高速连接。

Linux内核支持两种主要类型的USB驱动程序:宿主系统上的驱动程序和设备上的驱动程序,从宿主的观点来看(一个普通的宿主也就是一个PC机),宿主系统的USB设备驱动程序控制插入其中的USB设备,而USB设备的驱动程序控制该设备如何作为一个USB设备和主机通信。

2.硬件电路的设计步进电机开环控制系统主要由中央控制器、步进电机驱动器、传感器以及步进电机四大部分组成。

本系统采用基于ARM920t内核的S3C244 0A微处理器作为控制系统的中央控制器,该芯片主频400MHz,最高可达到533MHz,内含多种设备接口,存储器使用64MB的Nand Flash和64MB的SDRAM。

U盘启动的原理和程序制作方法

U盘启动的原理和程序制作方法

U盘启动的原理和程序制作方法随着计算机技术的快速发展,使用U盘作为启动盘已经成为了一种比较流行的操作方式。

本文将介绍U盘启动的原理以及制作U盘启动程序的方法。

U盘启动的原理在计算机启动的过程中,系统从BIOS开始加载,然后再将控制权转交给硬盘上的操作系统,让其继续加载并运行。

但是,在某些情况下,计算机的硬盘出现了问题,使得操作系统无法正常加载,而此时我们可以使用U盘来进行启动。

U盘启动的原理主要是通过以下两个步骤:1. U盘格式化U盘格式化是指将U盘的分区表以及文件系统等信息清空,使得U盘可以重新被写入新的信息。

在制作U盘启动程序之前,我们必须先将U盘进行格式化,然后再将需要的启动程序写入其中。

2. U盘设置为启动盘在确保U盘已经格式化完成之后,我们需要将U盘设置为计算机的启动盘。

这通常需要通过改变BIOS设置来实现。

改变BIOS设置的方法会因计算机品牌以及型号而有所不同,通常在启动计算机之前,按下指定的按键就可以进入BIOS设置界面。

制作U盘启动程序的方法制作U盘启动程序的方法主要可以分为两种:使用第三方程序和手动制作。

1. 使用第三方程序制作U盘启动程序的第三方工具有很多,这里介绍一些比较流行的工具:•Rufus:Rufus是一个免费的、开源的U盘启动程序创建工具。

它支持多种操作系统,有很好的兼容性。

使用Rufus可以快速地创建U盘启动程序。

•UNetbootin:UNetbootin也是一个免费的启动盘创建工具,它支持多个不同操作系统的启动程序制作。

和Rufus一样,UNetbootin也非常容易使用。

2. 手动制作手动制作U盘启动程序需要一定的计算机技术知识。

以下是手动制作的步骤:•下载启动盘映像文件:启动盘映像文件是一个完整的操作系统镜像,可以从操作系统的官方网站下载。

比较常用的系统有Windows、Ubuntu等。

•U盘格式化:使用U盘制作启动盘前,必须首先将U盘进行格式化。

在格式化时,一般会选择FAT32分区格式,这是因为FAT32格式被几乎所有计算机硬件和软件都支持。

08基于ARM的U盘驱动程序设计要点

08基于ARM的U盘驱动程序设计要点

目录摘要(Abstract) (1)前言 (2)第1章 CH375接口芯片简介1.1概述 (3)1.2 CH375芯片内部结构及性能特点 (3)1.3 芯片引脚说明 (4)第2章 U盘的文件管理2.1 U盘的文件系统 (8)2.2 单片机读写U盘文件的层次性 (9)第3章 ARM单片机与U盘的硬件接口3.1 ARM单片机LPC2368简介 (11)3.2 硬件接口说明 (12)第4章系统软件设计4.1 软件流程说明 (14)4.2 系统初始化及设备检测 (14)4.3单片机对CH375的操作流程 (15)4.4 文件操作说明 (16)4.5 软件设计步骤 (17)结论 (22)参考文献 (23)致谢 (24)附录 (25)摘要:介绍了一种USB总线的通用接口芯片CH375,并在此基础上说明了一种基于ARM的单片机系统读写U盘的基本方法。

单片机只要在原硬件系统中增加1个CH375芯片就可以直接调用CH375提供的子程序库来对U盘中的数据进行读写,从而实现了普通单片杌与U盘的通讯功能,方法简单、便于操作、综合成本比较低,具有较大的推广应用价值。

关键词:U盘;CH375接口芯片;LPC2368Abstract:A general purpose interface chip CH375 for USB is introduced in this paper.Based On which a new method of using external single chip microcomputer ARM to read and write the flash disk is given.Only adding one CH375 chip to the single chip microcomputer’s hardware system,the operator can use the program given by the CH375 to read the data from the flash disk and write the data to it. So we can realize the communication between the single chip microcomputer and the flash disk.This method is very simple and can be operated easily.Keywords:USB device;CH375 interface chip;LPC2368前言随着计算机应用技术的飞速发展,移动存储设备得到了广泛的应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

16
FLIP软件使用方法-1
启动软件,首先选择器件
插入设备,选择USB Port Connection进行USB连接,单击Open按钮打开USB设备。 可以查看内部寄存器状态。
17
FLIP软件使用方法-2
编程前需要载入HEX文件。 如需要重新写入HEX文件,可以对芯片进行擦除。
单击写入图标,将载入的HEX数据写入FLASH中。
14
Keil μVision2软件使用方法-4
选择菜单“Project”-〉“Options for Target’Trager 1’”进行设置。
在弹出的对话框的“Output”页中选择“Create HEX Files”
15
Keil μVision2软件使用方法-5
代码写好后,我们就可以对其进行编译了。
硬件电路综合课程设计
—电子电路硬件设计(II)
1
课设内容
一、电路板元件焊接 (1周) 二、U盘驱动程序设计(1周)
三、交课设报告(小组为单位,要区分每个人的工作量)
2
一、电路板元件焊接 拿到电路板不要把所有的元件一下全都焊上,这样最后出问题了 查找很困难。问题可能是焊接不牢、焊错、芯片问题,所以应该 有一个合理的焊接调试计划,边焊接边调试就可以准确发现问题、 及时解决。焊接调试步骤: 1.通过USB接口供电时的电源调试(参照原理图和电路板对照) 2.电池供电部分电源调试 3.单片机最小系统调试:芯片、晶振电路、复位电路3部分 4.存储器调试(U盘调试) 5.键盘调试 6.D/A转换及音频放大部分调试 7.MP3+U盘整机软硬件集成调试。
32K Pages =1024Blocks 第一半Page寄 第二半Page寄 存器 存器
512B
16B
8bit
Page寄存器
I/O0-I/O7 512B
16B
16MB三星K9F208U0A FLASH
1个Page为1个扇区 簇=2Block=64扇区=512×64=32K FLASH读写特点:以Page为单位读写;写前先擦除原有内容; 一次至少擦除一个Block
20
USB海量存储设备(U盘)基本知识-1
USB是通用串行总线(Universal Serial Bus)缩写。包括: (1)USB主机(Host):USB主控制器。 (2)USB设备(Device):USB设备,如U盘、移动硬盘等。 (3)USB集线器(Hub):用于扩展USB端口设备,主控器上带一个根集线器 。 USB通信的建立是主从模式,通信只能发生在主机和设备之间。 USB的传输类型: (1)控制传输——一般用于短的、简单的对设备的命令和状态反馈,例如用 于总线控制的0号管道。 (2)同步传输——按照有保障的速度(可能但不必然是尽快地)传输,可能 有数据丢失,例如实时的音频、视频。 (3)中断传输——用于必须保证尽快反应的设备(有限延迟),例如鼠标、 键盘。 (4)批量传输——使用余下的带宽大量地(但是没有对于延迟、连续性、带 宽和速度的保证)传输数据,例如普通的文件传输。
怎样验证每一步焊接成功与否见下几页。
3
1.通过USB接口供电时的电源调试 1)相关电阻焊接 2)USB插座焊接 3)AS1117芯片焊接 4)发光二极管焊接(注意方向:将万用表置于二极管档,用表笔接 触二极管两极,发光时黑笔对应的为GND) 5)通电前先测试一下USB接口的5V和GND是否短路 6)通电测试。将USB插入计算机上的USB接口,同时用手接触 AS1117芯片,如果发现有明显发热,立即取下,检查问题。如果不 发热,二极管也亮了,说明这部分电路工作正常。用万用表测输出 电压是否为3.3V,AT89C51SND1C工作电压为2.7V~3.3V,超出此 范围,芯片将无法工作。
22
USB海量存储设备(U盘)基本知识-3
23
USB海量存储设备(U盘)基本知识-4
24
USB海量存储设备(U盘)基本知识-5
25
USB海量存储设备(U盘)基本知识-6
26
USB海量存储设备(U盘)基本知识-7
SCSI指令集协议 Bulk_Only的CBW中的CBWCB中的内容即为SCSI-2格式的命令块描述符。SCSI-2 有3种字长的命令,6位、10位、12位。Windows环境下支持12位字长的命令。 SCSI命令包括操作代码,扇区地址,扇区数,需要传输数据长度等。 SCSI-2协议见“协议资料\文件系统及Mass Storage有关资料\scsi_2协 议.pdf”文件
27
USB海量存储设备(U盘)基本知识-8
Flash的文件系统 FAT文件系统结构一般分为: (1) 保留区(Reserved Region); (2) FAT区(File Allocation Table)文件分配表; (3) 根目录区(Root Directory Region); (4) 文件和目录数据区。
19
C51 程序设计基本知识
数据的存储方式:在C51中有两个比较特殊的类型,code和xdata。 code:定义了一个不可修改的变量,其内容与程序一起放在程序存 储区中,执行过程中不需要修改其值。 code unsigned char Device_Descriptor[18]={…}; xdata:定义一个外部地址,可以像访问变量一样访问此地址。 比如在Flash的控制中,使用如下语句定义Flash的地址。 xdata BYTE rKM29UXDATA _at_0x4000; 以后要读写Flash时,只要按下列格式进行即可: rKM29UXDATA=0x00;//将0写入Flash中 *pPage++=rKM29UXDATA; //把Flash端口的数据写入pPage指针指 向的单元
9
二、U盘驱动程序设计
本 次 课 程 设 计 所 使 用 的 U 盘 开 发 板 : 基 于 ATMEL 公 司 的 89C51SND1C芯片和K9F5608FLASH32M芯片。AT89C51SDN1C 芯片内置符合USB1.1标准的设备控制器,采用查询工作方式,根 据各个端点的状态进行相应的数据收发处理。
7
(2)焊盘在电路板表面的双腿元件 1.烙铁置于焊盘,直至焊盘表面锡层熔化 2.焊盘表面锡层熔化时,将焊锡送入焊区,形成焊点
3.看准时机抽走焊锡和烙铁,使得焊盘出现一个完整焊点
4.迅速将元件贴上去,待冷却之后即可
8
(3)多引脚的非DIP封装的芯片焊接 先对准芯片或芯片座与焊盘的位置;然后先固定几个 引脚,使芯片与焊盘的位置相对固定;最后焊接芯片。
数据写入完毕,单击BLJB选项, 将选中标记去掉,然后单击Set按 钮将其保存到芯片中。下次设备 一接通电源,即执行刚刚下载的 用户程序。
编程完毕后,单击Close按钮,关闭USB Port Connection连接。
18
U盘设计有关的基本知识 •C51 程序设计基本知识P11 •USB海量存储设备(U盘)基本知识P12-P21 •U盘程序框架设计P22-P30
10
U盘开发环境介绍 •编译器:KEIL C51(使用方法见P3-P7) •烧片程序:FLIP软件(下载固件、软件,使用方法见P8-P9) •仿真调试:串口调试助手
Keil μVision2软件是Keil公司推出的集成开发环境
FLIP软件是ATMEL公司提供的在线系统可编程(ISP)调试软件, 通过该软件可以对该公司的AT89C51SDN1C芯片进行反复的擦写。
保留区中的第一个扇区必须是BPB(BIOS Parameter Blok),也称为“ 引导扇区”、“零扇区”等,用来存放对文件系统进行识别的关键信息 。操作系统磁盘空间是按照簇来分配的,因此文件占用磁盘空间时的基 本单位是簇而不是字节。 文件系统参见“协议资料\文件系统及Mass Storage有关资料\文件系统 ”文件。
28
USB海量存储设备(U盘)基本知识-9 3. FLASH盘的FAT结构 1Block=32Pages
=(16K+512)Bytes 1Pages=528B 1Block=528B×32Pages =(16K+512)B 1Device=528B×32Pages×1024Blocks =132Mbits
4、最小系统调试完成后就可以开始焊接外设芯片包括串口电 平转换、FLASH存储器、键盘等。
6
(1)焊盘为过孔的元件和DIP封装的芯片
这类焊接的共同特点是元件有长长的管脚,需要插到电路板的孔里 ,然后将其焊接到过孔焊盘上。如果管脚过长,还需要在焊接结束 后将多余的管脚剪掉。这种焊接方式比较简单,只要先焊好一个管 脚,再调整元件的位置,最后依次焊完剩下的管脚即可。一次焊不 成功,也可以清理后再次重焊。
11
Keil μVision2软件使用方法-1
安装Keil μVision2后,桌面上会产生一个快捷方式,双击打开,进入软件主界面。
12
Keil μVision2软件使用方法-2
选择菜单中的“Project”-〉“New Project...”项新建一个工程
为工程添加器件
13
Keil μVision2软件使用方法-3
选择菜单中的“File”-〉“New...”项新建一个文件。
选择菜单中的“File”-〉“Save...”项将文件存储为“*.c”的形式 在Source Group1中单击右键,将新建的c文件添加到工程中。
在添加好的C源文件中单击右键,选择“Insert #include ’<REGSND1.H>’,这样我 们可以使用芯片内部寄存器。
21
USB海量存储设备(U盘)基本知识-2
通用海量存储设备(General Mass Storage Device)是随机存取、基于块/扇区存 储的设备。它只能存储和取回来自CPU的数据。Mass Storage设备可以使用两种 传输方式来实现与主机的通信。Control/Bulk/Interrupt即CBI方式或Bulk_Only方 式。 我们主要介绍Bulk_Only(批量传输)模式的Mass Storage设备的描述符。 设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。 Bulk_Only传输协议见“协议资料\文件系统及Mass Storage有关资料 \usbmassbulk_10.pdf”文件 设备插入到USB接口后,USB即对设备进行搜索,并且要求设备提供相应的描述 符。在USB Host得到上述描述符后,对设备重新设置地址,并完成对设备的配 置。通过描述符提供的信息,识别出Bulk_Only的Mass Storage设备,然后进入 Bulk_Only传输方式。USB与设备间的所有数据均通过Bulk_In和Bulk_Out来传输。 在Bulk_Only方式下,有三种类型的数据在USB设备之间传送,即CBW、CSW和普 通数据。CBW(Command Block Wrapper)是从USB Host发送到设备的命令;CSW (Command Status Wrapper)是设备向USB Host传输的反映当前命令执行状态 的数据。传输过程遵循SCSI指令集协议。
相关文档
最新文档