嵌入式系统课程设计基于嵌入式系统的U盘的开发与设计_第1页
嵌入式系统课程设计基于嵌入式系统的U盘的开发与设计_第2页
嵌入式系统课程设计基于嵌入式系统的U盘的开发与设计_第3页
嵌入式系统课程设计基于嵌入式系统的U盘的开发与设计_第4页
嵌入式系统课程设计基于嵌入式系统的U盘的开发与设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学号2014-2015学年 第二学期1208320131嵌入式系统课程设计报告题目:基于嵌入式系统的u盘的开发与设计专业:计算机与技术班级:11(1)班姓名:指导教师:成绩:计算机学院2015年5月7日目录1.设计内容及要求121.1.设计内容121.2.设计要求122.概要设计122.1.硬件电路122.2.基本程序结构143.硬件设计163.1.msp430163.2.sl811hs164.软件设计174.1.usb协议174.2.bulk_only和ufi协议184.3.fat32214.4.软件系统模块215.心得体会231. 设计内容及要求1.1. 设计内容随着usb技术和闪存技术的

2、飞速发展,移动存储设备的速度和容量日新月异,但在工业控制的上位机和下位机之间,数据传输依然采用传统的串并口技术,特别对一些前端的便携式采集系统,需要采集后临时存储,再拿回来传给作为上位机的pc机进行数据处理,给人们带来很多不变,为此,本文提出了一种方法-利用u盘的便捷特性开发一种基于嵌入式的usb读写器,方便地将采集数据以文件方式写入u盘,pc机不需要任何特殊驱动便可以完成对数据的处理回放。利用本方法可以彻底解决下位机与pc机之间的数据传输难的问题。1.2. 设计要求根据u盘结构特点,设计了一种基于嵌入式系统u盘的系统结构,可以将u盘集成到无线数据卡上,或者手机上,以实现数据存储的功能。在进行

3、usb 开发过程中,比较难的是对设备端的程序(称为固件,firmware )进行调试。由于usb 协议有严格的时间要求,这就使得程序必须在有效时间内对某些请求或状态进行处理,否则,usb 将无法正常工作。因此,在调试过程中,较多借助led1,led2显示输出的一些信息来辅助调试,定位问题所在。比如,在某个函数中加入led1,led2显示语句,程序运行时看有否相应的led1,led2显示输出,借此来判断此函数是否得到了执行。调试工作基本分二步进行:首先对外部设备(单片机部分)借助pc 调试软件(从网上下载bus hound)将设备端的usb 协议(主要有描述符请求、端口配置、地址设置以及基本数据

4、交换)调通。然后,用调试好的usb 设备接口来嵌入文件系统功能。 2. 概要设计2.1. 硬件电路下图分别为pdiusbd12的引脚定义,其中,下列几个方面在制作电路板时应该注意。 图1a)gnd 接地,vdd 接正(3.3v 或5v ),如果芯片工作在3.3v ,则vout3.3 与vdd 都接3.3v ;如果芯片工作在5v ,则这时vout3.3 会输出3.3v 的电压,用于提供给d 作参考电压,因为此参考电压必须为3.3v 。对于u 盘来说,由于usb 接供的是5v 电压,因此应该按后一种接法接。即gnd 接usb 接口中的gnd ,vdd 接usb 接口中的vdd ,d d分别接usb

5、 接口中的对应位。b)xtal1 和xtal2 按传统接法。c)pdiusbd12与mcu at-89c55wd的连接方法见下表pdiusbd12引脚mcu at-89c55wd引脚data<0> data<7>p0.0p0.7(ad0ad7)aleale/progcs_np1.6reset_np1.7int_np3.2(int0)suspendp3.3wr_np3.6(wr)rd_np3.7(rd)a0接gndd)dmarq dmack_n eot_n gl_n clkout引脚悬空,可作为扩充功能使用。e)mcu at-89c55wd p1.2和p1.3接2个低电平

