U盘的存储原理是:计算机把二进制数字信号转为复合二进制数字信号(加入分配、核对、堆栈等指令)读写到USB芯片适配接口,通过芯片处理信号分配给EPROM2存储芯片的相应地址存储二进制数据,实现数据的存储。EPROM2数据存储器,其控制原理是电压控制栅晶体管的电压高低值(高低电位),栅晶体管的结电容可长时间保存电压值,也就是为什么USB断电后能保存数据的原因。只能这么通俗简单的解释了。U盘工作原理概要一、U盘基本工作原理通用串行总线(UniversalserialBus)是一种快速灵活的接口,当一个USB设备插入主机时,由于USB设备硬件本身的原因,它会使USB总线的数据信号线的电平发生变化,而主机会经常扫描USB总线。当发现电平有变化时,它即知道有设备插入。当USB设备刚插入主机时,USB设备它本身会初始化,并认为地址是0。也就是没有分配地址,这有点象刚进校的大学生没有学号一样。正如有一个陌生人闯入时我们会问“你是什么人”一样,当一个USB设备插入主机时,,它也会问:“你是什么设备”。并接着会问,你使用什么通信协议等等。当这一些信息都被主机知道后,主机与USB设备之间就可以根据它们之间的约定进行通信。USB的这些信息是通过描述符实现的,USB描述符主要包括:设备描述符,配置描述符,接口描述符,端点描述符等。当一个U盘括入主机时,你立即会发现你的资源管理器里多了一个可移动磁盘,在Win2000下你还可以进一步从主机上知道它是爱国者或是朗科的。这里就有两个问题,首先主机为什么知道插入的是移动磁盘,而不是键盘或打印机等等呢?另外在Win2000下为什么还知道是哪个公司生产的呢?其实这很简单,当USB设备插入主机时,主机首先就会要求对方把它的设备描述符传回来,这些设备描述符中就包含了设备类型及制造商信息。又如传输所采用的协议是由接口描述符确定,而传输的方式则包含在端点描述符中。USB设备分很多类:显示类,通信设备类,音频设备类,人机接口类,海量存储类.特定类的设备又可分为若干子类,每一个设备可以有一个或多个配置,配置用于定义设备的功能。配置是接口的集合,接口是指设备中哪些硬件与USB交换信息。每个与USB交换信息的硬件是一个端点。因些,接口是端点的集合。U盘应属于海量存储类。USB海量存储设备又包括通用海量存储子类,CDROM,Tape等,U盘实际上属于海量存储类中通用海量存储子类。通用海量存储设备实现上是基于块/扇区存储的设备。USB组织定义了海量存储设备类的规范,这个类规范包括4个独立的子类规范。主要是指USB总线上的传输方法与存储介质的操作命令。海量存储设备只支持一个接口,即数据接口,此接口有三个端点Bulkinput,Bulkoutput,中断端点这种设备的接口采用SCSI-2的直接存取设备协议,USB设备上的介质使用与SCSI-2以相同的逻辑块方式寻址二、Bulk-Only传输协议当一个U盘插入主机以后,主机会要求USB设备传回它们的描述符,当主机得到这些描述符后,即完成了设备的配置。识别出USB设备是一个支持Bulk-Only传输协议的海量存储设备。这时应可进行Bulk-Only传输方式。在此方式下USB与设备之间的数据传输都是通过Bulk-In和Bulk-Out来实现的。在这种传输方式下,有三种类型数据在USB和设备传送,它们是命令块包(CBW),命令执行状态包(CSW)和普通数据包。CBW是主机发往设备的命令。格式如下:其中dCBWSignature的值为43425355h,表示当前发送的是一个CBW。DCBWTag:以后再讲。DCBWDataTransferLength:表示这次CBW要传送数据长度。BmCBWFlags:表示本次CBW是读数据还是写数所BBWCBLength:表示命令的长度。CBWCB:表示本次命令内容。也即是SCSI命令。当设备从主机收到CBW块以后,它会把SCSI命令从CBW中分离出来,然后根据要求执行,执行的结果又以CSW的形式发给主机。CSW的格式如下:其中dCSWSignature的值为53425355h,表示当前发送的是一个CSW。DCSWTag:必须和CBW中dCBWTag一样。DCSWDataResidue:还要传送的数据。BCSWStatue:命令执行状态,命令正确执行时,为0。三、SCSI命令集在Bulk-Only的命令块包(CBW)中,有一段CBECB内容,它就是SCSI命令块描述符。其内容如下OperationCode:是SCSI命令操作代码。LogicalBlockAddress:逻辑块地址,对U盘而言应是扇区。前面已经讲过:通用海量存储设备是一个基于块/扇区存储的设备,因此在SCSI中要提供这个参数是很显然的。transferlength:为要传送的扇区数SCSI中直接存取类型的存储介质的传输命令有很多,如:INQUIRY:其操作码为12HTestUnitReady:其操作码为00HFormatUnit:其操作码为04H.......这里以INQUIRY命令为例:INQUIRY命令描述符如下:INQUIRY的结果是至于其他SCSI命令,请用户查阅相关文档。USB主机:硬件与软件USB的互连支持数据在USB主机与USB设备之间的流动。这一章主要讲述为了简化主机上的客户软件(Softwareclient)与设备的功能部件(function)之间的通信而必须的主机接口(hostinterface)。在本章中所涉及的具体实现部份并不是必要的,这些实现部份是作为例子来阐述在响应USB设备请求时的主机系统的行为。只要USB设备并不感觉到主机行为的改变,USB主机完全可以提供一个不同的软件系统实现方法。10.1USB主机概况10.1.1概论图10-1展示了USB通信模型之间基本的信息流与互连关系:逻辑的信息流实际的信息流图10-1通信模型层次关系图由图10-1可见,主机与设备都被划分成不同的层次。主机上垂直的箭头是实际的信息流。设备上对应的接口是基于不同实现的。在主机与设备之间的所有通信最终都是通过USB的电缆进行,然而,在上层的水平层之间存在逻辑的主机-设备信息流。主机上的客户软件和设备功能部件之间的通信是基于实际的应用需求及设备所能提供的能力。客户软件与功能部件之间的透明通信的要求,决定主机和设备下层部件的功能以及它们的界面(interface)这一章从主机的角度来描述上述的通信模型,图10-2描述了从主机角度看到的它与设备的连接。主机在整个USB系统中是唯一的,它包括如下几个层次。·USB总线接口·USB系统(USBSystem)·USB客户(Client)其中,USB总线接口处理电气及协议层的互连(详见第7章及第8章)。从互连的角度看,USB设备和USB主机都提供类似的USB总线接口,如串行接口引擎(SerialInterfaceEngineSIE)。由于主机在USB系统中的特殊性,USB主机上的总线接口还必须具备主机控制器的功能(HostController),主机控制器具有一个内集成的集线器(根集线器)提供与USB电缆的连接。USB系统(USBSystem)使用主机控制器来管理主机与USB设备的数据传输。USB系统与主机控制器之间的界面基于主机控制器的硬件特性。USB系统层相对于主机控制器而言,处理的是以客户观点见到的数据传输及客户与设备的交互。这包括附加的USB信息,比如协议头(ProtocolWrappers)。USB系统还必须管理USB的系统资源,以使得客户的访问成为可能。通道组(到某一接口)IRPS配置信息标准通道(到缺省端口地址)硬件定义USB电缆通道,代表相应层之间连接的抽象图10-2主机通信图USB系统有三个主要组成部份:·主机控制器驱动(HostControllerDriver)·USB驱动(USBDriver)·主机软件(hostsoftware)主机控制器驱动的存在,方便地将各种不同的主机控制器实现映射到USB系统,客户可以不必知道设备到底接在哪个主机控制器上就能同设备进行通信。USB驱动提供了基本的面向客户的主机界面。在HCD与USB之间的接口称为主机控制器驱动接口(HostControllerDriverInterfaceHCDI)。这层接口不能被客户直接访问,所以也不是由USB具体来完成的。一个典型的HCDI是由支撑各种不同主机控制器的操作系统来定义的。USBD提供I/O请求包(I/ORequestPackets)形式的数据传输,以某一特定通道来传输数据。另外,USBD为它的客户提供一个容易被支配及配置的抽象的设备。作为这种抽象的一部份,USBD拥有标准通道(参见第5章及第9章)对设备进行一些标准的控制。这标准通道实现了USBD与抽象设备之间的逻辑通信。(见图10-2)在有些操作系统中,提供了额外的非USB系统软件以支持设备的配置及设备驱动程序的加载。在这样的操作系统中,设备驱动程序应使用提供的主机软件接口而不是直接访问USBDI。客户层描述的是直接与USB设备进行交互所需要的软件包。当所有的设备都已连上系统时,这些客户就可以直接通设备进行通信。一个客户不能直接访问设备的硬件。该言之,主机可提供如下的功能·检测USB设备的连接与断开。·管理主机与设备之间的标准控制流。·管理主机与设备之间的数据流。·收集状态及一些活动的统计数字。·控制主机控制器与USB设备的电气接口,包括提供有限的能源。在下面的章节中,我们将较细的阐述USBDI所能提供的功能。对于特定的主机平台与操作系统下的实现接口请参照相关的操作系统手册。所有的集线器都通过状态改变通道报告它的状态的改变,其中包括设备的连上与断开等。USBD的一类特殊客户即:集线器驱动器拥有这些状态改变通道,接收这些状态的改变。对于像设备连结这种状态改变,集线器驱动器将加载设备的驱动程序。在有些系统中,这种集线器驱动程序是操作系统提供的主机软件的一部份,它用来管理设备。10.1.2控制机构控制信号可通过带内信号(in-band-singling)及带外信号(out-of-bard-signaling)两种方式在主机与设备之间传输。带内信号将控制信息及数据信息混在一起用同一通道传输,以至于主机根本就没有觉察到。而外带信号是通过单独的通道进行传输。任何一个已连接的设备都有一个标准的信息通道,即标准通道。这个主机与设备之间的逻辑的连接用于传输USB的标准控制信息,比如对设备的配置信息等。这些标准通道为USB的设备提供了标准的接口,它也可以用来进行基于特定设备而不同的通信,这些通信由拥有所有这些通道的USBD作媒介。一些特定的设备可能允许使用额外的信息通道来传输特定设备的控制信息。这些额外的信息通道与标准通道使用同样的协议,但是传递的信息是基于特定的设备的,也不是由USB具体标准化的。USBD支持和它的客户共享使用标准通道,它还提供给客户与设备相连的其它控制通道的访问。10.1.3数据流主机控制器在主机与USB设备之间传递数据。这些数据被看作连续的字节流。USB支持4种形式的数据传输·控制传输。·同步传输。·中断传输。·块传输。有关于传输方式的额外信息请参见第5章每个设备具有一到多个界面以用于客户与设备之间的数据传输。每个接口由一到多个在客户及设备端点之间独立传输的通道组成。USBD根据主机软件的请求来初始化这些通道和接口。当这些配置请求提出后,主机控制器将基于主机软件所提供的参数来提供服务。每个通道基于数据传输模式和请求的有如下几个特性:·数据传输的频率。·数据是以恒定速率提供还是随机出现的。·在数据传输前可延迟的时间。·在传输过程中数据的丢失是否是具有灾难性。USB设备的端口描述了与之相连接的通道的特性。USB设备端口的特性的具体描述可参照第9章。10.1.4收集状态及活动统计数据作为普通的为所有主机与设备之间的控制流与数据流服务的USB系统与主机控制器,一直处于随时接收状态变化及活动信息的状态,以使软件能及时接收并处理这些状态的变化。这里并不具体讲述需要被跟踪的状态信息及这些状态信息的特殊的格式。1