通用串行总线接口的大容量移动存储器及其实现方法.pdf

上传人:00062****4422 文档编号:1051738 上传时间:2018-03-28 格式:PDF 页数:27 大小:1.26MB
返回 下载 相关 举报
摘要
申请专利号:

CN01100541.6

申请日:

2001.01.12

公开号:

CN1299096A

公开日:

2001.06.13

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回|||专利申请权、专利权的转移(专利申请权的转移)变更项目:申请人变更前权利人:常促宇变更后权利人:北京先锋博创科技发展有限公司变更项目:地址变更前:100084北京市海淀区清华园清华大学计算机系东主楼9区424变更后:100085北京市海淀区上地信息产业基地开拓路7号先锋大厦四段登记生效日:2002.1.9|||公开|||实质审查的生效申请日:2001.1.12

IPC分类号:

G06F9/46; G06F13/38

主分类号:

G06F9/46; G06F13/38

申请人:

常促宇;

发明人:

常促宇

地址:

100084北京市海淀区清华园清华大学计算机系东主楼9区424

优先权:

专利代理机构:

清华大学专利事务所

代理人:

廖元秋

PDF下载: PDF下载
内容摘要

本发明属于计算机技术领域,包括由硬件电路构成的移动存储器插板,嵌入PC主机端的控制软件和PC主机端中的驱动程序两部分组成;其中,移动存储器插板包括微处理器CPU及与其相连的两个Flash存储器、一个备选EEPROM存储器、与PC主机进行连接的USB接口,晶振及电源。本发明大大提高了USB接口的传输速度和数据的存储速度;且对数据的传输和携带具有可靠、方便携式而廉价的优点。

权利要求书

1: 一种通用串行总线接口的大容量移动存储器,其特征在于,包括由硬件电路构 成的移动存储器插板,嵌入PC主机端的控制软件和PC主机端中的驱动程序两部分组 成;其中,移动存储器插板包括微处理器CPU及与其相连的两个Flash存储器、一个备 选EEPROM存储器、与PC主机进行连接的USB接口,通过微处理器CPU的晶振输入管脚 为其提供工作脉冲的晶振,供给所说的CPU、Flash存储器或EEPROM电压的电源,所说 的Flash存储器通过数据总线以及CPU的IO端口和CPU进行连接;所说的备选EEPROM 存储器通过I2C总线和CPU相连;所说的嵌入PC主机端的控制软件由系统状态机,USB 协议栈和Flash的IO驱动程序组成;所说的PC主机中的驱动程序由下载代码的驱动 程序,正常工作的设备驱动程序和IO端口驱动程序组成。
2: 一种用于如权利要求1所述移动存储器的实现方法,其特征在于,所说的状态 机的实现方法包括: (1)定义状态: 1)空闲状态(Idle),CPU没有任务在执行; 2)查询状态(Quest),CPU对PC的查询命令进行响应; 3)Flash擦除状态(Erase),CPU执行Flash的擦除操作; 4)Flash读状态(Read),CPU执行读Flash的操作; 5)Flash写状态(Write),CPU执行写Flash的操作; (2)定义2个操作: 1)清除当前状态操作(Clear),CPU强制退出当前状态,返回空闲状态; 2)复位操作(Reset),在任何状态下,CPU均执行系统复位功能; (3)实现状态机状态的转换,如图4所示,包括以下步骤: 1)状态机的擦除、读和写入状态只能从空闲状态下进入; 2)查询状态可以在任何状态下进入; 3)空闲状态下,收到Erase命令,则进入擦除状态;其他状态下均不能进入擦除 状态;执行完Erase命令后,返回空闲状态; 4)空闲状态下,收到Read命令,则进入读取状态;其他状态下均不能进入读取状 态;执行完Read命令后,返回空闲状态; 5)空闲状态下,收到Write命令,则进入写入状态;其他状态下均不能进入写入 状态;执行完Write命令后,返回空闲状态; 6)在空闲状态、擦除状态、读状态和写入状态,如果收到Quest命令,立刻进入 查询状态,直到执行完查询操作后,返回进入查询状态前的状态; 7)状态机的各个状态之间的设置互斥机制,即只要当前的状态没有结束(包括自 然结束和强制结束),那么状态机就不能够进行状态切换。互斥机制是保证每次读写操 作完整性和正确性的基本保障。
3: 如权利要求2所述的方法,其特征在于,所说的互斥机制采用令牌方法,具体 包括如下步骤: 1)PC端程序在需要进行某个操作(如读、写、擦等),在进入某个状态之前,必 须通过命令管道,向本发明发送一个Quest命令,申请操作令牌; 2)本存储器插板收到Quest命令,立刻返回当前的令牌属性,即属于那个状态; 3)PC端程序需要检查令牌的属性,如果当前操作令牌数Idel状态,那么PC端程 序有权申请操作令牌,否则PC端程序必须等待,直至令牌属性为Idel; 4)如果PC端检测到本存储器插板返回的令牌属性为Idel,那么程序需要再次通 过命令管道向本存储器插板递交需要执行的操作,同时申请操作令牌; 5)本存储器插板收到该申请后,检查资源,核对当前令牌,如果符合资源足够, 且当前状态是Idel时,就按申请的操作进行状态切换,并置令牌属性; 6)PC端程序递交操作申请后,为确保申请成功,每次操作前仍需要执行一次Quest 命令,确认当前令牌属性属于自己。
4: 一种用于如权利要求1所述移动存储器的实现方法,其特征在于,所说的程序自 动下载的实现方法,包括以下步骤: 1)所说的存储器插板接入USB总线的时候,PC主机将向之发送获取描述表命令, 要求USB设备返回设备号和厂商号; 2)该存储器插板首先返回初始化设备的生产厂商ID,产品ID; 3)PC主机获取本存储器插板的初始设备ID后,将在PC主机操作系统的USB设备 驱动库中查找对应于上述ID的设备驱动,并加载; 4)PC主机操作系统一旦加载该存储器插板的下载程序的驱动,该程序立刻通过该 存储器插板初始化设备提供的数据管道向该存储器插板下载可执行程序; 5)该存储器插板收到下载的程序后,立刻运行而成为该存储器插板正常工作的设 备; 6)该存储器插板产生一次新USB设备接入总线的信号,使PC主机重新识别该存储 器插板; 7)PC主机收到新设备接入的信号,重复上述的1、2、3步骤,加载对应于生产厂 商ID,产品ID的设备驱动,该驱动即为该存储器插板正常工作时的设备驱动,从而完 成程序自动下载的过程。
5: 一种用于如权利要求1所述移动存储器的实现方法,其特征在于,乒乓缓冲区 实现方法包括数据的发送和接收方法,其中所说的发送数据的实现方法包括如下步骤: 1)本存储器插板收到USB总线的数据,立刻查询Buffer1(缓冲区1)的标志位, 如果是空的,则将数据包写入Buffer1,并置该缓冲区的标志位为l(满),最后向PC主 机发送接收成功的握手信号ACK; 2)如果Buffer1是满的,则转而查询Buffer2,如果Buffer2是空的,则重复和 Buffer1空时同样的操作:如果Buffer2也是满的,则表示PC主机发送的速度过快, 本存储器插板处理不过来,则丢弃本次接收的数据,并向PC主机返回接收不成功的握 手信号NAK; 所说的接收数据的实现方法包括如下步骤: 1)本存储器插板的微处理器首先检查Buffer1的标志,如果Busy1=1,表示该缓 冲区接收满了数据,那么将该数据写入Flash,并置标志为0(表示Buffer1为空);如 果Busy1=0,表示没有数据,则直接进入下面的操作; 2)处理完Buffer1后,接着检查Buffer2的标志,如果有数据,则写入Flash, 然后清空标志位;如果没有数据,则重复第一步的操作。
6: 一种用于如权利要求1所述移动存储器的实现方法,其特征在于,本发明的文 件系统的实现方法包括定义、提供给用户的操作,其中,所说的定义如下: 1)文件存储的基本单位为16KB; 2)整张盘由一个引导块和后续的数据块组成; 3)引导块是从第0块开始,所找到的第1个非坏的物理块;规定引导块只能位于 前10个物理块内,文件在盘上连续存储,每一个文件由一系列连续的物理块组成,其 中可能有坏块,但文件系统在访问时会根据坏块映像来自动跳过这些坏块; 存放文件的第一个块的第1页共512字节的空间用于存放文件头,从第2页开始才 是文件本身的数据;这样,如果一个文件在PC主机上的大小为m个字节,那么在盘上 将占用(m+512-1)/16K+1个好块;文件头的数据结构为: 0~7B,8字节,表示起始标志“EzFile”; 8~11B,4字节,表示文件大小,单位:字节,可表示小于4GB的文件: 12~19B,8字节,表示文件“修改时间: 20~23B,4字节,表示文件“属性”; 24~487B,464字节,表示文件名字符串,包含全目录信息; 488~507B,20字节,表示文件密码字符串; 508~511B,4字节,表示文件类型标志“MP3”表示mp3文件,“PCM”表示录音文 件,“***”表示其它文件: 4)由于“连续读”的问题,每片Flash的最后1个物理块在本文件系统中不采用; 在本发明接入的时候,驱动程序将在PC主机的内存中创建本发明的引导分区的映象; 知道用户的操作需要修改引导分区的信息,驱动程序才会更新Flash中的引导分区表: 5)本发明支持长文件名,多级目录;文件名和目录信息均存放在文件头的文件名 称字符串中; 6)体交叉存储方式的文件系统和正常方式的文件系统基本一致,主要的区别就是 每一片Flash均存在一个独立的文件系统,而每个文件均分割成两个独立的文件存放。 所说的提供给用户的操作主要包括:本发明格式化,文件的写入,文件的读取,文 件的删除,文件的重命名操作和碎片整理操作; 所说的格式化操作的疗法为首先识别是否可以建立体交叉文件系统,然后擦除 Flash,检测Flash的失效块,最后写入文件系统; 所说的文件写入操作包括普通写入和体交叉写入两种操作方法: 其中,该普通写入方法步骤如下: (1)查询本发明的引导分区映象,获取可用的存储空间和起始地址; (2)按文件系统修改引导分区中的存储空间占用信息; (3)将文件头和数据按照文件系统的格式写入Flash; 所说的体交叉的写入方法的实现步骤如下: (1)进入体交叉存储例程后,首先检查Flash剩余的连续空间是否足够存放当前 的文件;如果最大的连续空间不够存放当前的文件,但是剩余的物理空间足够,则需要 进行碎片整理;如果整理完后的连续空间仍然不够,则表示又产生了一些新的无效块, 然后返回空间不足的错误,退出; (2)如果第一次检查后发现剩余连续空间足够,或者碎片整理完后,空间足够存 放当前文件,则开始分割文件; (3)将文件按尽量相等地原则顺序的分割为2部分,并开始以页为单位发送数据 (4)发送时交替发送分割后的文件1和2的数据,直到发送完毕 所说的读取操作也分为体交叉读和普通读,该普通读入操作进行一次,体交叉读进 行两次读操作,先读完位于Flash1中的文件,然后读取位于Flash2中的文件,最后将 读到的两个文件简单的合并; 所说的文件的删除操作为释放所说的引导分区中该文件占用的块信息; 所说的文件的重命名操作为更新文件头中的文件名称; 所说的碎片整理是将重新安排所有文件的位置,使文件之间不存在空闲区域。

说明书


通用串行总线接口的大容量移动存储器及其实现方法

    本发明属于计算机技术领域,特别涉及对移动存储设备的设计。

    目前计算机所普遍使用的移动存储设备仍然以1.44MB的软驱为主流,同时也出现了一些新的存储器,如ZIP、MO、刻录机、外置硬盘等等。但是这些设备作为移动存储器都存在着很大的缺陷:软驱所使用的软盘价格便宜,但是可靠性极差,且容量小,速度慢,寿命短、容易损坏,不方便携带,没有数据安全保障;而其他新型移动存储器则价格偏高,安装携带不便,标准不统一,且一般采用串并口,速度慢,也没有数据安全保证。

    本发明的目的是为了解决已有技术的不足之处,提出一种USB接口的移动存储器,结合FLASH存储技术和USB接口两项最新技术,将程序存放于PC端驱动程序中,在设备接入时自动下载执行;采用双缓冲存储技术,大大提高了USB接口的传输速度;采用体交叉的快速存储技术,极大提高了数据的存储速度;且对数据的传输和携带具有可靠、方便携式而廉价的优点。

    本发明提出的一种通用串行总线接口的大容量移动存储器,其特征在于,包括由硬件电路构成地移动存储器插板,嵌入PC主机端的控制软件和PC主机端中的驱动程序两部分组成;其中,移动存储器插板包括微处理器CPU及与其相连的两个Flash存储器、一个备选EEPROM存储器、与PC主机进行连接的USB接口,通过微处理器CPU的晶振输入管脚为其提供工作脉冲的晶振,供给所说的CPU、Flash存储器或EEPROM电压的电源,所说的Flash存储器通过数据总线以及CPU的IO端口和CPU进行连接;所说的备选EEPROM存储器通过I2C总线和CPU相连;所说的嵌入PC主机端的控制软件由系统状态机,USB协议栈和Flash的IO驱动程序组成;所说的PC主机中的驱动程序由下载代码的驱动程序,正常工作的设备驱动程序和IO端口驱动程序组成。

    本发明的功能及特点:

    可靠性和安全性高:

    本发明的基本功能是可靠、安全、方便快速的拷贝、携带数据文件;由于其存储器采用可擦写的闪存——FLASH,保存数据的可靠性极高,有效擦写周期大于100万次;所存入的数据可以在不需要电源的情况下可以安全存放10年以上;而且由于没有机械传动部件,其抗震性能优异,可以保证携带中数据的安全。

    速度快、功耗低:

    该存储器的目前支持USB协议1.0,实现的USB接口的传输速度为8Mbps:即使串行Flash的写入速度较慢,但是本发明采用体交叉的存储技术,极大的提高系统性能。本发明的实际存取速度为:写入速率3.2Mbps-5Mbps,读出速率为5.6Mbps-7.2Mbps(实际速率与PC主机的速度有关系);将来使用更高速的FLASH,以及升级到USB协议2.0将可以支持到360-480Mb每秒的传输速率;本发明的最大功耗为1W,且有节电模式。

    存储容量大:

    由于采用了串行的FLASH(即数据地址总线复用的FLASH),故即可以采用廉价的8051处理器,且突破了其64K寻址空间的限制,可以方便的扩展FLASH存储器的容量;本发明目前的系列容量为8MB~512MB;但是本发明的最终容量仅受存储器的单片容量和成本的限制;随着FLASH单片容量的增加,本发明可以随之扩展存储容量。

    功能强,升级方便:

    本发明微处理器的控制程序不是固化于ROM中,而是位于驱动程序中,当系统加电时,PC主机的操作系统根据从本发明获取的ID号加载设备驱动,本发明的驱动程序通过缺省的USB协议设置将微处理器的控制程序由USB接口下载到本发明的RAM中,然后系统开始工作。该特性使本发明能够通过不同的驱动程序实现USB协议中的控制、中断、批传输和同步传输四种传输模式,任何对USB协议的升级,对微处理器的任何设置调整,都只需要更新驱动程序即可。

    使用方便:

    在PC主机开启情况下,只需将USB接头插入即可使用;支持本发明的热插拔(即不需要关闭计算机就可以插拔该设备),支持真正的即插即用,在接入本发明后,PC主机的操作系统将自动载入本发明的驱动程序;同时本发明不需要外部电源,系统电源直接由USB接口供给;本发明只有口香糖大小,非常适合携带;驱动和盘片(存储芯片)合一,通用性好。

    兼容性好,扩展能力强:

    随着USB技术的广泛应用,本发明能够广泛工作在各种具有USB接口的设备上,如PC主机,笔记本、苹果机等,其适用的PC主机操作系统为Win98,Win2000,WinCE、Linux等。本发明的存储器容量可以方便的扩充,只需更换FLAH芯片即可;更为重要的是,本发明具有USB接口的良好扩展能力,可以在USB总线上同时连接64个本发明,突破了一个串、并口只能连接一个本发明的限制。

    系统成本低:

    本发明80%左右的成本集中于核心存储器FLASH;之所以采用目前成本较高的FLASH作为存储器,主要是考虑到FLASH的高可靠性、方便性和存在良好的应用前景;正由于FLASH作为存储设备的这一特点,目前FLASH的应用日趋广泛,计算机BIOS、MP3随身听、数字相机等设备的核心存储器均为FLASH。目前世界上的主要存储设备生产商均在大规模的扩展FLASH的生产能力,因此FLASH即将成为下一代的主流存储介质。

    由于该存储器具有驱动和盘片合一、寿命长、不需要象软驱一样每台计算机均配置一个驱动器的特点,实际降低了整个系统成本;而且随着核心存储器FLASH生产成本的下降,本发明可望成为未来的主流移动存储设备。

    市场潜力巨大:

    根据摩尔定量,核心存储器Flash容量将指数增加,而成本则指数下降,该产品将成为性能价格比极高的理想移动存储器;同时,随着USB技术的日益广泛应用和该产品的优异性能,该移动存储器将逐步取得各主板厂商的BIOS支持以及PC主机操作系统的驱动支持,实现从该驱动器的启动和直接存储功能,从而可以彻底淘汰软盘驱动器而成为计算机的标准配置。

    与其他数据存储设备相比,本发明的特点为:

    1、可靠性:擦写周期大于1,000,000次,高于ZIP、MO盘;

    2、操作方便性:不需要安装,支持热插拔,操作最方便;

    3、通用性:驱动器和存储器一体,适应于任何具有USB、RS232接口的微机设备;

    4、体积:远小于软盘、硬盘、ZIP、MO盘驱动器;

    5、速度:为软驱的50倍;采用USB2.0将达到高速硬盘的速率;

    6、容量:远高于软盘,可达到ZIP、MO盘容量;

    7、成本:高于软驱,远低于ZIP、MO盘驱动器;

    附图简要说明:

    图1为本发明的USB接口的移动存储器硬件总体结构的电路原理图。

    图2为本发明的嵌入PC主机端的控制软件和PC主机端中的驱动程序的整体结构示意图。

    图3为本发明的嵌入PC主机端的控制软件的实施例结构示意图。

    图4为本发明的状态机状态的转换程序示意图。

    图5为本发明的USB协议栈状态图。

    图6为本发明程序的自动下载实施例流程示意图。

    图7为本发明乒乓缓冲区的发送数据的实施例工作流程示意图。

    图8为本发明乒乓缓冲区接收数据的实施例流程示意图。

    图9为本发明嵌入端体交叉存储的实施例写入程序流程图。

    图10为本发明下载代码的驱动程序的实施例流程图。

    图11为本发明接入管理程序实施例流程图。

    图12为本发明实现IO控制程序的程序实施例流程图。

    图13为本发明PC端体交叉存储方式的数据发送程序实施例流程图。

    本发明设计的USB接口的大容量移动存储器实施例,包括由硬件电路构成的移动存储器插板,嵌入PC主机端的控制软件和PC主机端中的驱动程序两部分组成。其中,移动存储器插板的总体结构如图1所示,图中:

    1、图中J1为USB接口插头,是本存储器插板与PC主机的USB接口进行连接的接头,其类型为USB-A口公接头;USB总线中的D+和D-为一对查分信号线,直接与CPU的USB信号线管脚相连。

    2、U6(CMPWR)器件为CMPWR150芯片,该芯片从USB总线的VCC(+5V)线获取电源,并将其转换为3.3V的输出电压,以供给CPU、Flash存储器或者EEPROM。

    3、U1(EZUSB_80)为微处理器AN2131QC;该处理器通过8位的数据总线,通用输出端口与Flash存储器(U3、U4)相连,通过I2C总线和EEPROM(U8)相连。其主要功能是实现USB接口协议,与PC主机通过USB总线进行数据交换,同时通过输出时序来控制Flash存储器的读写、擦除等操作;也可以通过I2C总线实现从EEPROM的启动。由于本发明可以实现从PC主机下载程序的功能,故该EEPROM只是一个备选器件。

    4、U3、U4(KM29U128T)为Flash存储器,其通过8位的数据总线以及CPU的IO端口和CPU进行连接;其主要功能是进行数据的存储。

    5、U8(24LC00/01/64)为备选EEPROM,通过I2C总线和CPU相连,其主要作用时存储CPU的可执行程序,完成CPU的启动,以加快本存储器插板的启动速度。

    6、Y1为12MHz的晶振,通过CPU的晶振输入管脚为CPU提供12MHz的工作脉冲。

    7、J2、J3、J4为本存储器插板的硬件配置跳线,通过跳线,可以识别Flash存储器的容量和片数。

    本存储器插板的主要器件的实施例及功能分别说明如下:

    微处理器:采用Cypress公司的AN2131QC;该微处理器的内核是通用的8051CPU,但是一款增强型的51处理器,CPU频率为24MHz,指令周期为4CLK;且该CPU集成了USB接口引擎和收发器,是一款适合于本发明的性能价格比非常高的处理器。其内部集成的模块包括:USB差分收发器、USB串行接口引擎、增强型的8051微处理器以及8K字节的RAM存储器。

    Flash存储器:采用Samsung公司的KM29U6400T~KM29U256T系列或者Toshiba公司的TC58256系列的Flash存储器,该存储器是一种地址和数据总线复用的FLASH芯片,其特点是存储密度大(单片容量可从8M字节到128M字节不等),体积小(20mm×12mm×2mm),使用方便(不同容量的芯片管脚兼容),价格便宜,可利用8051提供的两个片选信号,完全可以由一个IO端口实现FLASH的所有时序控制。

    电源芯片:实现USB接口的5V到微处理器和Flash需要的3.3V电压,可采用的型号主要有Maxim公司的Max882或者California Micro Devices公司的CMPWR150,其额定工作电流为500mA。

    EEPROM:本存储器插板硬件本身是一个裸机,其控制程序可以在接入PC主机的时候自动从驱动程序中下载运行;该特点十分方便程序的升级,而且有效的降低了系统的成本;但是缺点就是下载的过程需要1-2秒钟。为了考虑不同的用户需求,本存储器插板保留了一个8KB的I2C的ROM的位置,以方便用户选用,使用EEPROM的特点就是瞬间启动(接入PC主机的同时就实现了启动),也具备随时可以升级的特点,缺点就是成本稍有提高。本实施例采用的EEPROM的型号为Atmel公司的AT24LC64或者CAT24WC08。

    其他器件主要是12MHz的晶振1个,发光二极管1个,电阻、电容若干,这些器件的功能及选用的型号均属一般常识,在此略述。

    本发明的软件包括运行于PC主机端的驱动程序和运行子存储器插板硬件端的控制程序构成,由于本发明能够实现存储器插板硬件端的控制程序从PC主机上的自动下载,故运行于存储器插板硬件端的控制程序实际是存放在PC主机端的下载代码的驱动程序中,只有在本发明的存储器插板硬件接入PC主机的USB接口的时候才自动下载到存储器插板上运行,故将运行于本发明存储器插板硬件端的控制程序称为“嵌入PC主机端的控制软件”。嵌入PC主机端的控制软件和PC主机中的驱动程序实施例的整体结构如图2所示。其中,嵌入PC主机端的控制软件由系统状态机,USB协议栈和Flash的IO驱动程序组成;本发明的PC主机中的驱动程序由构建于PC主机操作系统USB协议栈之上的本发明的下载代码的驱动程序,本发明正常工作的设备驱动程序和本发明的IO端口驱动程序三部分组成。

    嵌入PC主机端的控制软件主要指本存储器插板的8051微处理的运算和控制程序,设计的主要思想是采用微内核的思想;由于8051CPU的处理能力有限,本发明的设计思想是8051仅仅用来实现最基本、最简单的USB协议以及数据传输服务,而将其他复杂的功能的实现放在处理能力强大的PC主机端实现。

    本发明的嵌入PC主机端的控制软件的实施例结构和功能示如图3所示。主要包括以下三部分:

    (1)系统状态机;

    (2)USB协议栈;

    (3)Flash的IO驱动程序。

    其中,状态机是控制主程序,其负责调度USB协议栈和Flash驱动程序的工作;USB协议栈主要负责处理USB的协议,通过USB总线实现与PC主机的驱动程序的数据收发,数据中包含发送给状态机的命令和普通的文件数据;Flash驱动程序主要负责实现与Flash的通讯,为主状态机实现与Flash进行数据交换的通道,即通过Flash的时序控制,实现数据向Flash的存储以及从Flash上读取数据。

    状态机即为本嵌入PC主机端的控制软件的控制主程序,主要维护各个处理状态之间的互斥、相互转换等功能,实现任务的调度。本状态机的实现方法实施例包括:

    1.定义状态:

       1)空闲状态(Idle),CPU没有任务在执行;

       2)查询状态(Quest),CPU对PC的查询命令进行响应

       3)Flash擦除状态(Erase),CPU执行Flash的擦除操作

       4)Flash读状态(Read),CPU执行读Flash的操作

       5)Flash写状态(Write),CPU执行写Flash的操作

    2.定义2个操作:

       1)清除当前状态操作(Clear),CPU强制退出当前状态,返回空闲状态;

       2)复位操作(Reset),在任何状态下,CPU均执行系统复位功能

    3.实现状态机状态的转换,如图4所示,包括以下步骤:

       1)状态机的擦除、读和写入状态只能从空闲状态下进入;

       2)查询状态可以在任何状态下进入;

       3)空闲状态下,收到Erase命令,则进入擦除状态;其他状态下均不能进入擦除状态;执行完Erase命令后,返回空闲状态;

    4)空闲状态下,收到Read命令,则进入读取状态;其他状态下均不能进入读取状态;执行完Read命令后,返回空闲状态;

    5)空闲状态下,收到Write命令,则进入写入状态;其他状态下均不能进入写入状态;执行完Write命令后,返回空闲状态;

    6)在空闲状态、擦除状态、读状态和写入状态,如果收到Quest命令,立刻进入查询状态,直到执行完查询操作后,返回进入查询状态前的状态。

    7)状态机的各个状态之间的设置互斥机制,即只要当前的状态没有结束(包括自然结束和强制结束),那么状态机就不能够进行状态切换。互斥机制是保证每次读写操作完整性和正确性的基本保障。

    上述的互斥机制实施例采用令牌方法,具体包括如下步骤:

    1)PC端程序在需要进行某个操作(如读、写、擦等),在进入某个状态之前,必须通过命令管道,向本发明发送一个Quest命令,申请操作令牌;

    2)本存储器插板收到Quest命令,立刻返回当前的令牌属性,即属于那个状态;

    3)PC端程序需要检查令牌的属性,如果当前操作令牌数Idel状态,那么PC端程序有权申请操作令牌,否则PC端程序必须等待,直至令牌属性为Idel;

    4)如果PC端检测到本存储器插板返回的令牌属性为Idel,那么程序需要再次通过命令管道向本存储器插板递交需要执行的操作,同时申请操作令牌;

    5)本存储器插板收到该申请后,检查资源,核对当前令牌,如果符合资源足够,且当前状态是Idel时,就按申请的操作进行状态切换,并置令牌属性;

    6)PC端程序递交操作申请后,为确保申请成功,每次操作前仍需要执行一次Quest命令,确认当前令牌属性属于自己。

    本USB协议栈主要包括USB1.0标准协议栈;程序自动下载及设置乒乓缓冲区三个部分内容:其中,程序自动下载程序是在USB标准协议栈基础上增加的新功能;为了提高数据传输的速度,将USB协议栈中定义数据收发缓冲区设置为乒乓缓冲区。各部分的具体实现方法实施例说明如下:

    USB1.0标准协议栈的实现方法如图5所示,包括以下步骤:

    1)本存储器插板接入USB总线的时候为连接状态,如果存在USB的HUB,那么本发明就进入加电状态;在加电状态时,如果HUB复位,或者失去HUB的连接,那么本发明返回连接状态;

    2)在加电状态,如果接收到USB总线的复位命令,本发明进入缺省状态;

    3)在缺省状态,如果收到PC主机的Address Assigned(配置地址)命令,则本发明进入编址状态;

    4)在编址状态,如果收到PC主机的查询或者设置配置的命令,本发明就进入配置状

    5)在缺省状态、编址态和配置态时,如果电源中断,都将返回加电状态;如果收到USB总线的复位命令,都将返回缺省态;

    6)在加电状态、缺省态、编址态和配置态时,如果USB总线没有传输信号,则本发明进入挂起状态,以节约电能。

    实现该功能的目的就是完成本发明与PC主机的初始化操作,在USB协议中称为“列举”(Enumeration),具体过程如下:连接状态

    该状态指本存储器插板可被连接到USB接口上或从接口断开,是本存储器插板开始工作的第一个步骤。

    加电状态(Powered):

    本存储器插板的工作电源是从USB接口的5V电源处获取得,因此,本存储器插板接入PC端的USB接口以后,从USB总线的电源线获得5V电源,通过DC-DC的转换芯片,转换为3.3V的工作电压,供给AN2131微处理器,是微处理器开始工作;本存储器插板需要的工作电流为60mA左右。

    缺省状态:

    本存储器插板加电以后,在它从总线接收到复位信号之前不应对总线传输发生响应。在接收到复位信号之后,本发明才在缺省地址处变得可寻址。

    地址状态:

    在进入地址状态前,PC主机首先必须识别本存储器插板的本发明号(ID),以判别是否是一个合法的USB设备,该操作是通过向USB总线发送地址为0,端点为0(endpoint0)的“获取设备描述表”(Get Descriptor)命令,因为任何设备都缺省具备端点0(endpoint0),且必须对地址为0的数据包进行响应,因此本存储器插板向PC主机返回自己的设备描述表,本存储器插板的描述表内容如表1所示:

    表1偏移量域大小值描述0 Blength 1 0x12此描述表的字节数1 BdecriptorType 1 0x01描述表种类为设备2 BcdUSB 2 0x0001此设备与描述表兼容的USB设备说明版本号(BCD码)4 BdeviceClass 1 0x00设备类码    如果此域的值为0则一个设置下每个接口指出它自己的类,并个接口各自独立工作。    如果此域的值处于1~FEH之间,则设备在不同的接口上支持不同的类。并这些接口可能不能独立工作。此值指出了,这些接口集体的类定义。    如果此域设为FFH,则此设备的类由厂商定义。5 BdeviceSubClass 1 0x00子类码    这些码值的具体含义根据bDeviceClass域来看。    如bDeviceClass域为零,此域也须为零如bDeviceClass域为FFH,此域的所有值保留。6 BDevicePortocol 1 00x00协议码这些码的值视bDeviceClass和bDevieeSubClass的值而定。    如果设备支持设备基础上的类相关的协议,此码标志了设备类说明上的值。    如果此域的值为零,则此设备不在设备基础上支持设备类相关的协议。然而,它可能在接口基础上支持设备类相关的协议。如果此域的值为FFH,此设备使用厂商定义的协议。    7 BMaxPacketSize0 1 0x40端点0的最大包大小(仅8,16,32,64为合法值)    8 IdVendor 2 0x0547厂商标志(由USB标准付值)    10 IdProduct 2 0x1002产品标志(由厂商付值)    12 BcdDevice 0x0001设备发行号(BCD码)    14 IManufacturer 0x01描述厂商信息的字串的索引。    15 IProduct 0x02描述产品信息的字串的索引。    16 ISerialNumber 0x00描述设备序列号信息的字串的索引。    17 BNumConfiguratio 0x01可能的设置数

    PC主机收到本存储器插板的设备描述表后,按照表中的设备ID号来加载对应的本发明驱动程序,如果成功,PC主机再次通过端点0和地址0向本存储器插板发送一个SetAddress命令,给本存储器插板分配一个唯一的USB地址,本存储器插板收到PC主机SetAddress命令后,将PC主机赋予的地址存入寄存器,以后PC主机访问本移动存储器均使用该地址,本存储器插板也仅仅对该地址的数据包响应。Configured(配置状态)

    本存储器插板正常工作以前,本发明必须被正确配置。配置的内容就是PC通过发送“获取配置表”(GetConfiguration()),从本存储器插板获取配置表中的内容,并按该内容在PC端进行资源配置,或者对该配置表进行修改(SetConfiguration)。本存储器插板的配置表内容如表2所示:

    表2偏移量    域 大小    值    描述    0    bLength    1    0x01此描述表的字节数。    1 BDescriptorType    1    0x02配置描述表类型    2 WTotalLength    2    0x002e此配置信息的总长(包括配置,接口,端点和设备类及厂商定义的描述表)    4 BNumInterfaces    1    0x01此配置所支持的接口个数    5 BCongfigurationValue    1    0x01在SetConfiguration()请求中用作参数来选定此配置。    6 IConfiguration    1    0x03描述此配置的字串描述表索引    7 BmAttributes    1    0xa0配置特性:    D7:保留(设为一)    D6:自给电源    D5:远程唤醒    D4..0:保留(设为一)一个既用总线电源又有自给电源的设备会在MaxPower域指出需要从总线取的电量。并设置D6为一。运行时期的实际电源模式可由GetStatus(DEVICE)请求得到。    8 MaxPower    1    0x30在此配置下的总线电源耗费量。以2mA为一个单位。中止状态

    为节省电源,本存储器插板在探测不到总线传输时自动进入中止状态。当中止时,本存储器插板保持本身的内部状态,包括它的地址及配置。

    程序的自动下载是本发明的一个重要的特点,即本发明的存储器插板中8051微处理器的执行程序并不需要ROM保存,而是可以存放在PC主机端的本发明驱动程序中,并在本存储器插板接入USB总线的瞬间完成程序的下载并开始运行。实现该功能的核心思想是利用AN2131微处理器作为一个缺省的初始USB设备(具有设备ID1,PID=0x2131)接入PC主机,PC主机加载对应于ID1的设备驱动,该驱动程序主要包含通过缺省的端点endpoint0向本存储器插板下载执行程序的程序;本存储器插板收到执行程序后,立刻运行该程序,然后执行USB总线的复位(通过AN2131的USB总线复位管脚进行),PC主机重新识别本存储器插板设备,此时本存储器插板返回设备ID2(本存储器插板的真正设备ID,PID)=0x1002),PC主机根据该ID加载本存储器插板最终的驱动程序,从而使本存储器插板开始正常工作。该功能的实现是利用了AN2131微处理器的一个特点:AN2131不运行程序的时候,可以作为一个具有设备VID=0x2131的缺省USB设备,该设备具有USB协议的缺省配置,即具有端点0,能够对端点0的数据进行响应。

    本发明的程序自动下载具体实现方法实施例如图6所示,包括以下步骤:

    1)本存储器插板接入USB总线的时候,PC主机将向之发送Get Descriptor(获取描述表)命令,要求USB设备返回设备号和厂商号;

    2)本存储器插板首先返回初始化设备的VID=0547(生产厂商ID),PID=2131(产品ID):

    3)PC主机获取本存储器插板的初始设备ID后,将在PC主机操作系统的USB设备驱动库中查找对应于上述ID的设备驱动(该ID对应于本发明的下载程序的驱动程序),并加载;

    4)PC主机操作系统一旦加载本存储器插板的下载程序的驱动,该程序立刻通过本存储器插板初始化设备提供的数据管道向本存储器插板下载可执行程序;

    5)本存储器插板收到下载的程序后,立刻运行而成为本存储器插板正常工作的设备;

    6)本存储器插板产生一次新USB设备接入总线的信号,使PC主机重新识别本存储器插板;

    7)PC主机收到新设备接入的信号,重复上述的1、2、3步骤,加载对应于VID=0547,PID=1002的设备驱动,该驱动即为本存储器插板正常工作时的设备驱动,从而完成程序自动下载的过程。

    由于本发明具备硬件执行程序动态下载的功能,从而使之具备最先进的软件升级功能;对于传统的硬件系统,程序一般存储在可擦写的EEPROM或者Flash中,用户在升级软件的时候,一旦中途意外中断操作或者升级了错误的程序,将造成硬件设备不能正确启动的物理故障。而本发明的程序是存放在PC主机端,用户可以随意更换驱动而不致影响物理设备。

    乒乓缓冲的设计主要是为了加快本发明的数据收发;因为PC主机的处理速度非常的快,且USB总线的传输速率也非常的高,最高可达12Mbps,但是本存储器插板的微处理器的速度相对就比较慢,如果每个端点只使用一个缓冲区,将使数据的传输速率大为降低,设计原理如下:

    条件:

    1、USB总线的实际传输速率为900Kbyte/S(即7.2Mbps);

    2、端点的缓冲区位64字节(只能等于USB最大数据包的长度64字节);

    3、AN2131的平均指令执行时间为160nS;

    4、将64字节数据送入Flash,平均需要执行400条指令。

    计算:

    64B数据在USB总线的传输时间T1=64/900K=69444nS,

    AN2131处理64字节的时间T2=400×160=64000nS。

    如果端点只使用一个缓冲区,那么PC主机必须等待本存储器插板处理完收到的64字节数据后,才能发送下一个64字节的数据,此时实际的数据传输速率为:

    V=64/(T1+T2)=468Kbyte/S

    此时数据的传输速率远低于USB总线的900Kbyte/S的传输速率;如果使用2个缓冲区,很明显,因为USB总线传输64字节的时间69444nS大于微处理器的处理时间64000nS,因此,微处理器处理完一个64字节的缓冲区后,PC主机向另外一个缓冲区的数据传输还没有完成,所以,此时的数据传输速度就等于USB总线的传输速度900Kbye/S。因此,乒乓缓冲区的使用,大致可以提高一倍的数据传输速率。

    本发明的乒乓缓冲区程序包括数据的发送和接收,其中发送数据的实现方法实施例如图7所示,包括如下步骤:

    1)本存储器插板收到USB总线的数据,立刻查询Buffer1(缓冲区1)的标志位,如果是空的,则将数据包写入Buffer1,并置该缓冲区的标志位为1(满),最后向PC主机发送接收成功的握手信号ACK;

    2)如果Buffer1是满的,则转而查询Buffer2,如果Buffer2是空的,则重复和Buffer1空时同样的操作;如果Buffer2也是满的,则表示PC主机发送的速度过快,本存储器插板处理不过来,则丢弃本次接收的数据,并向PC主机返回接收不成功的握手信号NAK。

    本实施例的乒乓缓冲区的接收数据的方法如图8所示,包括如下步骤:

    1)本存储器插板的微处理器首先检查Buffer1的标志,如果Busy1=1,表示该缓冲区接收满了数据,那么将该数据写入Flash,并置标志为0(表示Buffer1为空);如果Busy1=0,表示没有数据,则直接进入下面的操作;

    2)处理完Buffer1后,接着检查Buffer2的标志,如果有数据,则写入Flash,然后清空标志位;如果没有数据,则重复第一步的操作。

    本实施例的Flash的IO驱动程序主要在Flash标准时序的基础上增设了体交叉的写入方法。由于Flash的结构特点,决定了Flash读写时间的不对称性;以Samsung公司的KM29U128T芯片为例,读出一页数据(512字节)的时间为10uS,而写入一页数据的平均时间为350uS;一页数据从USB总线传送到Flash的数据总线,或者从Flash的数据总线传送到USB总线的平均时间为300uS,因此:

    本发明内部的读传输速率=512/(300+10)=12.6Mbps

    本发明内部的写传输速率=512/(300+350)=6Mbps

    由此可见,Flash的写入延时是本发明写入速度的瓶颈,如果不采取措施,加上USB总线和PC主机端的数据传输的时延,实际的写入速度将只能达到3~4Mbps。

    体交叉技术的核心思想就是利用多片Flash的并行操作来提高写入速度;由于Flash具有读流水的特点,故体交叉技术对读出操作并没有改善。由于本发明的体积非常小,故一般只采用两片Flash。

    本实施例的体交叉的写入操作实现流程如图9所示。包括步骤如下:

    1)进入页写入操作后,首先判断待写入的页地址是否奇数页,如果是则准备将数据写入Flash1中;否则准备将数据写入Flash2中;

    2)检查Flash1的R/B管脚,判断Flash1是否空闲;如果空闲,将数据写入Flash,否则继续查询状态,直到空闲后写入;

    3)写入Flash2的操作同写入Flash1的操作。

    由于Flash的读操作具有流水特性,故读出的过程仍然采用顺序读取,即先读完Flash1上的数据,然后读取Flash2上的数据。当然,要是实现完整的文件体交叉存取,还需要PC端的驱动程序的支持。

    本发明的PC主机中的驱动程序包括PC主机操作系统的标准USB协议栈的驱动程序和本发明本身的驱动程序。

    PC主机操作系统的标准USB协议栈的驱动程序主要包括:

    PCI-Enumeriator:PC主机的USB物理接口是通过PCI总线与CPU连接的;

    OpenHCI.SYS:PC主机操作系统的USB协议栈的驱动,开放PC主机控制器接口

                 驱动(Open Host Controller Interface);

    UHCD.SYS:PC主机操作系统的USB协议栈的驱动,USBPC主机控制器驱动

            (USB host controller drivers);

    USBD.SYS:PC主机操作系统的USB协议栈的驱动,USB设备驱动;

    USBHUB.SYS:PC主机操作系统的USB协议栈的驱动,USB的集线器驱动;

    本发明本身的驱动程序包括:

    EDStart.SYS:本发明的下载代码的驱动程序;

    EasyDisk.SYS:本发明正常工作的设备驱动程序;

    EDIOSP.SYS:本发明的IO端口驱动(IOS Port)。

    本发明的下载代码的驱动程序和正常工作的设备驱动程序均采用WDM格式开发,具有良好的兼容性。

    下载代码的驱动程序的主要功能就是向本发明下载可执行程序,进行设备的初始化。下载代码的驱动程序流程如图10所示,包括以下步骤:

    1)IRP_MJ_POWER和IRP_MJ_PNP均是PC主机操作系统的IRP参数,当本存储器插板接入的时候,PC主机操作系统的驱动USBD.SYS能够通过EDStart.SYS的入口函数DriverEntry()来传递这些参数;

    2)辅助功能码同样是通过PC主机操作系统的USB协议栈获得;

    3)当辅助功能码为删除设备的时候,表示本存储器插板已经脱开USB总线,此时调用PC主机操作系统USB协议栈提供的删除设备的函数IoDetachDevice()和IoDeleteDevice()来删除设备;

    4)当辅助功能码是其他的时候,此时本发明的下载驱动不进行任何动作,仅仅简单返回;

    5)流程图中的复位本发明和向本存储器插板下载程序,都是通过URB参数块向下层的USBD.SYS传递参数,来使用USB协议中的VenderRequest(厂家请求命令)命令与

    本发明通讯,本发明下载代码的驱动程序使用的URB结构如下:

    本发明的正常工作的设备驱动程序是按PC主机操作系统标准驱动程序格式实现的。该正常工作的设备驱动程序是本发明正常工作所使用的驱动;当本发明完成程序的下载后,便以一个新接入的设备开始工作,此时PC主机操作系统便加载本发明的正常工作的设备驱动程序。本发明的正常工作的设备驱动程序主要包括:接入设备的管理和为上层应用提供IO操作。

    接入设备的管理主要包括:设备的即插即用管理和设备的电源管理。

    本发明设备的电源管理并不进行很多的处理工作,仅仅从底层PC主机操作系统的USB驱动获取本发明的电源类型,电源状态,并不进行处理和修改。

    从底层获取得电源的IRP参数主要有:

    IRP_MN_SET_POWER(设置电源属性的IRP参数)

    IRP_MN_QUERY_POWER(查询电源属性的IRP参数)

    通过这些IRP参数的辅助参数还可以知道设备的电源状态和供电内容。

    本发明的即插即用(Plug and Play,简称PNP)管理是一个很重要的功能,主要处理设备的接入、停止和删除;本发明充分继承了USB总线支持多设备同时接入的特点,能够有效的实现同时接入64个本发明;虽然USB协议规定,总线上最多可以级联127个设备,但是由于所有的设备均需要共享带宽,而USB总线的最大带宽为12Mbps,放实际上接入127个设备基本没有意义,因而本发明仅仅做到了支持64个设备的同时接入。本发明的接入管理流程如图11所示,包括以下步骤:

    1)本发明接入USB总线的时候,PC主机操作系统将加载本发明的驱动程序,并将本发明接入的PNP消息传递给本发明的驱动程序EasyDisk.SYS;

    2)驱动程序接收到PNP的消息,将进入PNP处理例程;

    3)驱动首先检查当前驱动管理的本发明设备是否大于64;

    4)如果大于64则返回超过最大设备数目的错误,否则进入下一步操作;

    5)如果小于64,那么创建一个新设备,设备名称为“EZDSK-X”,X表示当前实例的个数,例如第一个设备名称为“EZDSK-0”,后续接入的多个设备依次命名为“EZDSl-1”,“EZDSK-2”等;

    6)如果创建设备成功,则调用IoCreateSymbolicLink()函数来建立符号连接,即将设备名称和实际的设备句柄进行关联,否则返回创建失败;

    7)建立符号连接后,返回成功的标志。

    另外,本发明的PNP管理还需要处理以下三个系统IRP消息:

    IRP_MN_START_DEVICE

    该IRP的功能是初始化刚刚接入的本发明设备。通过设置URB参数块,通过函数IoCallDriver()调用Pc主机操作系统的USBD.SYS驱动,向本发明发送初始化命令。URB的结构和内容在2.1.1中有描述,不再详述。

    IRP_MN_STOP_DEVICE

    该IRP的功能是暂停本发明的工作。实现方法仍然是通过URB参数块,调用USB驱动进行传送。

    IRP_MN_REMOVE_DEVICE

    该IRP的功能是删除己脱离USB总线的本发明设备,实现方法同上。

    本发明正常工作的设备驱动程序的最重要的功能就是给本发明的上层应用提供基本的IO操作,为此,本发明的驱动定义了若干的IO操作的控制程序,以方便上层应用程序使用。上层的应用程序只需要调用系统DeviceIoControl()函数,并在其中指定才发明的设备句柄和响应的IO控制程序,就可以调用本发明的驱动进行IO操作了。

    本发明定义了丰富的IO控制码,以完成各种IO控制和系统状态查询,IO控制码定义如下:

    IOCTL_EZDSK_GET_PIPE_INFO:获取本发明的所有传输管道信息

    IOCTL_EZDSK_GET_DEVICE_DESCRIPTOR:获取设备描述表信息

    IOCTL_EZDSK_GET_CONFIGURATION_DESCRIPTOR:获取设备配置表信息

    IOCTL_EZDSK_BULK_WRITE:批传输的写操作

    IOCTL_EZDSK_BULK_READ:批传输的读操作

    IOCTL_EZDSK_VENDOR_REQUEST:获取厂商信息

    IOCTL_EZDSK_GET_CURRENT_CONFIG:获取当前配置

    IOCTL_EZDSK_DOWNLOAD:向本发明下载可执行程序

    IOCTL_EZDSK_GET_STRING_DESCRIPTOR:获取字符描述表信息

    IOCTL_EZDSK_RESET:复位本发明设备

    IOCTL_EZDSK_GET_CURRENT_FRA_NUMBER:获取当前帧编号

    本发明为上层应用提供IO操作实现流程如图12所示。

    程序实现步骤如下:1)先获取上层调用传递过来的IO控制程序参数;2)然后根据IO控制程序建立相应的URP参数块;3)最后调用底层的USB驱动来执行响应的操作。

    上层的调用方法:

    在完成正常工作的设备驱动程序后,上层应用的调用非常简单,只需要通过标准的设备IO控制函数就可以实现相应的操作,函数调用规则如下:

    BOOL DeviceIoControl(

    HANDLE hDevice,         ∥指向本发明设备的句柄

    DWORD dwIoControlCode,  ∥IO控制程序

    LPVOID lpInBuffer,      ∥输入数据/参数的缓冲区指针

    DWORD nInBufferSize,    ∥输入数据/参数的缓冲区的大小

    LPVOID lpOutBuffer,     ∥接收数据的缓冲区指针

    DWORD nOutBufferSize,   ∥接收数据的缓冲区的大小

    LPDWORD lpBytesReturned,∥实际接收到的数据的字节数

    LPOVERLAPPED lpOverlapped ∥指向一个异步操作的结构)

    本发明的IO端口驱动程序EDIOSP.SYS的主要功能就是建立一个虚拟的存储设备驱动器,使用户能够象操作计算机中的本地硬盘一样操作本发明。该驱动程序的开发与USB的正常工作的设备驱动程序开发流程类似,只需要按照DDK中编写存储设备驱动程序的WDM模板编写即可。端口驱动程序除完成虚拟存储设备驱动外,其最重要的功能仍然是本发明的IO操作的实现。其主要内容是实现本发明的文件系统。

    本发明的文件系统包括文件系统的定义和文件系统的操作

    本发明的文件系统的定义如下:

    1)本文件系统定义文件存储的基本单位为16KB。

    2)整张盘由一个引导块和后续的数据块组成;

    3)引导块是从第0块开始,所找到的第1个非坏的物理块。为了提高效率,规定引导块只能位于前10个物理块内。这样,如果前10个物理块都是坏的,那么这张盘将无法用于本文件系统;引导块的数据结构如表3所示:表3地址内容0~7B,8字节起始标志“EzDisk”8~17B,10字节文件系统类型标志,“Interleave”表示体交叉格式,“Normal    ”表示正常格式18~8K-1B,8K-18字节保留8K~12K-1字节坏块映像,每1位表示1个物理块,该位为1表示是坏块。共可表示32K个块,即所支持盘的最大容量为512MB;12K~16K-1字节占用块映像,每1位表示1个物理块,该位为1表示被占用。共可表示32K个块,即所支持盘的最大容量为512MB。说明:如果本发明的容量大于512MB,那么本发明的引导区将占用两个Block,第二个Block的空间8K用于坏块映象,8K用占用块映象。此时能够支持的容量将达到1.5GB。4)由于Flash上难免存在坏掉的物理块,所以本文件系统采取了能绕过坏块存储文件的设计;文件在盘上连续存储,每一个文件由一系列连续的物理块组成。其中可能有坏块,但文件系统在访问时会根据坏块映像来自动跳过这些坏块。例如,一个文件的文件头和数据加起来本来应该占用n个块,该文件的存放起始块地址为a,那么该文件应该占用从第a块到第a+n-1块共n个物理块的区间。但是如果在此区间内有坏块,那么此区间将往后延伸,直到区间内所有的好块刚好能放下此文件。这样,如果该文件占用了从第a块到第a+n-1+t块的区间,说明在此区间内有t个坏块;5)存放文件的第一个块的第1页共512字节的空间用于存放文件头,从第2页开始才是文件本身的数据。这样,如果一个文件在PC主机上的大小为m个字节,那么在盘上将占用(m+512-1)/16K+1个好块;文件头的数据结构如表4:表46)0~7B,8字节7)起始标志“EzFile”8)8~11B,4字节9)文件大小,单位:字节,可表示小于4GB的10)12~19B,8字节11)文件“修改时间12)20~23B,4字节13)文件“属性”14)24~487B,464字15)文件名字符串,包含全目录信息16)488~507B,20字17)文件密码字符串18)508~511B,4字节 19)文件类型标志“MP3”表不mp3文件,“PCM”    录音文件,“***”表示其它文件20)由于“连续读”的问题,每片Flash的最后1个物理块在本文件系统中不采用。所

    以16MB的盘实际上可用1023个物理块,而32MB的盘实际上可用2046个物理块。21)为了提高访问速度,在本发明接入的时候,驱动程序将在PC主机的内存中创建本

    发明的引导分区的映象;知道用户的操作需要修改引导分区的信息,驱动程序才会

    更新Flash中的引导分区表。22)本发明支持长文件名,多级目录;文件名和目录信息均存放在文件头的文件名称字

    符串中。23)体交叉存储方式的文件系统和正常方式的文件系统基本一致,主要的区别就是每一

    片Flash均存在一个独立的文件系统,而每个文件均分割成两个独立的文件存放。

    文件系统提供给用户的操作主要包括:本发明格式化,文件的写入,文件的读取,文件的删除,文件的重命名操作和本发明的碎片整理操作。

    格式化操作的主要功能就是重新建立本发明的文件系统,在本发明初次使用的时候,以及文件系统意外损坏的情况下,需要进行格式化操作。格式化操作将擦除Flash中的所有数据。本发明格式化操作的流程非常简单,首先识别是否可以建立体交叉文件系统(通过硬件电路识别存储器的个数),然后擦除Flash,检测Flash的失效块,最后写入文件系统。

    本发明的文件写入操作包括普通写入和体交叉写入两种操作

    本发明的普通写入方法步骤如下:1)查询本发明的引导分区映象,获取可用的存储空间和起始地址;2)按文件系统修改引导分区中的存储空间占用信息;3)将文件头和数据按照文件系统的格式写入Flash

    体交叉的写入和普通写入过程基本类似,主要的区别在于体交叉存储前需要将待存储文件顺序分割为两部分,分别作为独立的文件存入不同Flash中。注意,由于Flash可能随机存在失效块,文件分割成的两部分的大小可能不一样,分割的原则是尽量相等,因为这样的存入效率最高。而发送数据的时候则需要对分割好的文件进行交叉发送。体交叉写入流程图如图13所示,实现步骤如下:

    1)进入体交叉存储例程盾,首先检查Flash剩余的连续空间是否足够存放当前的文件;如果最大的连续空间不够存放当前的文件,但是剩余的物理空间足够,则需要进行碎片整理;如果整理完后的连续空间仍然不够,则表示又产生了一些新的无效块,然后返回空间不足的错误,退出;

    2)如果第一次检查后发现剩余连续空间足够,或者碎片整理完后,空间足够存放当前文件,则开始分割文件;

    3)将文件按尽量相等地原则顺序的分割为2部分,并开始以页为单位发送数据

    4)发送时交替发送分割后的文件1和2的数据,直到发送完毕

    由于本发明在接入PC进行初始化的时候,驱动程序将自动扫描本发明的引导分区和所有文件的文件头,并在PC的内存中建立本发明文件位置的映象。因此文件的读取只需要简单的向本发明发送起始地址,顺序读入文件的内容即可。读取操作也分为体交叉读和普通读,体交叉读和普通读入操作的区别很小,唯一不同的是体交叉读需要进行两次读操作,先读完位于Flash1中的文件,然后读取位于Flash2中的文件,最后将读到的两个文件简单的合并即可。

    文件的删除操作实际上只需要释放本发明的引导分区中该文件占用的块信息即可。

    文件的重命名操作只需要更新文件头中的文件名称即可。

    本发明的碎片整理是将重新安排本发明上所有文件的位置,使文件之间不存在空闲区域。

    本实施例的主要性能参数如表5所示:表5外形尺寸80mm×22mm×12mm存储容量8MB-512MB不等最大传输速率写入:4Mbps-6Mbps,读出:6Mbps-8Mbps PC主机操作系统Win95/Win98/Win2000存储器寿命擦写周期大于1000,000次

通用串行总线接口的大容量移动存储器及其实现方法.pdf_第1页
第1页 / 共27页
通用串行总线接口的大容量移动存储器及其实现方法.pdf_第2页
第2页 / 共27页
通用串行总线接口的大容量移动存储器及其实现方法.pdf_第3页
第3页 / 共27页
点击查看更多>>
资源描述

《通用串行总线接口的大容量移动存储器及其实现方法.pdf》由会员分享,可在线阅读,更多相关《通用串行总线接口的大容量移动存储器及其实现方法.pdf(27页珍藏版)》请在专利查询网上搜索。

本发明属于计算机技术领域,包括由硬件电路构成的移动存储器插板,嵌入PC主机端的控制软件和PC主机端中的驱动程序两部分组成;其中,移动存储器插板包括微处理器CPU及与其相连的两个Flash存储器、一个备选EEPROM存储器、与PC主机进行连接的USB接口,晶振及电源。本发明大大提高了USB接口的传输速度和数据的存储速度;且对数据的传输和携带具有可靠、方便携式而廉价的优点。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1