基于EZ-USB FX2的USB 2.0系统软件开发

发布者:SereneNature7最新更新时间:2013-11-08 来源: dzsc关键字:EZ-USB  FX2  USB2.0系统  软件开发 手机看文章 扫描二维码
随时随地手机看文章

通用串行总线(Universal SeriaI Bus,简称USB)以其易插拔、无需配置、真正的即插即用等特性获得了广泛的市场认可。USB 1.O标准于1996年1月提出,传输速度为1.5 Mb/s的低速模式;1998年9月提出的USB 1.1标准则将速度提高到12 Mb/s的全速模式,并且增加了中断传输的传输方式。USB 2.0标准于2000年4月提出,将传输速度提高了40倍,达到了480 Mb/s的高速模式,足以满足大多数外设的速率要求

1 USB2.0接口芯片EZ-USB FX2的系统架构及开发 要点

CYPRESS的EZ-USB FX2是业界推出的第一个USB 2.0集成外围控制器。该器件集成有1个8051处理器、1个串行接口引擎(SIE)、1个USB收发器、8.5 kB片上RAM,4 kB FIFO存储器以及1个通用可编程接口(GPIF、)。FX2是一个相当完整的解决方案。

集成的USB收发器连接到USB总线管脚D+和D一,串行接口引擎sIE实现串行数据的编解码、检错、位填充和其他USB所需信号层的任务。最终sIE实现从USB接口 收发并行数据。

FX2中集成了增强型的8051处理器,他可工作在12MFIz,24 MHz和48 MHz的频率,并且一个指令周期只需4个时钟周期。单片机只是进行USB传输的维护及控制并不进行直接的数据传输。

