
《嵌入式系统》课程设计基于嵌入式系统的U盘的开发与设计.doc
14页计算机学院《嵌入式系统》课程设计报告学号2014-2015学年 第二学期1208320131《嵌入式系统》课程设计报告题目:基于嵌入式系统的U盘的开发与设计专业:计算机与技术班级:11(1)班姓名:指导教师:成绩:计算机学院2015年5月7日目录1. 设计内容及要求 121.1. 设计内容 121.2. 设计要求 122. 概要设计 122.1. 硬件电路 122.2. 基本程序结构 143. 硬件设计 163.1. MSP430 163.2. SL811HS 164. 软件设计 174.1. USB协议 174.2. BULK_ONLY和UFI协议 184.3. FAT32 214.4. 软件系统模块 215. 心得体会 231. 设计内容及要求1.1. 设计内容随着USB技术和闪存技术的飞速发展,移动存储设备的速度和容量日新月异,但在工业控制的上位机和下位机之间,数据传输依然采用传统的串并口技术,特别对一些前端的便携式采集系统,需要采集后临时存储,再拿回来传给作为上位机的PC机进行数据处理,给人们带来很多不变,为此,本文提出了一种方法--利用U盘的便捷特性开发一种基于嵌入式的USB读写器,方便地将采集数据以文件方式写入U盘,PC机不需要任何特殊驱动便可以完成对数据的处理回放。
利用本方法可以彻底解决下位机与PC机之间的数据传输难的问题1.2. 设计要求根据U盘结构特点,设计了一种基于嵌入式系统U盘的系统结构,可以将U盘集成到无线数据卡上,或者上,以实现数据存储的功能在进行USB 开发过程中,比较难的是对设备端的程序(称为固件,Firmware )进行调试由于USB 协议有严格的时间要求,这就使得程序必须在有效时间内对某些请求或状态进行处理,否则,USB 将无法正常工作因此,在调试过程中,较多借助LED1,LED2显示输出的一些信息来辅助调试,定位问题所在比如,在某个函数中加入LED1,LED2显示语句,程序运行时看有否相应的LED1,LED2显示输出,借此来判断此函数是否得到了执行调试工作基本分二步进行:首先对外部设备(单片机部分)借助PC 调试软件(从网上下载Bus Hound)将设备端的USB 协议(主要有描述符请求、端口配置、地址设置以及基本数据交换)调通然后,用调试好的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 接口中的对应位b)XTAL1 和XTAL2 按传统接法c)PDIUSBD12与MCU AT-89C55WD的连接方法见下表PDIUSBD12引脚MCU AT-89C55WD引脚DATA<0>~ DATA<7>P0.0~P0.7(AD0~AD7)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个低电平有效显示灯LED1和LED22.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、USB 芯片正常工作,可以实现软连接,此时PC 机上会出现“未知设备类型”的USB 设备;2、向主机提供普通USB 设备提供描述符,提供正确的VID 和PID 后,PC 能够识别设备,但要求提供设备的驱动程序;3、安装驱动程序后,使用周立功单片机公司提供的UsbDebug.exe简单调试端点1和2,确保其均可传输数据,验证硬件及固件的正确性;4、按Mass Storage不得Bulk-Only 模式提供描述符,PC 机上设备类型变成Mass Storage Device;5、响应了Bulk-Only 的Inquiry 命令,可以出现盘符了,但尚无法访问磁盘;6、提供了其他所有的UFI命令(SCSI 子集),开始读取磁盘0 扇区(BPB 区)的内容按照FAT12 的格式7、在AT-89C55WD EEPROM虚拟一张软盘,可以正确读取信息,可以访问盘符,列目录为空;8、,软盘中放一个可执行的文件,可以正常运行这个可执行文件;8、创建文件,向设备发出Write 命令,等等。
下面从具体实际操作方面来描述调试各阶段的步骤c)检查USB 器件工作与否确定USB 芯片是否已经正常工作,是所有调试的基础,得到电路板之后,这是一个首先要解决的问题判断USB 芯片是否已经工作,可以使用SoftConnect ,则在主程序中进行软连接后,如果PC 机上出现未知设备,则说明USB 进行软连接正常,也说明芯片已经工作了另外就是使用Bus Hound ,观察USB 总线上的数据,从而判断主机与设备之间的通信已经进行到哪一步了在主程序中,对USB 初始化过程为:① 初始化MCU 的各种端口;② 进行中断初始化,设置中断服务程序入口地址,将MCU 的中断方式设置为低电平触发,因为D12 只要进入中断后INT_N 就一直为低③ 断开SoftConnect ,延时1 秒后再次连接④ 进入主程序循环,等待中断的到来⑤ 由中断服务程序处理所有与USB有关的操作d)提供描述符USB 设备的调试过程其实就是根据主机的请求,不断地向主机提供各种信息的过程因此,了解主机按照什么样的顺序向设备发出请求,即Windows 对USB 设备的枚举顺序是非常有必要的:GetDeviceDescriptor 。
主机主要对Length 域感兴趣,发送内容一定要正确,特别是第 2 字节type 一定为0x01 ,即Device ;否则,主机将不响应,或 这时由于主机对Device 的描述符将有多长实际上都不知道,所以这个步骤只是试探性的,目的是得到真正长度,第三步中才正而巴经地读取DeviceDescriptor 3. 硬件设计系统采用TI公司的MSP430F149作为MCU,Cypress公司的SL811HS作为USB设备控制器,充分发挥各自优势满足低功耗要求3.1. MSP430TI公司的 MSP430系列单片机是一种超低功耗的混合信号控制器,针对不同的应用而由各种不同的模块组成,这些微控制器可用电池工作,且使用的时间很长,MSP430单片机具有16位RISC结构,CPU中的16个寄存器和常数发生器使其能达到最高的代码效率,灵活的时钟源可以使器件的功率消耗最低,数字控制的振荡器(DCO)可使器件从低功耗模式迅速唤醒,在短于6μs的时间内激活到活跃的工作方式,非常的内/外设和I/O端口资源,端口P1和P2支持中断唤醒3.2. SL811HSCypress公司的SL811HS是一款超低功耗的USB主/从设备控制器,主设备或从设备模式由软件控制,USB主/从设备控制器支持全高速和低速数据传输,内部256字节的SRAM缓存,访问时地址自动加1,可大大缩短读写指令周期,具有标准的8位双向微处理器总线接口,其中从设备模式下支持DMA。
硬件系统框图 :串口并口UARTP5.0~P5.7P2.0~P2.7MSP430F149P6.0~P6.7P1.1P4.0~P4.5控制总线数据总线INTR读/写片选复位D0~D7SL811HSU盘接口 图2 USB读写器结构图USB读写器结构框图如图1所示,主要由MSP430F149和SL811HS构成,MSP430支持串口输入和14位的并口输入,P2.7用作中断唤醒位,P2.6用作标准位区分数据和命令,通过P4口向SL811发送控制信号,P6用作普通的双向总线接口与SL811进行数据交换,P1.1支持中断唤醒接收SL811的中断请求4. 软件设计为了使上位PC机能够直接读取该读写器写入U盘的数据,数据存储按照FAT32文件管理方式存储,其中涉及USB和UFI协议以及FAT32文件存储格式4.1. USB协议USB(通用串行总线)用于将USB接口的外围设备(device)连接到主机(host),实现二者之间数据传输的外部总线结构,是一种快速、灵活的总线接口,USB的传输类型有控制(control)、批量(bulk)、中断(interrupt)和同步(synchronous)传输4种,它最大的特点是易于使用,即插即用,主要是用在中速和低速的外设。
控制数据用于在USB接入总线时对其进行配置,其他的驱动软件可以根据具体的应用来选择使用控制传输,这种数据传输不会丢失数据典型的批量数据包括象使用打印机或扫描仪时所出现的大数据量的数据,这种批量数据是连续的,通过在硬件中实现差错检测功能,并且有选择地进行一定的应进重试操作,可以在硬件层次上保证数据的可靠交换由设备自发产生的数据传输是中断数据传输,这类数据传输可以由USB设备在任意时刻发起,而且USB总线以不低于设备说明的速率进行传输同步数据在产生、传送和处理过程中是连续的和实时的,在稳定的同步数据发送和接收速率中包含了相应的时钟信息,为了保持定时关系,同步数据必须按照接收的速率进行传输4.2. BULK_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传输协议和UFI命令规范UFI命令块规范是针对USB移动存储而制定的,它总共定义了19个12字节长度的操作命令Bulk-Onl。