6、有效显示灯led1和led2。2.2. 基本程序结构a)usb 设备端的固件分以下几个层次:固件模块功能main.c进行各种初始化操作、寄存器设置、中断设置intr.c中断服务程序,负责将不同类型的中断转向不同的地方usb_op.cd12硬件抽象层,所有的上层模块都必须通过此模块与usb芯片打交道usb_prtcl.c设备枚举需要的设备描述符,配置描述符,接口描述符,端口描述符都由此模块来执行提供endpoint2_bulk_only.c所有mass storage 协议cbw,csw,data的处理及flash的读写都由此模块来处理b)在调试的时候,从现象上来看,分成以下几个阶段性的步骤:1

7、、usb 芯片正常工作,可以实现软连接,此时pc 机上会出现“未知设备类型”的usb 设备;2、向主机提供普通usb 设备提供描述符,提供正确的vid 和pid 后,pc 能够识别设备,但要求提供设备的驱动程序;3、安装驱动程序后,使用周立功单片机公司提供的usbdebug.exe简单调试端点1和2,确保其均可传输数据,验证硬件及固件的正确性;4、按mass storage不得bulkonly 模式提供描述符,pc 机上设备类型变成mass storage device;5、响应了bulkonly 的inquiry 命令,可以出现盘符了,但尚无法访问磁盘;6、提供了其他所有的ufi命令(scs

8、i 子集),开始读取磁盘0 扇区(bpb 区)的内容按照fat12 的格式7、在at-89c55wd eeprom虚拟一张软盘,可以正确读取信息,可以访问盘符,列目录为空;8、,软盘中放一个可执行的文件,可以正常运行这个可执行文件;8、创建文件,向设备发出write 命令,等等。下面从具体实际操作方面来描述调试各阶段的步骤c)检查usb 器件工作与否确定usb 芯片是否已经正常工作,是所有调试的基础,得到电路板之后,这是一个首先要解决的问题。判断usb 芯片是否已经工作,可以使用softconnect ,则在主程序中进行软连接后,如果pc 机上出现未知设备,则说明usb 进行软连接正常,也说明

9、芯片已经工作了。另外就是使用bus hound ,观察usb 总线上的数据,从而判断主机与设备之间的通信已经进行到哪一步了。在主程序中,对usb 初始化过程为: 初始化mcu 的各种端口; 进行中断初始化,设置中断服务程序入口地址,将mcu 的中断方式设置为低电平触发,因为d12 只要进入中断后int_n 就一直为低。 断开softconnect ,延时1 秒后再次连接 进入主程序循环,等待中断的到来 由中断服务程序处理所有与usb有关的操作。d)提供描述符usb 设备的调试过程其实就是根据主机的请求,不断地向主机提供各种信息的过程。因此,了解主机按照什么样的顺序向设备发出请求,即window

10、s 对usb 设备的枚举顺序是非常有必要的:getdevicedescriptor 。主机主要对length 域感兴趣,发送内容一定要正确,特别是第 2 字节type 一定为0x01 ,即device ;否则,主机将不响应,或 这时由于主机对device 的描述符将有多长实际上都不知道,所以这个步骤只是试探性的,目的是得到真正长度,第三步中才正而巴经地读取devicedescriptor 。3. 硬件设计系统采用ti公司的msp430f149作为mcu,cypress公司的sl811hs作为usb设备控制器,充分发挥各自优势满足低功耗要求。3.1. msp430ti公司的 msp430系列单片

11、机是一种超低功耗的混合信号控制器,针对不同的应用而由各种不同的模块组成,这些微控制器可用电池工作,且使用的时间很长,msp430单片机具有16位risc结构,cpu中的16个寄存器和常数发生器使其能达到最高的代码效率,灵活的时钟源可以使器件的功率消耗最低,数字控制的振荡器(dco)可使器件从低功耗模式迅速唤醒,在短于6s的时间内激活到活跃的工作方式,非常的内/外设和i/o端口资源,端口p1和p2支持中断唤醒。3.2. sl811hscypress公司的sl811hs是一款超低功耗的usb主/从设备控制器,主设备或从设备模式由软件控制,usb主/从设备控制器支持全高速和低速数据传输,内部256字

12、节的sram缓存,访问时地址自动加1,可大大缩短读写指令周期,具有标准的8位双向微处理器总线接口,其中从设备模式下支持dma。硬件系统框图 :串口并口uartp5.0p5.7p2.0p2.7msp430f149p6.0p6.7p1.1p4.0p4.5控制总线数据总线intr读/写片选复位d0d7sl811hsu盘接口 图2 usb读写器结构图usb读写器结构框图如图1所示,主要由msp430f149和sl811hs构成,msp430支持串口输入和14位的并口输入,p2.7用作中断唤醒位,p2.6用作标准位区分数据和命令,通过p4口向sl811发送控制信号,p6用作普通的双向总线接口与sl811