为了实现USB 2.0的高速带宽,把FX2的端点FIF(和从属FIFO(实现和外部逻辑器件或处理器接口的FIFO)集成在一起以减少内部数据传输时间。并且FX2的FIFO有独特的"量子"特性,数据以I-JSB分组大小为单位被提交到FIF0,而不是每次一个字节。这简化了错误恢复,如果用经典的FIFO,当产生坏的(CR((循环校验码)时,所有的数据必然泛滥流出,因为他是坏数据;如果CRC是好的,则分组信息能从USB域交换到I/O(输入/输出)域。对外来说,他看起来仍然像FIF0,但代之以每次只传送1个字或1个字节为立即传送整个分组信息。端点缓冲器可通过固件设置为双、三或四缓冲器,与所需的数据量或灵活性有关。Fx2的FIFO量子特性及可编程设置多缓J冲为满足USB 2.0所需带宽提供了保障。

FX2片上只有RAM而无ROM,可以直接通过USB下载程序,实现所谓"软配置"。"软配置"提高了软件的调试及升级速度。

FX2与外部逻辑的2种接口方式:Slave FIFlos方式和通用可编程接口GPIF、方式。Slave FIFOs方式是从机方式,外部控制器可像普通FIF0一样对FX2的多层缓冲FIF、O进行读写。FX2的Slave FIFOs工作方式可设为同步或异步;工作时钟可选为内部产生或外部输入;其他控制信号也可灵活地设置为高有效或低有效。可编程接口(GPIF)方式是主机方式,可以软件编程读写控制波形,他几乎可以对任何8/16 b接口的控制器、存储器和总线进行数据的主动读写,非常灵活。

2系统软件的开发

USB系统软件主要包括设备固件、USB设备驱动程序和应用程序3个部分。

2.1固件架构

对于USB总线控制芯片,如果没有芯片与主机及外部逻辑通信的代码,芯片则无法完成响应功能。为了便于开发者缩短开发周期,CYPRESS为开发者提供了固件程序框架来实现循环查询的程序和与主机通信的端点中断程序。用户只需在这些框架里加入自己的代码就可以实现特定的功能。固件程序框架可以实现芯片初始化、处理USB标准设备请求、电源挂起管理等。为用户提供3类钩子函数:任务调度,标准设备请求解析,uSB中断处理。

EZ-USB FX2固件程序框架首先初识化所有内部状态量,然后调用用户初始化函数TD-Init(),然后初始化UsB总线设备接口为非配置状态,并同时打开中断。当完成上面的任务后,EZ-USB FX2固件程序就开始重新枚举,直到在端点0收到SETUP包为止。一旦EZ-USB FX2收到SETUP包,固件程序框架就开始进行任务分配、任务分配就是依次重复地执行以下过程:

(1)调用用户函数TD-Poll()。

(2)检测是否有未处理的设备请求,如果有,解析接收到的命令,进行适当响应。默认情况下,他会对给定的标准设备请求实现USB定义的响应;但是,框架提供分支程序允许用户程序解析处理或者覆盖特定的设备请求。

(3)检测USB核是否报告了一个USB挂起事件,如果有,调用用户函数TD~Susupend()。当返回值为真,检测是否有恢复事件,如果没有,则挂起处理器。当检测到恢复事件,调用用户函数TD-Resume(),并继续执行步骤(3)。当TD-Sustlpend()返回值为假时,则继续执行步骤(3)。通过以上流程,固件程序实现了简单的合作任务执行框架。

2.2驱动程序

在Windows平台下,USB驱动程序由3部分组成:USB设备驱动程序,USB总线驱动程序和USB主控制器驱动程序,他们必须遵循win32驱动程序模型(wDM)。其中,windows操作系统已经提供了处于驱动程序栈底的USB总线驱动程序和USB主控制器驱动程序。而USB设备驱动程序由设备开发者编写,他通过向USB总线驱动程序发送包含URB(USB Request Block)的IRP(I/0Request Packet),来实现USB外设之间的信息交换。当主机应用程序要对USB设备进行I/0操作时,他调用Windows API函数对win32子系统进行win32调用,由I/O管理器将此请求构造成一个合适的IRP,并把他传递给USB设备驱动程序。USB设备驱动程序接受到这个IRP后,根据IRP中的包含的具体操作代码,构造响应的URB并把他放到一个新IRP中,然后把此IRP传递到USB总线驱动程序,USB总线驱动程序根据IRP中所包含的URB执行响应的操作,并把操作结果通过IRP返还给USB设备驱动程序。USB设备驱动程序接受到此IRP后,将操作结果通过IRP返还I/O管理器。最后,I/O管理器将此IRP中的操作结果返还给应用程序,至此应用程序对uSB设备的一次I/O操作完成。

在CYPRESS公司的EZ-USB FX2开发包中,有一个通用的驱动程序。EZ-USB GENERAL PURP()SEDEVICE DRIVER(GPD),GPD提供了USB标准设备请求和数据传输的用户模式接口,可以直接用来开发上层应用程序,加快开发进度。

2.3上层应用程序
应用程序工作于用户模式,用户模式可以访问文件,处理数据,人机交互,不过必须借助设备驱动程序来访问硬件。对于EZ-USB FX2而言,所有用户模式通过I/0 control调用来访问EZ-USB GPD。每一个连接到主机的EZ-USB设备,驱动产生一个形式为ezusb-i的符号连接名。符号连接名用于调用CreateFile时得到设备驱动的句柄,实际上CreateFile()得到设备驱动创建的设备对象的句柄。
应用程序通过CreateFile()得到USB设备句柄,用Device Control()来进行控制传输。在VC环境下开发的主机端的应用程序,实现了设备的打开、关闭、固件下载、端口配置和文件传输等功能。界面如图3所示。

3结语

USB2.0为PC和外部硬件设备之间提供了一种快速-和方便的数据交换方式,本文提供了基于EZ USB FX2的一个很好的解决方案,实现了从底层固件到上层应用程序数据传输的整个软件系统。

参考文献:

[1]. ROM datasheet http://www.dzsc.com/datasheet/ROM_1188413.html.
[2]. EZ-USB datasheet http://www.dzsc.com/datasheet/EZ-USB_305660.html.

关键字:EZ-USB  FX2  USB2.0系统  软件开发 引用地址:基于EZ-USB FX2的USB 2.0系统软件开发

上一篇:USB及其设备开发
下一篇:嵌人式操作系统中USB双向通信的设计与实现

推荐阅读最新更新时间:2024-05-02 22:50

Atmel BitCloud ZigBee PRO软件开发工具包获得黄金单元资质
Atmel BitCloud ZigBee PRO 软件开发工具包可兼容Atmel | SMART SAM R21 和ATmega256RFR2 AVR解决方案,获得 黄金单元 资质将为客户提供增强的互操作性,并为即将实施的ZigBee 3.0标准技术规范奠定基础 全球微控制器(MCU)和触摸技术解决方案领域的领导者Atmel 公司 (NASDAQ: ATML)今日宣布,公司的BitCloud ZigBee PRO软件开发工具包(SDK)荣获ZigBee PRO r21标准的著名 黄金单元 资质。作为 黄金单元 ,Atmel BitCloud解决方案将被用于ZigBee实验室以验证将来所有ZigBee 3.0产品的合
[手机便携]
ARM嵌入式系统软件开发方法
  ARM嵌入式系统在硬件选型和PCB硬件平台设计完成之后,就可以根据硬件和应用的需求,开始软件系统的功能和结构设计了。一般而言,嵌入式系统的软件可以采用两种,一种是缺少操作系统的嵌入式控制系统软件,另一种是在具备嵌入式操作系统情况下的嵌入式软件。   例如,有些系统的ARM芯片上运行Linux等操作系统;而另外一些ARM芯片上使用的却是不带操作系统的软件,如使用ADS开发的ARM Evaluator,其程序的运行通过板载程序配合下载程序实现。不过嵌入式操作系统在嵌入式系统中的作用日显重要,它可以为嵌入式系统开发人员提供一个基本的软件开发和运行的支撑平台,从而大大减小复杂嵌入式系统的开发难度和开发周期,增强系统的稳定性,降低开发和
[单片机]
ARM嵌入式<font color='red'>系统</font>的<font color='red'>软件开发</font>方法
基于CMSIS标准的 Cortex-M3应用软件开发
   引 言   ARM公司于2008年11月12日发布了ARM Cortex微控制器软件接口标准(CMSIS:Cortex Microcon-troller Software InteRFace Standard)。CMSIS是独立于供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了连续的、简单的处理器软件接口,简化了软件复用,降低了Cortex-M3上操作系统的移植难度,并缩短了新入门的微控制器开发者的学习时间和新产品的上市时间。   根据近期的调查研究,软件开发已经被嵌入式行业公认为最主要的开发成本。图1为近年来软件开发与硬件开发成本对比图。因此,ARM与Atmel、IAR、Keil、hami-
[单片机]
基于CMSIS标准的 Cortex-M3应用软件开发
引 言 ARM公司于2008年11月12日发布了ARM Cortex微控制器软件接口标准(CMSIS:Cortex Microcon-troller Software Interface Standard)。CMSIS是独立于供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了连续的、简单的处理器软件接口,简化了软件复用,降低了Cortex-M3上操作系统的移植难度,并缩短了新入门的微控制器开发者的学习时间和新产品的上市时间。 根据近期的调查研究,软件开发已经被嵌入式行业公认为最主要的开发成本。图1为近年来软件开发与硬件开发成本对比图。因此,ARM与Atmel、IAR、Keil、hami-nary M
[工业控制]
基于CMSIS标准的 Cortex-M3应用<font color='red'>软件开发</font>
Wind River发布针对Intel架构优化嵌入式软件开发工具
  全球嵌入式及移动行动应用软件领导厂商风河(Wind River)今日发布针对Intel®硬件架构优化的新版片上调试工具Wind River Workbench On-Chip Debugging。这套JTAG产品所提供的调试解决方案可协助多个产业广泛应用的嵌入式设备,以更高的效率、更经济的成本进行以Intel处理器架构为基础的嵌入式平台开发。   新版Wind River Workbench On-Chip Debugging工具的功能特色:       已特别针对Intel处理器进行优化,包括Intel® Atom™、Core™、Xeon®等专门用于嵌入式系统开发的多款处理器均可支持。       借助Intel硬件
[嵌入式]
霍尼韦尔扫描与移动技术部推出独立软件开发商项目
多重惠益旨在联合推广整体解决方案 今日,霍尼韦尔扫描与移动技术部正式宣布推出“独立软件开发商项目”(ISV Program),旨在推动霍尼韦尔扫描与移动技术硬件产品与独立软件开发商相匹配的软件产品的发展,联合向行业客户推广整体解决方案。此项目将加强霍尼韦尔对独立软件开发商的支持力度,建立和 ISV 之间高规格的合作关系,同时有利于促进 ISV 软件产品和霍尼韦尔硬件产品在终端用户和渠道中的销售。 对于符合条件且加入此项目的独立软件开发商,霍尼韦尔将会为之提供资金支持、商业推广及技术服务三大方面的诸多惠益和支持,如获得霍尼韦尔提供的免费样机、支持 ISV 软件产品在霍尼韦尔硬件设备上的正常运行与认证、获得霍尼韦尔商业项目推荐并参
[工业控制]
基于EZ-USB单片机的正弦信号发生器
  一引言   近年来,随着通信系统的发展,人们对信号源的要求越来越高,直接数字频率合成器(Direct Digital Frequency Synthesis简称DDS或DDFS)正是在这样的背景下进一步得到了发展。它具有相对带宽、频率分辨率高、频率转换时间短、控制灵活和全数字化的优点,并且成本低,功耗小。它的优越性能使其在跳频通信、雷达系统、电子测量等领域得到了广泛的应用。采用DDS芯片AD9851和EZ-USB单片机CY7C68013实现的正弦信号发生器,通过上位机控制AD9851可以调节输出信号,使输出信号具有高精度、高频率、高稳定度的特点。 二信号发生器系统硬   件构成   1.单片机系统.   本文采用CYP
[单片机]
基于<font color='red'>EZ-USB</font>单片机的正弦信号发生器
汽车电控底层及应用层软件开发介绍
一、底层软件开发介绍 1 底层软件主要内容 底层软件开发内容有:一方面是设备驱动的实现,基于主芯片有:底层驱动PORTS,ADC,PWM,SPI,CAN,SENT等,基于外围芯片的复杂驱动。 另一方面基础功能的开发,bootloader开发,操作系统RTOS,存储管理,故障诊断,通讯和网络安全等功能。 2 底层软件开发基础 对于上述的底层软件开发内容,若要深入的话,一是要能看懂芯片手册,熟悉所使用芯片提供的资源 ,包括多核定义,内存分配情况(包括RAM和ROM/FLASH/EEPROM),ADC模块,GTM模块和通讯模块等等;二是要掌握常用的标准与协议,包括OSEK标准(操作系统相关),14229协议和15765协议(诊断
[嵌入式]
汽车电控底层及应用层<font color='red'>软件开发</font>介绍
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved