已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模板论文费下载范文模板论文费下载范文 南开大学南开大学本科生毕业论文 设计 中文题目基于Flash闪存 芯片构建U盘文件系统外文题目 Constructing U Disk FileSystem Based on FlashMemory学号XXX姓名XXX年级xx级专业软件工程系别软件工程系 学院软件学院指导教师XXX完成日期xx 05 21摘要I关于南开大学本科生毕业论文 设计 的声明本人郑重声明 所呈交的学位论文 是本人在指导教师指导下 进行研究工作所取 得的成果 除文中已经注明引用的内容外 本学位论文的研究成果不包含任何 他人创作的 以公开发表或没有公开发表的作品内容 对本论文所涉及的研究工作做出贡献的其他个人和集体 均已在文 中以明确方式标明 本学位论文原创性声明的法律责任由本人承担 学位论文作者签名年月日本人声明该学位论文是本人指导学生完成 的研究成果 已经审阅过论文的全部内容 并能够保证题目 关键 词 摘要部分中英文内容的一致性和准确性 学位论文指导教师签名年月日摘要II摘要近年来 随着网络技术的 不断发展以及体域传感器技术的革新 基于他们的交叉领域的医学 技术不断发展 基于体域无线传感器的健康监测系统是计算机网络 多媒体技术以 及医学诊断技术相结合而形成的一门新兴课题 首先 本文从应用的角度阐述了本系统的基本架构 从底层到高层 依次为使用者 前端体域传感器信号采集装置 无线局域网 Andro id终端 医疗护理远程控制中心 在系统中心处理部分 介绍另外数据采集 数据存储服务器模块以 及大文件断点续传的内容 在系统管理软件部分 介绍了Java Web应用 B S架构和MVC模型 Tomcat服务器的应用 对该系统进行了调试 运行结果基本达到了要求 人们对医疗服务 特别是能深入家庭和社区的医疗保健的需求逐渐 增加 医疗保健仪器进入社区和家庭最大的问题是 普通人无法及时的检 测以及解读自身的生理参数 但对于某些疾病 例如心脏病发作的 时候 相应的心脏波形才最能说明问题 但在这些时候往往很难及 时记录病人的生理信息 传统医疗的服务由于受到时空的限制 仅能为身处医院的人群提供 服务 所以必须发展一种新型的医疗服务网络系统 而现代通讯技 术的发展和计算机技术的发展 为解决这一问题提供了技术基础 我们可以通过便携的体域传感器检测使用者的各项健康数据 并自 动地传送使用者的手机终端 继而通过网络将使用者的生理数据发 送到设在医院的远程医疗中心 从而实现医院和社区 家庭的医疗 沟通 在我国地广人多但医疗资源相对集中的国情条件下 使用远程医疗 具有相当高的实用价值及应用前景 1 2远程医疗系统的现状远程医疗信息系统是现代网络通信技术 计 算机多媒体和传统医学相结合的产物 它在医疗诊断 远程护理和 医疗救治过程中发挥出越来越重要的作用 远程医疗是随着宇航技术 航海技术的发展而产生的一种新的医疗 服务模式 60年代初期 美国国家宇航局为调查失重状态下宇航员的健康及生 理指标 在亚利桑那州建立了远程医学实验台 其通信手段为卫星 和微波技术 从此开始了消除空间障碍进行远距离医疗活动的相关 研究 80年代后期 计算机通讯技术 网络技术 数据压缩技术以及多媒 体技术的迅猛发展 为远程医疗奠定了基础 90年代以来 美国等发达国家投入巨资进行远程医疗和远程医疗信 息技术的研究开发 接受远程医疗服务的患者逐年增加 1996年欧美国家已达21000人次 随着各项技术的日臻完善 远程会诊与临床实体诊断的一致性逐步 提高 远程医学涉及的领域正在向广域化和专业化发展 目前美国各大医院已有各种类型的远程医绪论2疗系统 俄克拉荷马 州的远程医疗网已将该州的多家医院连接起来 缺少放射专家的乡 村小医院目前采用将数字化的X光片传至上级医院进行诊断的做法 大约1小时内即可得到诊断结论 专科远程医疗普及迅速 各医院相关专业之间相连 可随时进行病 例讨论 阅片 确定诊断报告 解答疑难问题等 目前拓宽的领域已有心脏 口腔 皮肤 救护 病理 精神病 放 射 手术 监护 超声等专科诊断系统 其中应用最广泛的是放射 学和病理学 近几年 远程医疗研究正在成为全球科技研究的热点 远程医疗是具有重大的社会效益 经济效益的系统工程 已经得到 了全世界各个国家卫生行业的重视 作为一种新型的医疗服务模式 也得到了政府 医疗机构和患者的认可 从临床应用情况来看 目前 比较成熟也比较常用的远程医疗学科 有远程影像诊断学 远程病理学 远程心脏病学 远程皮肤学 远 程骨科学和远程精神病学等 我国的远程医疗起步虽晚但发展迅速 国家卫生部使用亚洲卫星二号建立了卫星通信专业网 根据一网多 用的原则 金卫医疗网络工程有限公司利用卫星频道 已开通了北 京 哈尔滨 广州 上海等15个中心城市的20家重点医院 中国医 学基金会组建了中国远程医疗会诊骨干网 连通了25个省 自治区 直辖市近40家部属 省属重点医学院校附属医院和省属重点医院 基层网连通了近100家地市县级医院 骨干网上集中了近2000名国 内著名专家 面向全国医院和病人提供医疗 保健咨询和学术服务 据悉 这一网络将在十年内完成从电话干线到专线 光缆及卫星干 线的发展 总后推行的 军字二号 工程正在全军医疗卫生单位实施推广 军 队远程医疗网已突破大军区间的界限实现互联 未来几年内 医疗 卫生网有望与军队光纤通讯网并轨运行 届时通讯速率将会大大提 高 远程会诊质量也会明显改善 自1996年起 解放军总医院 南京军区总医院等单位先后建立远程 会诊中心 目前已分别与几十家医院连通 并成功地实施了几千例 会诊 北京军区于1997年底全面启动 军字二号 工程 区内20余家医疗 单位连通 组建了两个远程会诊中心 各站点通过软件调试 人员 培训 交互式运行 目前已形成多途径会诊 多学科专家体系 多 功能服务手段的良好态势 远程医学有许多优越性 它在方便病人 减少费用 提高医疗质量 提高工作效率 加强信息交流 加强卫生统计 乃至促进卫生体 制改革等方面都有积极的意义 作为远程医疗的信息系统在整个远程医疗过程中起着平台支撑 医 学信息管理 远程控制 数据采集等至关重要的作用 1 3课题提出现在大多数远程医疗设备对于一般使用者出于检测自身 健康状况的角度而言有以下三个缺点 一 便携性较差 虽然远程医疗在一定程度上解决了非本地患者的 就医问绪论3题 但是专业性的医疗设备依然不能满足人们随时随地 检测自身生理参数的目的 使得远程医疗检测服务依然受到限制 二 二 通用文件系统的记录信息需要被多次改写 如FAT表 而记录信 息放在固定的区块中 将导致该区块的频繁使用 影响整个Flash器 件的使用寿命 三 Flash存储器读取速度比磁盘驱动器快 存储的内容很多是多媒 体数据资料 这些数据允许一定程度的误码率 未必需要像通用文件系统那样严 格保证存储的正确性 如果通过灵活的校验机制与坏损管理 则可以达到更高效的存储空 间利用率 这对成本敏感的嵌入式系统来说是更加需要考虑的 针对上述情况 本项目需要设计构建一个适合NAND Flash存储器 本项目中即为Samsung的K9F2G08X0 的FAT文件系统 针对其存储特点 要对FAT表和FRT表的存储方式进行改进 加入坏 块处理技术 延长了使用寿命 增强了可靠性 使之更有利于Flash 存储器的应用 1 4已有的工作基础和本文开展的工作在进行一个USB设备开发之前 首先要根据具体使用要求选择合适的USB控制器 目前 市场上供应的USB控制器主要有两种带USB接口的单片机 MCU 或纯粹的USB接口芯片 带USB接口的单片机从应用上又可以分成两类 一类是从底层设计专 用于USB控制的单片机 另一类是增加了USB接口的普通单片机 如C ypress公司的EZ USB 基于8051 选择这类USB控制器的最大好处 在于开发者对系统结构和指令集非常熟悉 开发工具简单 但对于简单或低成本系统 价格因素也是在实际选择过程中需要考 虑的因素 纯粹的USB接口芯片仅处理USB通信 必须有一个外部微处理器来进 行协议处理和数据交换 典型产品有Philips公司的PDIUSBD11 I2C接口 PDIUSBD12 并行 接口 NS公司的USBN9603 9604 并行接口 NetChip公司的NET2 888等 USB接口芯片的主要特点是价格便宜 接口方便 可靠性高 尤其适 合于产品的改型设计 硬件上仅需对并行总线和中断进行改动 软 件则需要增加微处理器的USB中断处理和数据交换程序 PC机的USB 接口通信程序 无需对原有产品系统结构作很大的改动 由于前期的电路板设计都是已经由项目组完成 故项目组后来的工 作都是在此基础上完成的 根据文档 当时已经具备了61的开发板 项目组决定采用不含有通用MCU的USB接口芯片 这样可以节省开 发阶段的成本 周期以及产品本身的成本 虽然在天津市场上可以购买到贴片封装的USBN9602 价格为20元 但是从National的网站 national opf US USBN9602 html上了解到 该芯片已经过时 因此项目组没有选用它 在61相关的文档中看到过使用Philips的绪论4PDIUSBD12 以下简称 为D12 和61配合工作 尤其是从61网站上下载的USB模组 不但给 出了电路原理图 还给出了61部分源代码 PC端的源代码 因此决 定采用D12 对于闪存芯片的选择 项目组采用的是三星公司的K9F2G08X0 以下 简称为K9 容量为256M USB组织定义了海量存储设备类 Mass Storage Class 的规范 这个类规范包括四个独立的子类规范 即 一 USB Mass Storage ClassControl Bulk Interrupt CBI Transport 二 USB Mass Storage ClassBulk Only Transport 三 USB Mass Storage ClassATA Command Block 四 USB Mass Storage ClassUFI CommandSpecification 前两个子规范定义了数据 命令 状态在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文件系统操作 的具体细节 毕设项目开始时 设备的电路板已经初步设计完成 当时的功能已 经能做到插入PC的USB接口时主机能识别出新的盘符 即枚举过程完 全成功 Windows上可以显示出新的盘符 这样当XP为设备分配了一 个盘符 比如F 之后 XP不断的向设备发出各种SCSI命令 当用户在XP中通过Windows的浏览器对F盘访问的时候 XP报告该盘 没有被格式化 询问用户是否需要对其进行格式化 用户选择是 则固件程序将接收到一个OPCODE 0 x2A的Write 10 命令 表示XP开始要想K9中写入MBR以及文件系统了 以此来完 成U盘的格式化和文件系统的初始化操作 为了方便调试 项目组增加了force log函数 调用该函数后 后续 的add log函数会从数组log info中写入跟踪信息 所以 此后的工作即在此基础上完善在K9闪存芯片上的文件系统 在这个时候必须考虑如何对K9进行高层管理了 对NAND型FRAM进行管理需要考虑的主要问题是 一 出厂时可能存在坏块 并且使用过程中也可能会有坏块产生 二 按页写 按块擦除 三 写操作只能在空或已擦除的单元内进行 绪论5 四 块的擦写寿命有次数限制 文件系统的系统数据 比如MBR FAT等 被更新的频率非常高 如果文件系统访问的地址和闪存介质的物理地址一致 将使闪存介 质很快因为一部分数据块被频繁擦除和写入而损坏 导致整个闪存 介质不能被使用 五 块擦除时间与页读写时间相比十分长 综上所述在整个项目的进程中 个人主要参与的是两个部分的工作 前期参加了对7000个常用英语单词的录音 以及对不规则动词表 的资料收集和后期录音和检测工作 这部分工作完成后 即转入U盘文件系统创建与读取这部分 这部分的要求如下在主机 也就是PC上的Windows XP 通过USB总线给设备发来Mass StorageClass相关的命令的时候 响应主机命令 在U盘上创建FAT1 6文件系统 应主机或者设备的请求 修改 读取FAT16中文件内容 开发者需要了解闪存芯片K9的原理和特点 除了存放在PC上可以看到的文件 还需要存放设备专用的数据 比 如HMM模型参数 所有英语单词的发音数据 所有教材的文字信息等 完成者本科生尚绪翔 蒋蔚 庄馨 整个项目的完成是全体毕业设计小组成员在指导教师的指导下相互 协作完成的 本文作者在整个系统中主要负责一部分工作 所以本 文不对整个系统作完整的描述 将重点讨论文件系统的设计和构建 组织方式如下第一章绪论介绍本文背景 第二章介绍硬盘和U盘上 的文件系统 第三章阐述U盘与主机之间的通信机制 第四章阐述如 何响应windows对文件和目录操作的命令 第五章简单描述程序和调 试情况 第六章对整个项目进行总结 最后是参考文献清单和致谢 Flash文件系统6第2章Flash文件系统2 1FAT16文件系统在嵌入式开 发中 一般会在Flash中建立FAT16文件系统 在很多DOS系统中也用该文件系统 首先来了解在硬盘上的FAT16文件 系统基本构成 硬盘上的数据按照其不同的特点和作用大致可分为5部分MBR区 DBR 区 FAT区 DIR区和DATA区 下面是FAT16上各部分及其功能介绍 5 6 2 1 1MBR区 主引导扇区 MBR Main BootRecord 按其字面上的理解即为主引导记录区 位于整个硬盘 的0磁道0柱面1扇区 不过 在总共512字节的主引导扇区中 MBR只占用了其中的446个字 节 偏移0 偏移1BDH 另外的64个字节 偏移1BEH 偏移1FDH 交给了DPT Disk PartitionTable硬盘分区表 见下表 最后两个字节 55 AA 偏 移1FEH 偏移1FFH 是分区的结束标志 这个整体构成了硬盘的主引导扇区 主引导记录中包含了硬盘的一系列参数和一段引导程序 其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统 硬件完成自检以后引导具有激活标志的分区上的操作系统 并将控 制权交给启动程序 MBR是由分区程序 如Fdisk 所产生的 它不依赖任何操作系统 而且硬盘引导程序也是可以改变的 从而实现多系统共存 单个分区表项如表2 1所示表2 1分区表项偏移及长度所表达的意义0字节分区状态如0 非活动分区80 活动分区1字节该分区起始头 HEAD 2字节该分区起始扇区和起始 柱面4字节该分区类型如82 Linux Native分区83 Linux Swap分区5字节该分区终止头 HEAD 6字节该分区终止扇区和终止 柱面8双字该分区起始绝对分区C双字该分区扇区数Flash文件系统7M BR的组成如图2 1所示图2 1MBR图示2 1 2DBR区 系统引导区 DBR Dos BootRecord 是操作系统引导记录区的意思 它通常位于硬盘的0磁道1柱面1扇区 是操作系统可以直接访问的第 一个扇区 它包括一个引导程序和一个被称为BPB Bios ParameterBlock 的本分区参数记录表 引导程序的主要任务是当MBR将系统控制权交给它时 判断本分区跟 目录前两个文件是不是操作系统的引导文件 以DOS为例 即是Io sy s和Msdos sys 如果确定存在 就把其读入内存 并把控制权交给该文件 BPB参数块记录着本分区的起始扇区 结束扇区 文件存储格式 硬 盘介质描述符 根目录大小 FAT个数 分配单元的大小等重要参数 2 1 3FAT区 文件分配表 在DBR之后的是比较著名的FAT File AllocationTable文件分配表 区 在解释文件分配表的概念之前 先来谈谈簇 cluster 的概念 文件占用磁盘空间时 基本单位不是字节而是簇 簇的大小与磁盘的规格有关 一般情况下 软盘每簇是1个扇区 硬 盘每簇的扇区数与硬盘的总容量大小有关 可能是 4 8 16 32 64 通过上文可以知道 同一个文件的数据并不一定完整地 存放在磁盘的一个连续的区域内 而往往会分成若干段 像一条链 子一样存放 这种存储方式称为文件的链式存储 硬盘上的文件常常要进行创建 删除 增长 缩短等操作 这样操作做的越多 盘上的文件就可能被分得越零碎 每段至少是1 簇 但是 由Flash文件系统8于硬盘上保存着段与段之间的连接信息 即FAT 操作系统在读取文件时 总是能够准确地找到各段的位置 并正确读出 不过 这种以簇为单位的存储法也是有其缺陷的 这主要表现在对空间的利用上 每个文件的最后一簇都有可能有未被完全利用的空间 称为尾簇空 间 一般来说 当文件个数比较多时 平均每个文件要浪费半个簇的空间 为了实现文件的链式存储 硬盘上必须准确地记录哪些簇已经被文 件占用 还必须为每个已经占用的簇指明存储后继内容的下一个簇 的簇号 对一个文件的最后一簇 则要指明本簇无后继簇 这些都是由FAT表来保存的 表中有很多表项 每项记录一个簇的信 息 由于FAT对于文件管理的重要性 所以FAT有一个备份 即在原FAT的 后面再建一个同样的FAT 初形成的FAT中所有项都标明为 未占用 但如果磁盘有局部损坏 那么格式化程序会检测出损坏的簇 在相应的项中标为 坏簇 以 后存文件时就不会再使用这个簇了 FAT的项数与硬盘上的总簇数相当 每一项占用的字节数也要与总簇 数相适应 因为其中需要存放簇号 FAT的格式有多种 最为常见的是FAT16和FAT32其中FAT16是指文件 分配表使用16位数字 由于16位分配表最多能管理65536 即2的16 次方 个簇 也就是所规定的一个硬盘分区 以前由于每个簇的存储空间一般最大只有32KB 所以在使用FAT16管 理硬盘时 每个分区的最大存储容量只有 65536 32KB 即2048MB 也就是常说的2G 现在的硬盘容量是越来越大 由于FAT16对硬盘分区的容量限制 所 以当硬盘容量超过2G之后 用户只能将硬盘划分成多个2G的分区后 才能正常使用 为此微软公司从Windows95OSR2版本开始使用FAT32 标准 即使用32位的文件分配表来管理硬盘文件 这样系统就能为 文件分配多达4294967296 即2的32次方 个簇 所以在簇同样为32 KB时每个分区容量最大可达65G以上 此外使用FAT32管理硬盘时 每个逻辑盘中的簇长度也比使用FAT16 标准管理的同等容量逻辑盘小很多 由于文件存储在硬盘上占用的磁盘空间以簇为最小单位 所以某一 文件即使只有几十个字节也必须占用整个簇 因此逻辑盘的簇单位 容量越小越能合理利用存储空间 所以FAT32更适于大硬盘 2 1 4DIR区 根目录区 DIR Directory 是根目录区 紧接着第 二FAT表 即备份的FAT表 之后 记录着根目录下每个文件 目录 的起始单元 文件的属性等 定位文件位置时 操作系统根据DIR中的起始单元 结合FAT表就可 以知道文件在硬盘中的具体位置和大小了 Flash文件系统92 1 5DATA区 数据区 数据区是真正意义上的数据 存储的地方 位于DIR区之后 占据硬盘上的大部分数据空间 2 2K9上构建的文件系统明白了一般的FAT16文件系统在硬盘上的架 构之后 本文又根据本项目的实际情况设计更适合于在U盘 本项目 使用K9的闪存芯片 7 8 构建的文件系统结构 本U盘容量为256M 采用的是三星的K9闪存 芯片 之所以采用FAT16文件系统 原因如下FAT32概念的提出一方 面就是为了增大文件系统管理的容量 但FAT16管理256M已经绰绰有 余 没必要再用FAT32文件系统 FAT32还有一个优点就是减少了cluster的大小 但本U盘用的是K9的 闪存芯片 为了便于管理 一个cluster是一个block的大小 128K 完全没用到FAT32中cluster容量小的优势 综上所述 决定本项目采用FAT16文件系统 便于管理和编程 具体描述如下项目组采用FAT16文件系统 令文件系统中的逻辑块 logical block 对应于K9的物理页 page 文件系统中的cluster对应于K 9的物理块 block 由于文件分配的最小单位为cluster 所以 K9的一个物理块只能够 分配给一个文件 本项目仅仅支持用户对设备做格式化 复制一个文件到根目录下 删除根目录下的文件 不支持用户修改设备中一个已经存在的文件的内容 因此 K9的一个物理块在文件系统中只有3个状态空闲 被占用 损 坏 当然 当一个物理块处于 空闲 状态的时候 或者它自上次被擦 除后从来就没有使用过 或者自上次被擦除后它存放过有用数据 但是后来它所在的文件被删除的时候 该物理块被文件系统管理软 件标记为 空闲 在这种情况 下次该块被分配给一个新的文件并且有数据被写入的 时候 应该先将该物理块擦除一次 整个K9的2048个物理块被分为 1 2000个物理块用来存放文件系统 2 4个物理块 512K 用来存放最长32秒的语音数据 3 坏块 4 其他剩余的块被用作保留块 在K9使用过程中 如果出现新的 坏块 坏块会被保留块置换 K9中64pages构成一个block 即为文件系统中的cluster 每页为2048 个字节即2K 所以一个block为128K 共2048块 即为256M 即本项目中的FAT16文件系统中一个sector为2K 一个cluster为128K Flash硬盘与普通的磁头 柱面式介质不一样 在开发U盘的过程中 使用Flash作为存储介质 它有其特定的结构特点 以项目组采用的三星K9F2G08X0A FlashFlash文件系统10为例 见图2 2 它有2048个block 每个 block有64个page 每个page有2048 64 2112个字节 图2 2Flash的结构17bit的Row Address定位到K9的某一页的编号 即LBA地址 因为K9共有128K Pages 而128K即为2的17次方 故只需要17位就能完全定位 L表示 被设置为 Low 12bit的Column Address定位到一页中的某一个具体字节 因为一页的大小为2K 2 的11次方 64Bytes 故需要12位来完全定位 同上 L表示被设置 位 Low 由于做为U盘的Flash不要求启动 因此可以没有MBR区 只包含DBR FAT DIR和DATA四个区 因此 Flash的前两个Block的内容如表2 2所示表2 2Flash的前两个Block LBABlock Page长度内容说明630 632048字节MBR BPB Excutable Code 55AA64 651 0 1 14096字节FAT区 第一份FAT 66 671 2 1 34096字节FAT区备份 第二份FAT 68 1271 4 1 63目录区128数据区Flash文件系统112 3U盘的格式化操作U盘的格 式化操作的全部代码都写作FAT Format 这个函数里面 当系统开 始执行格式化操作的命令时 就会调用这个函数 根据上一节中介 绍的项目组所使用的文件系统的架构和相应的数据结构 格式化操 作主要分为三个部分 2 3 1MBR和DBR的初始化写入的具体数据如下 PARTITION BOOTRECORD 放在第0块最后一页 占用512个字节 PBR的关键信息 buffer 0 0 x00EB 启动代码buffer 1 0 x003C buffer 2 0 x0 090 buffer 3 0 x004D OEM namebuffer 4 0 x0053 buffer 5 0 x0044 buffer 6 0 x004F buff er 7 0 x0053 buffer 8 0 x0035 buffer 9 0 x002E buffer 10 0 x0030 buffer 11 Sector Size 每扇区字节数buffer 12 Sector Sizebuffer 13 Cluster Sector 每簇 扇区数buffer 14 Reserve Sector 保留扇区数buffer 1 5 Reserve Sectorbuffer 16 FAT Num FAT个数 为2buffer 17 ROOT Entry 根目录项数 两个字节buf fer 18 ROOT Entrybuffer 19 Total Sectors 分区总扇区数 此处为0buffer 20 Total Sectorsbuffer 21 0 x00F8 分区介质标志buffer 22 FAT Sector 每个FAT占的扇区数Flash文件系统12buffer 23 FAT Se ctorbuffer 24 0 x0000 每道扇区数buffer 25 0 x 0000 buffer 26 0 x0000 磁头数buffer 27 0 x0000 buffer 28 Hidden Sectors 隐藏扇区数 占4个字节buffer 29 Hidden Sectorsbuffer 30 Hidden Sectors buffer 31 Hidden Sectorsbuffer 32 BigTotal Sectors 分区总扇区数大于3 2M时使用buffer 33 BigTotal Sectorsbuffer 34 BigTotal Sectorsbuffer 35 BigTotal Sectorsbuffer 36 0 x0000 buffer 37 0 x0000 保留buffer 38 0 x0029 扩展引导标志buffer 39 0 x0000 盘序列号占4个字节 SerialNumber是闪存格式化后产生 buffer 43 0 x0000 11个字节长的卷标 此域需与要目录中 的卷标一致 buffer 54 0 x0046 FAT12 FAT16 或 F AT 之一 for j 1 j 8 取次高8位放在455的低8位buffer 456 LBA Begin Addres s 取出高8位放在454的低8位buffer 457 LBA Begin Address 高位放后面buffer 458 Big Total Sectors 文件系统管理的总扇区数buffer 45 9 BigTotal Sectorsbuffer 460 BigTotal S ectorsbuffer 461 BigTotal Sectors Unused PartitionTables 剩下的未用的三个分区表 共48个字节 for j 1 j 48 j buffer 461 j 0 x0000 buffer 510 0 x0055 结束 标志buffer 511 0 x00AA buffer数组为512字节 先把数据写到这 个缓冲区中 然后在把整个数组的数据写进K9指定的物理页中 从而完成这部分数据的整体写入 2 3 2FAT表的初始化写入的具体数据如下unsigned intzero value 1 0 x0000 写入0 x0000值时用到的数组 FAT表1放在第1块第0 1页 Init Row K9 SeqWrite Start Init Row Init Col FAT1 占用2048 2B 4K 2个Sectors K9 Write Data reserved clusters 4 Reserved Clusters 0i Sector Size 4 i K9 Write Data zero value 1 K9 SeqWrite Execute Free culstersin otherFAT sectorsfor j 0 j 最后的K9 SeqWrite Execute 即是把缓冲区中数据写入到实际的物 理页中的标志 2 3 3FDT即文件目录表的初始化写入的具体数据如下 ROOT DIRECTORYENTRIES 为根目录区 紧接着两个FAT表for j 0 j 60 j 使用60个Sect ors 共60 64个目录项 Init Row K9 SeqWrite Start Init Row Init Col for k 0 k 64 k for i 0 i 2 4文件系统初始化当主机识别出U盘 发出READ命令后 Flash读写 操作即告开始 主机首先读取MBR 得到有关存储介质的有关信息 诸如扇区长度 每簇扇区数以及总扇区数等内容 以便知道此盘有 多大 如果读取正确 会接着读取文件分配表 借以在PC机上的可移动盘 符中显示文件目录 并可以复制 删除或是创建文件 系统自动将这些命令都转换成READ或WRITE两种命令 通过USB的REA D或WRITE命令块描述符来从Flash中相应扇区读取数据 或是将特定 长度的数据写入Flash相应地址中 这部分主要是利用Windows的自身机制来响应用户的操作 2 5闪存的块操作特性和数据交换区2 5 1块操作特性闪存中的块操 作特性 是指对NAND型闪存进行擦除操作时 最小的擦除单位是一 个块 即其包含所有64个sector的数据 这样 在只需要擦除一个sector中的数据时 就存在一个将其他sec tor上的有用数据也擦除的问题 例如 主机要往设备的0sector处写一个sector的数据 这表明的0s ector数据是无用的 可以擦除 但是 存于1 63sector的数据可能是有用的 而闪存的擦除命令会 把整个块 0 63sector 擦除 有一个方法可以解决这个问题 可以把第的1 63sector数据暂时存于闪存的某个块中 假设存于Bl ock2046中 准备存入前 必须先用擦除命令把该块擦除 所有的数据位将被置 成1 然后把1sector的数据读入到内部RAM中 接着把它写到Block2 046的1sector 地址为Block2046 64 1依此类推 把Block0 2secto r 64sector 的数据写到Block2046对应的位置 之后再把Block0擦 除 完成这些之后 才可以把从主机来的个的数据写到内部RAM中 然后 把数据写到0Sector处 最后把刚才存于Block2046的数据依次通过 内部RAM写回到Block01 63Sector处 Flash文件系统162 5 2数据交换区对于上面所叙述的 Block2046称 之为SWAP AREA即数据交换区 又称为临时块 内存中可作数据交换区的块首先应是好块 否则不能进行正确的数 据交换 如果设计上把Block2047定义为特殊记录区 起始地址为65504 204 7 32 同样有个前提 即该块是好的 否则必须依次前移 如果 假设该块是坏的 那么数据交换区必须前移到Block2046 依 此类推 特殊记录区前移到Block2045 之所以会出现这种情况 是由NAND型闪存的特性决定NAND的 根据该类型闪存的技术规范 NAND型闪存出厂时 允许有最多不超 过2 的坏块 如果一块NAND型的闪存共有2048个块 这样 允许的坏块数最多约 为41个 这些坏块不能存储正确的数据 因此当主机要求读写的地址刚好落 在坏块时 固件程序必须设法跳过这些块 并读写正确的位置 U盘与主机的通信17第3章U盘与主机的通信3 1Mass Storage协议USB协议能够在启动或是当设备插入系统时对设备进行 配置 这就是USB设备为什么可以热插拨的原因 USB设备被分成以下几类显示器 Monitors 通讯设备 Communic ation devices 音频设备 Audio 人机输入 Human input 海量存储 Mass storage 特定类 class 的设备又可划分成子类 subclass 划分子类的 后软件就可以搜索总线并选择所有它可以支持的设备 每个设备可以有一个或多个配置 Configuration 配置用于定义 设备的功能 如果某个设备有几种不同的功能 则每个功能都需要一个配置 配置 configuration 是接口 interface 的集合 接口指定设备中的哪些硬件与USB交换数据 每一个与USB交换数据的硬件就叫做一个端点 endpoint 因此 接口是端点的集合 USB的设备类别定义 USB DeviceClass Definitions 定义特定类或子类中的设备需要提供的缺省配置 接 口和端点 描述符 descriptor 描述设备 配置 接口或端点的一般信息 U SB描述符的层次结构如图3 1所示 图3 1USB描述符层次结构USB Host 唯一通过描述符了解设备的有 关信息 根据这些信息建立起通信 在这些描述符中 规定了设备 所使用的协议 端点情况等 因此 正确地提供描述符 是USB设备正常工作的先决条件 USB海量存储设备 11 15 USB Mass StorageClass 包括General MassStorage Subclass CD ROM Tape Solid State DeviceConfiguratioInterface iEndpointiConfiguratioInterface iEndpointiEndpoint iU盘与主机的通信18MassStorageClass只需要支持一个接口 即数 据 Data 接口 选择缺省配置时此接口即被激活 数据接口允许与设备之间进行数据传输 它提供三个端点Bulk Input端点 Bulk Output端点和中断端点 通用海量存储设备 General MassStorage Device 是随机存取 基于块 扇区存储的设备 它只能存储和取回CPU的数据 这种设备的接口遵循SCSI 2标准的直接存取存储设备 Direct AessStorage Device 协议 USB设置上的介质使用与SCSI 2设备相同的逻辑块 logical blocks 方式寻址 下面介绍基于Bulk Only 批量传输 模式的MassStorage设备的描述符每个USB设备都 必须有一个设备描述符 设备描述府如图3 2所示图3 2设备 Device 描述符MassStorage设 备的设备类型和子类代码均在接口描述符中设置 这里置0 其中iSerialNumber可为零 即不指定Serial Number 配置描述符如图3 3所示U盘与主机的通信19图3 3配置 Configurat ion 描述符这里配置所支持的接口数应为1 即设置至少支持一个接口 这里为Bulk Only Data接口 此接口使用三个端点控制端点 默认 Bulk In和Bul k Out 其中bInterfaceSubClass指定所使用的工业标准命令块 bInterfac eProtocol为所使用的传输协议 接口描述符如图3 4所示图3 4接口 Interface 描述符由于控制端 点为每个设备都使用的缺省端点 因此不需要定义 只需定义Bulk In和Bulk Out两个端点 其端点描述符如图3 5和3 6所示U盘与 主机的通信20图3 5Bulk In端点描述符图3 6Bulk Out端点描述符 3 2Bulk Only传输协议设备插入到USB后 USB即对设备进行搜索 并要求设 备提供相应的描述符 在USB Host得到上述描述符后 即完成了设备的配置 识别出为Bulk Onl y的MassStorage设备 然后即进入Bulk Only传输方式 在此方式下 USB与设备间的所有数据均通过Bulk In和Bulk Out 来进行传输 不再通过控制端点传输任何数据 在这种传输方式下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育学题库完整版包含答案
- 《分数除以整数》的教学反思
- 2025 年大学继续教育(继续教育管理)试题及答案
- 文学概论试题及答案「2025年」
- 机械行业职业健康安全试题
- 模拟服刑人员考试题及答案
- 厂房电线火灾应急预案(3篇)
- 2025年监理工程师工作总结范本(2篇)
- 浅析我国非政府组织在社会救助中的角色
- 人力资源管理的核心内容
- 2025北京政法职业学院辅导员考试试题及答案
- 课题放弃申请书
- 2025年配电运维工面试常见问题及答案解析
- 美丽河湖评定管理办法
- 2025年神经病学神经系统疾病诊断案例分析试卷答案及解析
- 红色电影影视鉴赏课件
- 第21课《人民英雄永垂不朽》课件统编版语文八年级上册
- (2025年标准)店铺代持协议书
- 2025年食品销售食品安全管理员试题(附答案)
- 肝胆外科中医饮食护理
- DB3401∕T 288-2023 园林设计规范
评论
0/150
提交评论