13、进行数据交换,p1.1支持中断唤醒接收sl811的中断请求。4. 软件设计为了使上位pc机能够直接读取该读写器写入u盘的数据,数据存储按照fat32文件管理方式存储,其中涉及usb和ufi协议以及fat32文件存储格式。4.1. usb协议usb(通用串行总线)用于将usb接口的外围设备(device)连接到主机(host),实现二者之间数据传输的外部总线结构,是一种快速、灵活的总线接口,usb的传输类型有控制(control)、批量(bulk)、中断(interrupt)和同步(synchronous)传输4种,它最大的特点是易于使用,即插即用,主要是用在中速和低速的外设。控制数据用于在us

14、b接入总线时对其进行配置,其他的驱动软件可以根据具体的应用来选择使用控制传输,这种数据传输不会丢失数据。典型的批量数据包括象使用打印机或扫描仪时所出现的大数据量的数据,这种批量数据是连续的,通过在硬件中实现差错检测功能,并且有选择地进行一定的应进重试操作,可以在硬件层次上保证数据的可靠交换。由设备自发产生的数据传输是中断数据传输,这类数据传输可以由usb设备在任意时刻发起,而且usb总线以不低于设备说明的速率进行传输。同步数据在产生、传送和处理过程中是连续的和实时的,在稳定的同步数据发送和接收速率中包含了相应的时钟信息,为了保持定时关系,同步数据必须按照接收的速率进行传输。4.2. bulk_

15、only和ufi协议usb设备分为5大类,即显示器、通信设备、音频设备、人机输入和海量存储。通常所用的u盘、移动硬盘均属于海量存储类。海量存储类的规范中包括4个独立的子规范,即cbi传输、bulk-only传输、ata命令块、ufi命令规范。前两个协议定义了数据/命令/状态在usb总线上的传输方法,bulk-only传输协议仅仅使用bulk端点传送数据/命令/状态,cbi传输协议则使用control/bulk/interrupt三种类型的端点进行数据/命令/状态的传送。后两个协议定义了存储介质的操作命令,ata协议用于硬盘,ufi协议则针对usb移动存储,u盘读写器的设计遵循bulk-only

16、传输协议和ufi命令规范。ufi命令块规范是针对usb移动存储而制定的,它总共定义了19个12字节长度的操作命令。bulk-only事务以主机向设备发送cbw(command block warp)包,并以建立相应的数据传输开始的,设备接收到cbw包,检查并解释它,试图满足主机的要求,并通过csw(command state wrap)包向主机返回状态信息。cbw是主机通过bulk-out端点向设备发送的命令块包,在cbw中使用方向位和数据传输长度域指明期待的传输,cbw必须起始于包边界,并且必须以31字节的短包传输结束,相继的数据包和csw包必须开始于一个新的包边界,所有的cbw包必须按低字

17、节在前的次序传输。cbw包结构如图2所示,各域含义如下:字节位7654321003命令块包标识47命令块标记811数据传输长度12命令块标旗13预留逻辑单元号14预留cbwcb长度1530cbwcb图2 cbw包结构1)命令块包标识。cbw包标记,表明这是一个cbw包,这个域的值为43425355h。2)命令块标记。当设备返回相应的csw包时,必须使命令状态标记域的值与此值相同。3)数据传输长度。指明命令执行期间在bulk端点上传数据的字节长度,如果这个域的值是0,则在cbw和csw之间设备和主机不传输任何数据,并且设备将忽略在命令块标旗域中的方向位的值。4)命令块标旗。方向位规定了bulk端

18、点数据传输的方向,其他位预留。5)逻辑单元号。指定命令块被发送到的逻辑单元号,如果设备不支持多个逻辑单元号,则主机将这个域设置为0。6)cbwcb长度,定义了cbwcb的有效长度,合法值为1-16。7)cbwcb。由设备执行的命令,由设备解释。csw向主机表明来自于cbw包的命令块的执行状态。设备收到cbw包解析处理后将通过bulk-in端点发送一个csw包。csw开始于包边界,并以13字节的短包结束,结构如图3所示,各域含义如下:字节位7654321003命令状态包标识47命令状态标记811数据残余12命令执行状态 图3 命令状态包结构1)命令状态包标识。csw包的标记,表明这是一个csw包

19、,这个域的值为53425355h。2)命令状态标记。次域的值域cbw包的命令块标记相同。3)数据残余。实际数据传输量与cbw包中规定的数据传输长度的差值。4)命令执行状态,表明命令成功或失败信息,如果命令执行成功,则设备将设置此域的值为0,非0值;则表明失败或错误。ufi是针对usb移动存储而制定的命令块协议,它规定了主机和设备进行信息交换所使用的命令块、数据和状态信息,bulk-only传输协议定义了传输这些信息的方法,其中ufi命令块是封装在cbw包中的cbwcb,设备通过读取cbwcb确定具体要执行何种操作命令(如读命令),如何完成这个命令(如从闪存的哪个地址读,需要读取的长度),设备将

20、命令的执行状态封装成csw返回给主机。ufi用于大多数命令的12字节命令块的描述,结构如图4所示,其中各参数意义如下:1)操作命令代码。指明所需要执行的操作命令;2)逻辑单元号。指明命令将发送到哪个逻辑单元,如果设备只有一个逻辑单元,则此域的值为0。3)逻辑块地址。命令操作的起始地址。4)传输长度,指明请求传输的数据量,通常以"扇区"作单位,但是有几个命令是以"字节"作单位的,对于这些命令,传输长度域可以以不同的名字标识,若此域的值为0,则表面没有数据需要传输。5)参数列表长度,用于指定发送到设备的字节数,这个域典型的应用于发送到设备的参数命令块(如模式

21、参数、诊断参数等),若此域的值为0,则表面没有数据需要传输。6)分配长度,指明主机已经分配的用于返回数据的最大字节长度,若此值为0,则表明没有数据需要传输。字节位字节765432100操作命令代码1逻辑单元号预留25逻辑块地址6预留78传输长度或参数列表长度或分配长度911预留图4 ufi结构4.3. fat32fat是microsoft较早推出的文件系统,具有高度的兼容性,目前仍然广泛应用于个人电脑尤其是移动存储设备中,fat由引导扇区、fat1表、fat2表、目录和文件区组成(其中fat2表是fat1表的备份)。磁盘的管理是以扇区为单位的,而移动存储设备则是以块为单位的,fat将块映射成扇

22、区,原理相同,fat将磁盘空间以一定数目的扇区为单位进行划分,这样的单位成为"簇"。通常情况下,每扇区512字节的原则是不变的,簇的大小一般是2n(n为整数)个扇区的大小。所以以簇为单位而不以扇区为单位进行磁盘的分配,是因为当区分容量较大时,采用512字节的扇区管理,会增加fat表的项数和大文件存取的消耗,使文件系统效率不高。引导扇区dbr(dos boot record)通常占用分区的第0扇区,共512字节,fat表紧随其后。dbr的第一部分是一个x86跳转指令、厂商标志和操作系统版本号,接下来的从偏移0x0b开始的是一段描述能够使可执行引导代码找到相关参数的消息,通常称

23、之为bpb。最后是引导程序代码以及扇区结束标志。bpb中记录了扇区大小、簇的扇区数、保留扇区数、fat表大小和文件系统类型等重要参数,用于文件的索引和定位计算。4.4. 软件系统模块usb读写器软件由主模块、usb模块、bulk模块、fat模块和中断处理模块组成。各模块之间相互协调调用,共同完成对u盘文件的读写创建。usb模块负责检测usb设备的移入/移出,对插入的设备进行枚举,分配设备地址端点号,配置设备接口端点描述符,建立bulk_only输入/输出通道,bulk模块则在已建立的bulk_only输入/输出通道发送cbw数据包,并接收csw数据包,通过cbw中嵌入的cbwcb信息确定对u盘读/写操作的扇区位置和大小,fat模块主要完成簇和扇区间的索引定位,即在u盘内寻址,利用bpb中的参数计算给定扇区的所在簇以及进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论