为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

AVR单片机的USB在线下载器设计及完成[整理版]

2017-09-30 44页 doc 254KB 31阅读

用户头像

is_977556

暂无简介

举报
AVR单片机的USB在线下载器设计及完成[整理版]AVR单片机的USB在线下载器设计及完成[整理版] 目录 摘要.......................... 错误~未指定书签。 第一章,,,,,绪论 ....................................................... 错误~未指定书签。 1.1,,,,,本论文的研究目的和意义 .......... 错误~未指定书签。 1.2,,,,,USB简介 ......................... 错误~未指定书签。 1.3,,,,,单片机技术及AVR单片机性能简介 ....
AVR单片机的USB在线下载器设计及完成[整理版]
AVR单片机的USB在线下载器设计及完成[整理版] 目录 摘要.......................... 错误~未指定书签。 第一章,,,,,绪论 ....................................................... 错误~未指定书签。 1.1,,,,,本论文的研究目的和意义 .......... 错误~未指定书签。 1.2,,,,,USB简介 ......................... 错误~未指定书签。 1.3,,,,,单片机技术及AVR单片机性能简介 .. 错误~未指定书签。 第二章,,,,,设计构思.............................................. 错误~未指定书签。 2.1,,,,,技术背景 ........................ 错误~未指定书签。 2.2,,,,,选择 ........................ 错误~未指定书签。 2.3,,,,,本章小结 ........................ 错误~未指定书签。 第三章,,,,,系统硬件设计 .................................... 错误~未指定书签。 3.1,,,,,MCU的选择 ....................... 错误~未指定书签。 3.2,,,,,硬件电路设计 .................... 错误~未指定书签。 3.3,,,,,本章小结 ........................ 错误~未指定书签。 第四章,,,,,系统软件设计 .................... 错误~未指定书签。 4.1系统固件程序设计 ..................... 错误~未指定书签。 4.2,,,,,系统驱动程序设计 ................ 错误~未指定书签。 4.3,,,,,ISP下载控制软件 ................. 错误~未指定书签。 4.4,,,,,本章小结 ........................ 错误~未指定书签。 第五章,,,,,应用测试.............................................. 错误~未指定书签。 5.1,,,,,USB下载器驱动安装 ............... 错误~未指定书签。 5.2,,,,,上位机应用程序测试 .............. 错误~未指定书签。 5.3,,,,,测试及结果分析 .................. 错误~未指定书签。 第六章,,,,,全文总结与展望................................ 错误~未指定书签。 6.1,,,,,全文总结 ........................ 错误~未指定书签。 6.2,,,,,展望 ............................ 错误~未指定书签。 致谢 ............................... 错误~未指定书签。 参考文献............................ 错误~未指定书签。 附录 ............................... 错误~未指定书签。 AVR单片机的USB在线下载器设计及实现 学生:朱蕾 指导老师:丁晓波 ,三峡大学,,,,,电气信息学院, 摘要:本文设计实现了一个基于USB技术的下载器,该下载器可以通过USB下载线将AVR 单片机的HEX程序通过SPI线路下载到目标单片机中。在设计上采用ATmega8单片机做控 制器,它与计算机的通信采用USB通信技术,对目标芯片编程采用ISP技术,从而可以方 便地在所有具有USB接口的计算机上进行AVR单片机系统及其他支持在线编程单片机系统 的开发。经测试该下载器能够对单片机在线编程,在速度,可靠性等方面较并口下载器有较 大的提高。 关键词:USB技术;同步串行通信SPI;ISP在线编程;WDM驱动; Abstract: In,,,,,this,,,,,paper,,,,,,a,,,,,design,,,,,technology,,,,,based,,,,,on,,,,,the,,,,,USB,,,,,device,,,,,to,,,,,download,,,,,,the,,,,,download,,,,,can,,,,,be,,,,,downloaded,,,,,through,,,,,the,,,,,USB,,,,,line,,,,,to,,,,,AVR,,,,,microcontroller,,,,,through,,,,,the,,,,,SPI,,,,,lines,,,,,HEX,,,,,program,,,,,downloaded,,,,,to,,,,,the,,,,,target,,,,,MCU.,,,,,ATmega8,,,,,used,,,,,in,,,,,the,,,,,design,,,,,of,,,,,single-chip,,,,,controller,,,,,to,,,,,do,,,,,it,,,,,with,,,,,the,,,,,computer,,,,,using,,,,,the,,,,,USB,,,,,communication,,,,,technology,,,,,communications,,,,,,on,,,,,the,,,,,target,,,,,chip,,,,,using,,,,,ISP,,,,,programming,,,,,technology,,,,,,which,,,,,can,,,,,easily,,,,,have,,,,,a,,,,,USB,,,,,interface,,,,,in,,,,,all,,,,,the,,,,,computers,,,,,and,,,,,the,,,,,AVR,,,,,MCU,,,,,Systems,,,,,other,,,,,single-chip,,,,,support,,,,,for,,,,,online,,,,,programming,,,,,system.,,,,,Tested,,,,,the,,,,,download,,,,,of,,,,,the,,,,,single-chip,,,,,device,,,,,to,,,,,online,,,,,programming,,,,,,in,,,,,terms,,,,,of,,,,,speed,,,,,,reliability,,,,,and,,,,,so,,,,,on,,,,,than,,,,,the,,,,,parallel,,,,,port,,,,,to,,,,,download,,,,,device,,,,,has,,,,,greatly,,,,,improved. ,,,,,,,,,, Keywords: USB,,,,,technology;,,,,,synchronous,,,,,serial,,,,,communication,,,,,SPI;,,,, ,ISP,,,,,online,,,,,programming;,,,,,WDM,,,,,driver; 第一章,,,,,绪论 1.1,,,,,本论文的研究目的和意义 通常进行单片机实验和开发,,,,,,编程器是必不可少的。仿真、调试完的程序要借助编程器写入单片机的存储器中,,,,,,随着单片机技术的发展出现了MTP,,,,,(可多次编程),,,,,存储器技术和ISP,,,,,(在系统可编程),,,,,技术,,,,,,这样就可以省去昂贵的仿真器,,,,,,只要通过计算机接口和一条串行下载线就可直接在目标芯片上编程。 目前,,,,,,比较成熟的ISP,,,,,下载器大多是基于串口或者并口通信的,,,,,,但存在以下问: (1)用户PC,,,,,机的主频、硬件和操作系统不同,,,,,,可能会造成控制信号错误; (2)不同的厂商提供不同的ISP,,,,,下载器,,,,,,互不兼容,,,,,,给嵌入式开发带来不便; (3)限于串、并口的通信协议,,,,,,ISP,,,,,数据传输速率较低,,,,,,影响嵌入式产品的开发。 基于以上原因,,,,,,本课题要求完成一个基于计算机USB端口的AVR程序下载器,利用该下载器可以通过计算机的USB端口实现对SPI信号的模拟,并完成对AVR程序的下载。从而可以方便地在所有具有USB接口的计算机上进行AVR单片机开发。 1.2,,,,,USB简介 USB,全称为Universal,,,,,Serial,,,,,Bus(通用串行总线),它是由Compaq、IBM、Intel、NEC、Microsoft等一些PC大厂商联合开发的一种新型的、基于令牌的、高速的串行接口。 USB把各种不同的接口统一起来,仅用一个4针插头作为标准插头,通过这个标准插头,采用菊花链形式可以把所有的外设连接起来,并且不会损失带宽。传输速度是USB发展的主要指标之一,USB协议已从最初的速度只有1.5Mbps(慢速)和12Mbps(全速)的1.1版本,发展到速度高达480Mbps的2.0版本。如今专门用于USB外设间“可移动互连” 的2.0补充规范USBOTG(On-The-Go)已经发布,使得USB总线可以进行点对点的数据传输,而不一定要求主机的参与。 USB接口已被各种流行的操作系统所支持,并应用于各种数据终端设备中。它之所以能够在当今的外围设备标准接口中占有重要的地位,是由于它具有以下的性能特点: ?终端用户的易用性:为连接电缆和连接头提供了单一的模型;支持即插即用和热拔插;自我检测外设,自动地进行设备驱动设置;可动态连接,动态重置外设。 ?应用广泛性:适应不同的设备,提供低速传输(1.5Mbps)、全速传输(12Mbps)和高速传输(480Mbps);可连接至多127个物理设备,并支持对多个设备的同时操作;在主机和设备之间可以传输多个数据和信息流;利用底层协议,提高了总线利用率。 ?同步传输带宽:确定的带宽和低延迟适合电话系统和音频的应用;同步工作可以利用整个总线带宽。 ?灵活性:可以选择一系列大小的数据包,允许对设备缓冲区大小进行选择;通过指定数据缓冲区大小和执行时间,支持各种数据传输率;通过协议对数据流进行缓冲处理。 ?健壮性:出错处理/差错恢复机制在协议中使用;对用户感觉而言,热拔插是完全实时的;可以对有缺陷设备进行认定。 ?与PC产业的一致性:协议的易实现性和完整性;与PC机即插即用的体系结构的一致;对现存操作系统接口的良好衔接。 ?成本低廉:以低廉的价格提供1.5Mbps的子通道设施;将外设和主机硬件进行了最优化的集成;促进了低价格外设的发展;廉价的电缆和连接头。 对于数字系统而言,尤其是目前在工业界被广泛应用的嵌入式系统,进行USB技术的 开发和应用是十分必要的。一方面,USB技术作为一种新兴的串行通信技术,随着协议版本的不断更新,传输速度已从1.5Mb/s的低速发展到480Mb/s的高速,可以在很大的程度上满足不同数字系统对串行通信的要求。另一方面,USB技术不同于以往的串行通信接口技术,包含总线通信协议等内容,在实际应用中,可以根据需要把数字系统开发成相应的USB主机、USB设备以及USB,,,,,OTG(USB,,,,,On-the-Go,USB主机、从机自适应)设备,在实现不同系统之间的数据交互方面有很大的灵活性。对于Sock而言,如果可以将系统内对数据传输要求较高的局部模块设计成具有标准接口的点对点连接方式,而总体仍沿用传 统的片内总线数据传输方式,就可以让SoC器件很好的解决接口复杂化和同步-异步的协调问题。作为标准化的串行通信接口,USB接口是非常适合SoC点对点连接设计的一种选择,不但在传输速度上可以基本满足SoC器件中各模块间数据交互的要求,而且从结构上来说,USB电缆只需VBus、GND、D+和D-四根线,非常简单。 因此,基于上述分析,对USB技术在数字系统尤其是嵌入式系统中的应用方法进行研究,为日后USB技术在Soc设计领域广泛应用奠定基础,就显得尤为重要,具有十分深远的意义。 1.3,,,,,单片机技术及AVR单片机性能简介 ,,,,,,,,,,,,,,,AVR单片机是ATMEL公司1997年推出的全新配置精简指令集RISC(Reduced,,,,,Instruction,,,,,Set,,,,,CPU)单片机。精简指令集RISC结构是20实际90年代开发出来的,是综合了半导体集成技术和软件性能的新结构。这种结构使得AVR单片机具有接近1MIPS/MHz的高速处理能力。AVR单片机开发的目的在于,能采用C语言编程,从而能高效的开发出目标产品。为了对目标代码大小,性能及功耗进行优化,AVR单片机采用了大型快速存取寄存器文件和快速单周期指令。快速存取RISC寄存器文件由32个通用工作寄存器组成。传统的基于累加器的结构需要大量的程序代码,以实现累加器和存储器之间的数据传输;在AVR单片机中,用32个通用工作寄存器代替累加器,从而可避免传统的累加器和存储器之间的数据传输造成的瓶颈现象。AVR单片机运用Harvard结构,在前一条指令执行的时候就取出现行的指令,然后以一个周期执行指令。在其它的CISC以及类似的RISC结构的单片机中,外部振荡器的时钟被分频降低到传统的内部指令执行周期,这种分频最大达12倍。AVR单片机是用一个周期执行一条指令的,它是在8位单片机中第一个真正的RISC结构的单片机。AVR单片机采用低功耗,非挥发的CMOS工艺制造,内部分别集成Flash,EEPROM和SRAM三种不同性能和用途的存储器。除了可以通过SPI口和一般的编程器对AVR单片机的Flash程序存储器和EEPROM数据存储器进行编程外,绝大多数的AVR单片机还具有在线编程(ISP)的特点,这给学习和使用AVR单片机带来了极大的方便。 第二章,,,,,设计构思 2.1,,,,,技术背景 2.1.1嵌入式系统及开发技术,,,,, 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用 系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统的应用可以说涵盖了国民经济建设的各个方面,并处于高速发展之中,其中在以下几个方面的发展尤其显著:系统机构处于复杂;网络互联成为必然趋势;应用实时精简系统内核、算法来降低功耗和软硬件成本;系统提供友好的人机界面。所以,通过对嵌入式系统的基本概念、应用以及发展趋势的了解,可以看到,嵌入式系统的研究是计算机学科综合各项理论和技术的集大成者。针对这样的要求,论文本设计是基于嵌入式系统的USB外设的开发。 (一),,,,,嵌入式系统组成结构 嵌入式系统由硬件和软件两部分组成,所以其分类可以从硬件和软件两方面进行划分。 嵌入式系统的核心是各种类型的嵌入式处理器,嵌入式处理器与通用处理器最大的不同点在于:嵌入式CPU大多工作在为特定用户群所专门设计的系统,它将通用CPU中许多板卡完成的任务集成到芯片内部,从而有利于嵌入式系统设计在设计时趋于小型化,同时还具有很高的效率和可靠性。嵌入式处理器的体系结构经历了从CISC(复杂指令集)到RISC(精简指令集)的转变,位数有4位、8位、16位、32位逐步发展到64位。嵌入式处理器是嵌入式系统硬件部分的核心,近年来嵌入式微处理器的主要发展方向是小体积、高性能、低功耗。专业分工也越来越明显,出现了专业的IPC(IntellectualProperty,,,,,Core知识产权供应商,如ARM、MIPS等,这些属于微处理器(Micro,,,,,ProcessorUnit,MPU),用于计算机通信领域的嵌入式DSP处理器(Digital,,,,,Signal,,,,,Processor,DSP)和高度集成的嵌入式片上系统(System,,,,,On,,,,,Chip,SOC)。目前几乎每一个半导体制造商都生产嵌入式处理器,并且越来越多的公司开始拥有自主的处理器的设计部门,流行的结构有30多个系列,其中以ARM、PowerPC、MIPS等使用得最为广泛。 嵌入式软件是针对特定应用领域,基于某个固定的硬件平台,用来达到用户预期目标的计算机软件。为了嵌入式系统的开发更加方便和快捷,需要专门负责管理存储器分配、中断管理、任务调度等功能的软件,这就是所谓的嵌入式系统。嵌入式系统是用来支持嵌入式应用的软件,是嵌入式系统中极为重要的组成部分,它通常包括与硬件相关的底层驱动程序、系统内核、设备驱动接口,通信协议、图形用户界面(GUI)等。与通用操作系统相比较,嵌入式操作系统在系统实时性、硬件依赖性、软件固化性以及应用专用性等方面,具有更加鲜明的特点。嵌入式系统根据应用场合分为两大类:一类是面向消费电子产品的非实时操作系统,如Linux,应用设备PDA、机顶盒等;另一类则是面向控制、通信等领域的实时操作系统,如VxWorks等。实时操作系统是具有实时性,能支持实时控制系 统工作的操作系统,其首要任务是调度一切可利用的资源完成实时控制任务;其次才着眼于提高系统的使用效率,其重要特点是通过调度来满足对于重要事件在规定时间内作出正确的响应。嵌入式系统中的软件除了嵌入式操作系统外还包括嵌入式应用软件,嵌入式应用软件和普通软件有一定的区别,它不仅要求在准确性、安全性和稳定性等方面要满足实际应用的需要,并且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。 (二)嵌入式系统的开发流程 嵌入式系统发展到今天,对应于各种微处理器的硬件平台一般都是通用的、固定的和成熟的,这就大大减少了由硬件引入错误的机会。此外,由于嵌入式操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的API函数就可以完成大部分的工作,因此大大简化了开发的过程,提高了系统的稳定性。嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。一般需要交叉开发环境(Cross,,,,,Development,,,,,Environment)的支持。嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器。这里一般把进行交叉编译的主机称为宿主机,也就是普通的通用计算机,而把程序实际的运行环境称为目标机,也就是嵌入式系统环境。交叉编译器用于在宿主机上生成能在目标机子上运行的代码,而交叉调试器和系统仿真器则用于在宿主机和目标机之间完成嵌入式软件的调试。 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译称不同的CPU对应语言。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。 嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。 在常见软件开发中,调试器与被调试的程序往往运行在同一台计算机上,调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。而在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试 进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。嵌入式系统的交叉调试有多种方法,主要可分为软件方式和硬件方式两种。它们一般都具有如下一些典型特点: 调试器和被调试进程运行在不同的机器上,调试器运行在PC机或者工作站上(宿主机),而被调试的进程则运行在各种专业调试板上(目标机); 调试器通过某种通信方式(串口、并口、网络、JTAG等)控制被调试进程; 在目标机上一般会具备某种形式的调试代理,它负责与调试器共同配合完成对目标机上运行着的进程的调试。这种调试代理可能是某些支持调试功能的硬件设备,也可能是某些专门的调试软件; 目标机可能是某种形式的系统仿真器,通过在宿主机上运行目标机的仿真软件,整个调试过程可以在一台计算机上运行。此时物理上虽然只有一台计算机,但逻辑上仍然存在着宿主机和目标机的区别。 通用计算机)来编译出目标机的可本设计即采用嵌入式系统的开发技术,借助宿主机( 执行代码,不再需要编程器,使设计简化。,,,,, 2.1.2,,,,,AVR单片机的在线编程接口SPI ,,,,,,,,,,,,,,,同步串行接口SPI(Serial,,,,,Peripheral,,,,,Interface),,,,, 允许在ATmega,,,,,系列单片机和外设或其他AVR系列单片机之间高速同步数据传输。它是一个同步的串行通信总线,因此在SPI通信中的发送器和接收器必须使用相同的时钟,使接收器能同步监测数据位。 SPI逻辑结构如图,其核心部件为8位移位寄存器和接收缓存器(两者合成为SPI数据寄存器),由分频器,选择器和时钟逻辑所组成的时钟信号发生器,以及SPI状态寄存器,SPI控制寄存器等部件。SPI利用B口的第二功能,将其中的PB7,PB6,PB5及PB4分别定义为SCK,MOSI,MISO和SS。 图2-1,,,,,SPI数据通信时的主-从机连接与数据传送方式 对SPI,,,,,主机数据寄存器写入数据以启动SPI,,,,,时钟,通过将需要的从机的/SS,,,,,引脚拉低,主机启动一次通讯过程。SCK引脚是主机模式的时钟输出和从机模式的时钟输入,主机和从机将需要发送的数据放入相应的寄存器。主机在SCK,,,,,引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI,,,,,移出,从从机的MOSI,,,,,移入;从机的数据从从机的MISO,,,,,移出,从主机的MISO,,,,,移入。主机通过将从机的SS拉高实现与从机的同步。AVR,,,,,单片机的SPI,,,,,接口在发送方向上单缓冲,而在接受方向是双缓冲。这表示在所有的移位操作完成前,被发送的字节不能被写入SPI,,,,,的数据寄存器;但SPI,,,,,在接受数据时,已经收到的数据必须在下一个字节被完全移入之前从SPI数据寄存器中读出,否则这个字节会丢失。 2.1.3,,,,,ISP在线编程技术 ISP,,,,,(,,,,,In,,,,,-System,,,,,Programming)技术实际上就是用户在自己设计的目标系统中或电路板上为重构器件进行编程或反复编程时,,,,,,无需将ISP,,,,,器件从线路板上拆上拆下。这种可对电路板或整个电子系统随时进行组态或重组的功能,,,,,,给设计开发、电路板级调试和系统升级换代带来了极大的方便,,,,,,使得电路系统设计、生产、维护及更新等环节都发生了革命性的变化。用户无论想增加或修改电路设计,,,,,,都可以在几分钟内把新的设计下载到器件中。由此可见,,,,,,硬件的设计,,,,,,象软件那样灵活而易于实时修改,,,,,,这不仅扩展了器件的用途,,,,,,缩短了系统调试周期,,,,,,而且还省略了对器件单独编程的环节,,,,,,简化了目标设备的现场升级和维护工作,,,,,,是一种全新的设计方式。 AVR单片机单片机引脚共有4个:RST,MOSI,MISO和SCK。各引脚功能如下:RST,,,,, 为在线编程输入控制端,仅在ISP下载过程中保持高电平,在系统正常工作时该引脚为系统复位端,保持低电平状态。MOSI为主机输出/从机输入的数据端,系统正常工作时,该引脚为通用I/OP1.5口线。MISO为主机输入/从机输出的数据端。系统正常工作时,该引脚为通用I/OP1.6口线。SCK为串行编程的时钟端,可实现主/从机时序的同步。该时钟频率不得超过系统时钟的1/16。系统正常工作时,该引脚为通用I/OP1.7口线。 ISP下载是基于串行传输方式,并且符合SPI协议。在SPI协议中,数据的发送和接收是同步进行的。即在同步时钟的作用下,在发送数据的同时也在接收数据。ISP的时序如图所示。 图2-2,,,,,ISP串行数据传输时序图 每一字节的数据都是低位在先,高位在后,在串行时钟的作用下逐位传输。在传输过程中,数据是在时钟输入端为高电平时有效,在时钟输入端为低电平时更新数据。 2.2方案选择 通常进行单片机实验或开发时,,,,,,编程器是必不可少的。仿真调试过的程序需要借助编程器写入单片机内部或外接的程序存储器中,,,,,,随着单片机技术的应用发展,,,,,,许多公司新推出的MCU,,,,,具有片内Flash,,,,,存储器,Flash,,,,,存储器具有电可擦除、无需后备电源保护数据、可在线编程等特点。在线编程允许单片机内部运行的程序去改写Flash,,,,,存储器的内容,利用这个特点,不仅可以在运行过程中修改某些运行参数,也为研制新型嵌入式应用开发工具提供了技术基础。采用宿主机/目标机模式开发嵌入式应用,利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件,然后 将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试,最后目标机在脱离宿主机单独运行。具有在线编程功能的单片机给实验和开发带来了很大的方便和灵活性,并使单片机系统远程调试、升级成为现实。 嵌入式面向用户,面向产品,面向应用的特性决定了它的硬件和软件都必须高效率地设计,量体裁衣,去除冗余,这样才能在具体应用中更具有竞争力。嵌入式系统这种对体积的敏感性决定了它对外围接口设备选择的严格性。既要保证能与其它外围设备高速、有效地通信,又要严格控制接口的体积。而通用串行总线USB正符合了这一要求。而USB1.1的最大传输速率可达12Mbps,USB2.0,,,,,更是支持高达480Mbps,,,,,的传输速率。由于常见的外设几乎都支持USB,,,,,,所以只需一到两个USB接口,就可以完成嵌入式系统和几乎所有常见外设的通信。这种解决方案无疑具有很强的实用性。USB,,,,,接口分为USB主机USB,,,,,Master和USB外设USB,,,,,Slave。USB,,,,,主机负责对各种USB,,,,,外设的控制并向USB,,,,,外设供电。要实现嵌入式系统对各种外围设备的有效控制,就必须在嵌入式系统中实现USB,,,,,Master,,,,,的功能。在本设计中,选用的嵌入式微处理器需要是一款功能强大的RISC微处理器,其时钟频率高,它的体积小,功耗低,性能稳定。本文采用USB接口技术和AVR单片机相结合,完成一个USB下载器,不需要使用编程器,,,,,,只需要通过USB接口和编程电缆直接在目标器件或系统上进行编程。 ,,,,,,,,,,,,,,,ATMEL,,,,,公司的AVR系列单片机,提供了一个SPI,,,,,串行接口对内部程序存储器编程ISP,,,,,,支持在线编程功能。本设计选用单片机是ATMEL公司推出的AVR系列单片机,采用上/下位机设计方式,通过USB,,,,,通讯方式实现信息传输。具体工作原理是:上位机(PC,,,,,机)首先安装驱动程序和PC应用软件,然后将下位机系统安装到单片机上,将USB,,,,,插头插入主机,经主机正确识别后,运行PC,,,,,应用软件将程序下载到目标芯片中,下载的程序存储到下位机存储单元中,进行ISP下载到目标芯片中。 用户操作 发送数据 ISP操作 PC机应USB接口 数据传递 ISP接口 目标芯片 用软件 显示数据 接受数据 数据反馈 硬件平台 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,图2-3系统框架图 上图即为本设计的系统框架图。从图上可知,对于USB接口的设计,拿出三种方案: 方案一:采用USB接口芯片与AVR单片机相结合。用USB接口芯片来检测以及反应USB端口的事件。硬件模块关系如下图。 USB供电 USB供电 数据传输 单片机 ISP USB 接口 数据传递 接口 USB接口 USB总线 芯片 PDIUSB12 图2-4,,,,,方案一:硬件模块关系图 USB接口芯片有许多种,可大致分为两类:一种是内部集成了微控制器,如美国Tl公司的TUSB32l0,它内嵌一个兼容的8051MPU,还有CyPress半导体公司的CY7C63xxx二系列的芯片,它们拥有35条涉及基本的操作和程序跳转等的指令:另一种USB芯片只处理USB通信,必须被一个外部微控制器控制。这一类有代表性的产品有朗讯公司的USS820/825、飞利浦公司的PDIUSBD12。经过综合考虑,我们的设计中采用了第二种类型的USB接口芯片。采用飞利浦公司的PDIUSBD12作为USB下载器的接口器件。 方案二:不用USB接口芯片,由单片机发送、接收相关的USB设备信息,枚举USB外设成功后,根据接收到的DI,进行相应的控制操作。 USB供 电,,,,,,,,,,,,,,,,, ,,,,,,,, 单片机 数据传输 ISP USB 接口 数据传递 接口 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,图2-5,,,,,方案二:硬件模块关系图 从硬件模块关系图,我们就能得出:方案二比方案一简单。减少了USB接口芯片,整个设计的成本降低,电路简单化,可靠性提高。 方案三:采用无线通信方式方式。不需要USB为目标芯片供电。在线编程允许单片机内部运行的程序去改写Flash,,,,,存储器的内容,利用这个特点,不仅可以在运行过程中修改某些运行参数,也为研制新型嵌入式应用开发工具提供了技术基础。在线编程为开发调试提供了方便,无线通信给实验和开发带来了很大的方便和灵活性,并使单片机系统远程调试、升级成为现实。 2.3,,,,,本章小结 ,,,,,,,,,,,,,,,,,,,,本章提出三种设计方案进行对比,得出可行性方案二。并从单片机性能上进行可行性论证。这是本设计的理论基础。接下来的硬件设计和软件设计就是根据这些内容展开的。 第三章,,,,,系统硬件设计 3.1,,,,,MCU的选择 硬件是整个系统的基础,,,,,,是完成各个功能的物理平台。本设计的微控制器选择AVR系列单片机ATmega8。在AVR家族中,ATmega8是一个非常特殊的单片机,它的芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路,具有AVR高档单片机MEGE系列的全部性能和特点,采用小引脚封装,所以价格仅与低档单片机相当,性价比高。ATmega8的主要性能如下: 1.高性能,低功耗的8位AVR微控制器,先进的RISC精简指令集结构 (1)130功能强大的指令,大多数为单时钟周期指令 (2)32个8位通用工作寄存器 (3)工作在16MHz时,具有16MIPS的性能 (4)片内集成硬件乘法器(执行速度为2个时钟周期) 2.片内集成了较大容量的非易失性程序和数据存储器以及工作存储器 (1)8K字节的Flash程序存储器,擦写次数:大于10000次 (2)支持可在线编程(ISP),可在应用自编程(IAP) (3)带有独立加密位的可选BOOT区,可通过BOOT区内的引导程序区(用户自己写 入)来实现IAP,,,,,编程 (4)512个字节的EEPROM,擦写次数:100000次 (5)1K字节内部SRAM (6)可编程的程序加密位 3.丰富强大的外部接口(Periphcral)性能 (1)2个具有比较模式的带预分频器(Separate,,,,,Prescale)的8位定时/计数器 (2)1个带预分频器(Separate,,,,,Prescale),具有比较和捕获模式的16位定时/ 计数器 (3)1个具有独立振荡器的异步实时时钟(RTC) (4)3个PWM通道,可实现任意小于16位,相位和频率可调的PWM脉宽调制输出 (5)8通道A/D转换(TQFP,MLF),6路10位A/D+2路8位A/D (6)6通道A/D转换(PDIP封装),4路10位A/D+2路8位A/D (7)1个I2C的串行接口,支持主/从,收发四种工作方式,支持自动总线仲裁 (8)1个可编程的串行USART接口,支持同步,异步以及多机通信自动地址识别 (9)1个支持主从(Master/Slave)收发的SPI同步串行接口 (10)带片内RC振荡器的可编程看门狗定时器 (11)片内模拟比较器 4.特殊的微控制器性能 (1)可控制的上电复位延时电路和可编程的欠电压检测电路 (2)内部集成了可选择频率(1/2/4/8MHz),可校准的RC振荡器(25C,5V,1MHZ时, 精度为1%) (3)外部和内部的中断源18个 (4)五种睡眠模式:空闲模式(Idle),ADC噪声抑制模式 (ADC,,,,,Noise,,,,,Reduction)省电模式(Pow-save)掉电模式(Power-down),待命 模式(Standby) 5.I/O口和封装 (1)最多23个可编程I/O口,可任意定义I/O的的输入/输出方向;输出时为推挽输出,驱动能力强,可直接驱动LED等大电流负载:输入口可定义为三态输入,可以设定带内阻上拉电阻,省去外接上拉电阻 (2)28脚PDIP封装,32脚TQFP封装和32脚MLF封装 6.宽工作电压 (1)2.7V~5.5V(ATmega8L) (2)4.5V~5.5V(ATmega8) 7.高运行速度 (1)0~8MHz(ATmega8L) (2)0~16MHz(ATmega8) 8.低功耗(4MHz,3V,25C) (1)正常模式(Active):3.6mA (2)空闲模式(Idle,,,,,Mode):1.0mA (3)掉电模式(Power-down,,,,,Mode):0.5uA ,,,,,,,,,,,,,,,ATmega8内嵌8K字节的Flash存储空间,18个外部和内部的中断源。它在4.5V~5.5V工作电压范围内的工作速率范围为0~16MHz,这使得它有极高的速率和存储空间来应付USB通讯。 3.1.1工作流程 从通信协议和传输过程可知,ATmega8单片机在初始化后要保持接收地址状态,当接收到本机地址后回送地址并设置本机为接收数据状态,接受完数据后做出相应反应,最后回到接收地址的状态。 单片机主流程的核心部分是协议层的请求处理,它关系到PC机枚举USB外设成功与否。所以在调试单片机程序的时候,要特别注意Windows对USB设备的枚举顺序。如果枚举成功,主机将找到新的设备,提示安装驱动程序;否则找到未知设备,USB外设不可用。 响应串口中断 关中断 接受数据,读取本机地址 N Y 地址, ,,,,,,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,图3-1串口通信流程图 ,,,,,3.2,,,,,硬件电路设计 本设计电路图见附图,该电路设计分析如下: (1)ATmega8的PC6(RESET)与PB2(SS)及ISP插座上的RST通过JP2相连,当接通JP2,即实现ATmega8的自编程。 (2)ATmega8的PB3(MOSI),PB4(MISO),PB5(SCK)分别与ISP插座上的MOSI,MISO,SCK相连,实现SPI主从机串行通信。 (3)PC0,PC1各接一个LED灯,用来指示工作状态。 (4)在PB6,PB7之间接一个12MHz晶振,提供外部时钟。 (5)由于USB接口的电压,数值为3.6V,而电脑USB端口的输出电压为5V,为了电平匹配,本电路使用3.6V稳压二极管D1,D2来分别与D-,D+相连 3.3,,,,,本章小结 本章着重介绍了本课题实验平台的主要硬件构成,该平台选用ATmega8作为系统处理器,是由于ATmega8芯片的高速,低功耗,性能稳定等特点,也为该演示平台的将来功能 的扩展和升级提供便利。 第四章,,,,,系统软件设计 本设计的软件主要分为两个部分:,,,,,单片机上的控制系统设计和PC,,,,,机上的应用程序设计。单片机控制系统负责与PC,,,,,机通信和对目标芯片ISP,,,,,编程,,,,,,PC,,,,,机上的应用程序包括USB,,,,,的驱动程序和ISP,,,,,下载控制软件。利用双龙在线编程软件将在AVR,,,,,Studio中生成的HEX文件下载到ATmega8芯片中,完成了单片机上的控制系统设计。下面进行PC机上USB下载器驱动程序的设计。 4.1系统固件程序设计 所有基于微控制器及其外围电路的功能设备的正常工作都离不开固件的参与。固件的作用就是辅助硬件,或者说是控制硬件来完成预期的设备功能。没有固件的参与和控制,硬件设备只是芯片的简单的堆砌,无法实现预期的功能,就像一台没有安装操作系统的计算机一样。USB设备也不例外。因此,用户必须根据实际的需要来编写固件程序,从而辅助硬件完成USB通信任务。一般情况下,设备是不能启动任何传输过程的,它只能对主机的请求作出响应。固件一直就等待主机的命令,再根据命令去执行相应的程序。 4.1.1,,,,,固件程序开发工具 ATMEL开发的AVR,,,,,STUDIO软件是一个用于开发AVR系列单片机的集成工作环境。该软件有以下功能:汇编程序汇编器,模拟仿真功能(需仿真机结合),AVR,,,,,Prog串行编程,STK500/AVRISP/JTAG,,,,,ICE编程等功能。AVR,,,,,STUDIO,,,,,支持ATMEL全系列仿真器。在AVR,,,,,STUDIO中可以完成所有的操作,如建立项目,建立和编辑汇编源文件,汇编(可以生成OBJ和HEX文件),调试,程序下载等,一气呵成,十分方便。 4.1.2,,,,,固件程序下载 双龙在线编程软件(SL,,,,,ISP),,,,,是由广州市双龙电子有限公司开发的拥有独立知识产权的编程软件,使用这个软件可以对AT89S,,,,,系列、AVR,,,,,系列MCU,,,,,进行串行编程.由下载电缆和应用软件组成,支持的器件为ATMEL公司的AT89S,,,,,系列(,,,,,包含AT89S51/,,,,,52),,,,,和AVR,,,,,系列;支持的烧录文件格式有INTEL,,,,,格式的 HEX,,,,,文件、EEP,,,,,文件、二进制BIN,,,,,文件;支持缓冲区数据修改和保存,缓冲区中的数据可以保存为二进制BIN,,,,,文件、INTEL,,,,,格式的HEX,,,,,或EEP,,,,,文件;缓冲区中的数据还可以保存为C,,,,,程序中的char,,,,,或unsignedchar,,,,,类型数,,,,,组文件,以方便程序开发者处理某些特殊应用.下载电缆有10,,,,,根线,一端连接计算机的并行口,另一端连接ISP下载插座。此时,该USB下载器即相当于一个ATmega8的串行编程器,实现ATmega8自编程。USB接口可实现为下载线路供电。 4.2,,,,,系统驱动程序设计 设计一个USB外围设备,除了固件程序外还需要设计相应的设备驱动程序,才能使之与PC通信。设备驱动程序实际上是一系列控制硬件设备的函数,是操作系统中控制和链接硬件的关键模块。它提供连接到计算机的硬件设备的软件接口。设备驱动程序将不同外设特性和操作系统高层分割开,隐藏了硬件设备内部的实现细节,并对操作系统透明。对于USB外设,驱动程序的优劣直接将影响着设备性能的发挥,好的驱动程序能够准确、稳定、可靠的按主体的要求完成数据信息的传输和处理,为上层应用软件提供良好的接口。 4.2.1驱动程序开发工具 Driver,,,,,studio是一套用来简化微软Windows平台下设备驱动程序的开发,调试和测试的工具包。在windwos2000操作系统下建立WDM驱动程序编程环境,首先安装DDK,后安装DriverStudio,并选择安装Driverworks,ToolS和SoftCE工具。则在visualC++编程工具栏中自动添加了一个DriveStudio菜单。通过DriverStudio已经初步建立了一个驱动程序框架,根据需要向里面填充内容即可。 4.2.2,,,,,USB的拓扑结构 USB系统通过具有相同接口的串行连线将不同的设备连接到一起。USB的物理拓扑结构为分层的星型结构,由三层组成:USB主机(Host)、USB设备(Device)和USB集线器(Hub)。USB主机是星型结构的中心,它通过USB集线器连接更多的USB设备,组成USB系统。由于总线电气性能的原因,物理上USB设备最多可以通过USB集线器扩展到6层。从逻辑上看,USB主机可以与分层的USB设备直接通信,就好象与设备直接相连一样。 (1)USB主机 作为USB系统的主控组件,USB主机控制USB总线上所有USB设备和集线器的数据通信过程。在整个USB系统中只允许有一个USB主机,并且必须要有一个USB主机控制整个 系统的数据传输工作。所有的数据传输都是由USB主机发起的。USB主机在USB系统中是一个起协调作用的实体,它不仅占有特殊的物理位置,而且对于USB以及连到USB上的设备来说,还负有特殊的责任;主机控制所有USB设备的访问;一个USB设备想要访问总线必须由主机给予其使用权;主机还负责监督USB的拓扑结构。 (2)USB设备 USB设备就是能通过USB来发送和接受数据从而实现一定功能的实体。USB设备从底层的物理和电气特性到上层的软件协议和数据结构都有严格的定义,分为很多USB设备类,如键盘、打印机等。每个USB设备都有表明自身能力和所需要资源的描述符。在设备第一次连接到主机上之后,设备就可以分得USB的带宽,进行数据的传输了。在总线的数据传输过程中,相对于USB主机而言,USB设备一直扮演着受控的角色,按照USB主机的要求接受或发送数据。根据数据传输的速度不同,USB设备被分为全USB设备速设备(12Mb/s)和低速设备(1.5Mb/s)两种,在USB2.0的版本中还定义了高速设备,传输速率达到480Mb/s。 (3),,,,,USB集线器 USB集线器提供了用来连接USB设备的接口,一个集线器能将一个USB的连接点转化为多个连接点,使得多个设备能同时连接到唯一的USB总线上进行通信。作为USB体系结构中的专用设备,USB接线器的突出特点是支持热插拔、区分设备速度、为设备供电和检测设备的各种状态并通知USB主机。USB主机提供USB接线器的驱动软件,并具有对接线器的每个端口电源进行开关的功能,并对每个端口的变化作出反应。在USB主机的硬件控制器内部一般要嵌入一个接线器部件,称为根接线器,它具有USB接线器除中断传输之外的全部功能。 4.2.3,,,,,USB总线传输协议 USB总线传输协议是USB设备和USB主机之间的数据流协议。数据在主机和设备之间的传输过程,在USB总线传输协议中被分成了三层:信号层、协议层和数据传输层。首先介绍一下相关的基本概念。 端点:每一个USB设备在主机看来就是端点的集合,主机只能通过端点与设备进行通讯,以使用设备的功能。每个端点实际上就是一个一定大小的数据缓冲区,这些端点在设备出厂时就已定义好其地址的分配。在USB系统中,每一个端点都有唯一的地址,这是由设备地址和端点号给出的。每个端点都有一定的特性,其中包括传输方式、总线访问频率、带宽、端点号、数据包的最大容量等。端点必须在设备后才能生效(端点0除外)。端点0通常为控制端点,用于设备初始化等,端点1、2等一般用作数据传输端点,存放主机与设备之间往来的数据。 接口:USB端点被捆绑为接口。每个USB接口只处理一种USB逻辑连接,例如鼠标,键盘等。因为一个USB接口代表一个基本功能,因而每个USB驱动程序控制一个接口。 配置:USB接口本身被捆绑为配置。一个USB设备可以有多个配置。而且可以在配置之间切换以改变设备的状态,但一个时刻只能激活其中一个配置。 管道:一个USB管道是主机驱动程序的一个数据缓冲区一个USB外设端点的连接,它代表了一种在两者之间移动数据的能力。一旦设备被配置,管道就存在了。管道有两种类型:数据管道和消息管道。 帧:USB协议中的帧,可以看成是一个时间单位,也可以看成是一个长度单位。从时间单位上来看,一帧的长度为1ms,系统中所有事务的处理都是在以帧为单位的时间周期内完成。从长度上来看,对于USB1.1协议,一帧的数据长度为12000比特,如果所有的事务处理不能占满整个帧长时,主机会填充上空闲位。 4.2.4,,,,,USB系统的工作原理 USB系统的功能就是完成数据的传输,其主要特点就是USB系统中所有的操作都由USB主机来发起、控制和结束的。USB设备就是充当了一个被动者的角色。 (一)USB设备的枚举过程 在主机与设备进行通信之前,主机需要知道设备的一些具体信息,主机必须分配一个地址给设备。主机是通过一个被称为枚举的过程来完成这些工作。其流程如下: (1)用户插入一个设备到USB设备到USB端口:集线器给USB端口供电,此时设备处于上电状态; (2)主机通过集线器来确定连接事件的细节:当集线器通过差模信号线(D+和D-)检测到设备的接入后,主机会等待100ms以使设备的接入过程顺利完成并使供电稳定; (3)主机再给集线器发送一个SetPortFeature请求,重新配置端口,集线器来确定设备接入的端口上保持复位命令10ms,然后,该端口就处于被激活的状态,这时,设备处于缺省态,可以从端口上获取最高达100mA的电流,设备的所有寄存器等均已复位,并通过默认地址0与主机通信; (4)主机获取设备描述符:主机发送一个GetDescriptor请求来获得缺省管道的最大数据包的大小; (5)主机分配一个地址给设备:主机控制器通过发送一个SetAddress请求来给设备分配一个总线上的唯一地址,此时设备进入地址态,在以后的各种数据传输中,设备将使用 这个新地址; (6)主机获取设备的配置描述符:主机给新地址发送一个GetDescriptor请求来读取这个设备描述符,这个描述符包括端点0的最大包的大小、设备支持的配置号、以及关于这个设备的其他基本信息; (7)主机给设备分配配置值:在从描述符了解了设备之后,主机发送一个SetConfiguration命令来请求希望的配置号,设备读取这个请求后设定自己配置来匹配主机的请求,设备此时处于配置状态,并且设备的接口已经被使能,也就是说,这个USB已经可以开始使用了。 (二),,,,,USB设备的描述符及标准请求命令 当USB设备第一次连接到主机上时,主机要求了解USB设备的一些基本信息,比如设备有何种功能、需要占用多少USB资源、属于何种设备类等。只有主机完全确认了这些信息之后,设备才能正常工作。这些信息是通过存储在设备中的USB描述符来体现的。描述符可以看作是一个完整的数据结构,用于描述一个USB设备的所有属性。USB协议1.1中 规定的标准的描述符包括以下几种: 设备描述符:描述了USB设备的通用信息,一个USB设备只有一个设备描述符。设备描述符包括设备类代码、子类代码、设备协议代码、端点0最大包的大小等基本信息; 配置描述符:用于描述一个USB设备的属性和能力等配置信息,一个USB设备也只需一个配置描述符就足够了。配置描述符包括配置描述符的类型编号、所支持的接数量、供电模式的选择等; 端点描述符:用于描述接口所使用的非0端点的属性,包括输入/输出方向、端点号和端点容量等。 在USB对设备进行枚举时,主机需要对设备进行一系列设置。主机通过缺省的控制管道对设备发送一些基本的请求命令,完成读取设备状态、设备的各种描述符,并对设备重新分配地址,重新配置端口等功能。这些命令都是由控制传输方式来传送的。我们将这些基本的请求命令称为标准的USB设备请求命令,这些请求命令是主机配置USB设备的关键。标准的USB设备请求命令是一个8字节的数据包,在USB1.1协议中,这样的命令有11个,都具有相同的数据结构格式。 结合USB系统的枚举过程和标准设备请求命令来看,USB系统的枚举过程起始就是主机向设备发送标准的设备请求命令的过程。从软件角度看,主机按照枚举的过程依次向设备写入请求命令,在枚举功能完成之后,用户应用软件通过驱动程序并遵循一定的设备类协议对设备进行各种操作。 4.2.5,,,,,Windows驱动模式 USB主机端的软件开发方法与用户使用的操作系统平台有关。目前,微软主流的操作系统Windows2000和WindowsXP等,大多数USB设备只能在Windows下使用,但也不是所有的Windwos版本都能很好地支持USB。从Windows98开始,微软开始在操作系统中为USB提供越来越完善的驱动支持,USB驱动程序开始成为Windows标准的WDM(Windows,,,,,Driver,,,,,Model)驱动程序体系的一部分。Windows设备驱动方式主要有三类:即VxD(虚拟设备驱动程序)、KMD(内核模式驱动程序)和WDM(Windows设备驱动程序模型)。本设计USB设备驱动采用WDM模型。,,,,, 1.WDM驱动程序的两种工作模式 (1)内核模式 任务可以运行特权级指令,对任何I/O设备有全部的访问权,还能够访问任何虚地址和控制虚拟内存硬件。此类模式的驱动程序文件以sys为后缀名,存在于系统目录下。 (2)用户模式 在这种模式中,运行的代码如果不通过操作系统中某种门机制,就不能进入内核模式。在Intel80x86处理器上,该模式对应于RINGG3级环。此类模式的驱动程序以可执行文件(.exe)或动态链接库(.dll)的形式存在,可以从任何路径运行。 2.WDM分层驱动模式 WDM采用分层的驱动程序模型如图4-1所示,在不同的层次上的驱动程序有不同的优先级。 在WDM中用功能设备对象(FDO)与物理设备对象(PDO)来描述硬件。一个PDO对应一个硬件,一个硬件只允许有一个PDO,却可以拥有多个FDO,在FDO的上下有一些过滤器设备对象(FiDO)。 4.2.6,,,,,USB设备驱动程序体系 1,,,,,USB驱动程序的内核层 图,,,,,4-1,,,,,USB驱动程序的体系结构 USB驱动程序运行在内核态,有三个层次: .最高层,是用户开发的被称为USB设备驱动程序; .中间层,是USB类驱动程序,在Windows98中为usbd.sys; .最低层,是主机控制器驱动程序,有两种主机控制器驱动程序,即通用主机控制器驱动程UHCD(Universal,,,,,Host,,,,,Control,,,,,Driver)和开放主机控制器接口OpenHCI(Open,,,,,Host,,,,,Control,,,,,Interface)。 USB设备驱动程序通过调用USB类驱动程序的服务来访问USB设备,它们之间的接口被称为USB驱动程序接口USBDI。USB类驱动程序和通用主机控制器驱动程序或开放主机控制器接口之间进行交互,该接口称为通用主机接口(UHI)或开放主机接口(OHI),USB类驱动程序把USB设备驱动程序所产生的请求通过UHI或OHI发送下去。 USB驱动程序软件堆栈内的层间通信使用IRP机制,一个设备驱动程序要和另外一个设备驱动程序进行通信时,它会用一个IRP结构来组装一个请求,并把该请求传递到下一层上去,下一层正确接受了该请求之后,会向发送方发出一个应答(ACK)握手信号。重复这个过程,就可以在不同分层结构之间实现通信了。,,,,,,,,,,,,,,,,,,,,,,,,, 虽然不同的软件分层通信都要使用IRP,而实际的USB请求却存放在一个被Microsoft称之为通用串行总线请求(URP)的结构内。URP内包含了不同的域,在不同的软件分层结构中,每一个分层会使用不同的域来进行处理操作。 2,,,,,USB程序各层的功能 (1)USB设备驱动程序 USB设备驱动程序位于USB类驱动程序之上,不与实际的硬件打交道,而是通过USBDI的内部IOCTL使用USB类驱动程序。因为它们都是内部IOCTL,所以只能用于内核态的调用(如设备驱动程序),但不能用于用户态的应用程序。 (2)USB类驱动程序 USBD负责管理USB系统中通用串行总线的工作,控制所有的USB协议操作和高层中断处理控制。 图4-2设备驱动程序调用 用户态与内核态通讯流程是:应用程序通过WIN32提供的API调用,向WNI32子系统发出命令;WlN32子系统通过标准的系统调用与内核层的I/O管理器通讯,将用户程序的API调用转换成IRP(I/O,,,,,Request,,,,,Package)包;I/O管理器将IRP包传递给指定的设备驱动程序;设备驱动程序再将IRP转换为相应的硬件抽象层HAL,,,,,(Hardware,,,,,abstracotion,,,,,layer)调用并传递给HAL层;最后由HAL与硬件直接打交道,得到用户程序需要的数据,并沿原路通过设备驱动程序、I/O管理器和WNI32子系统返回到用户程序。 3.总线驱动程序和类驱动程序 总线驱动程序负责发现总线上的全部设备,管理设备与计算机的连接,检测设备的添 加和删除,并且为它发现的设备创建一个物理设备对象PDO。通常,一旦总线驱动程序管了控制权,它可以直访问硬件,但USB设备必须通过它的类驱动程进行问。 4.2.7用WDM创建USB下载器驱动程序 ,,,,,,,,,,,,,,,开 始 获取硬件信息 初始化 例程 分配硬件资源 导入工作例程 打开设备对象 数据传输 数据传输例程 ,,,,,,,,,,,,,,, 否 终止否,终止否, 删除设备 卸载 例程 ,,,,,,,,,,,,,,,,,,,,结 束 图4-3系统驱动程序开发模型 Windows,,,,,驱动程序模型(Windows,,,,,Driver,,,,,Model,,,,,,WDM),,,,,是一种模型结构,,,,,,它建立在物理设备对象 (Physical,,,,,Device,,,,,Object,,,,,,PDO),,,,,和功能设 (Functional,,,,,Device,,,,,Object,,,,,,,,,,,FDO),,,,,的结构化分层基础上。WDM模型为了适应即插即用系统,重新定义了驱动程序分层,它至少存在总线驱动程序和功能驱动程序,根据需要还可以选择过滤器驱动程序。通常情况下,连接到总线的每个物理部件都有一个PDO,,,,,,承担由硬件实现的低级设备控制的责任。更高级软件则都存在一个FDO。 当存在IPO,,,,,操作时,,,,,,IRP,,,,,请求包(,,,,,IPO,,,,,Request,,,,,Packet),,,,, 首先被送到上级过滤器驱动程序,然后被一级一级的往下传递,最后由总线驱动程序完成对设备的操作。设备驱动程序位于整个结构的最顶层,它不直接操作硬件,而是通过USBD,,,,,接口传递请求。 当设备驱动程序被系统加载时,首先进入DriverEntry,,,,,(,,,,,),,,,,入口例程,在该例程中主要设置程序中要处理的各个MajorFuncton,,,,,IRP,,,,,和AddDevice,,,,,的处理函数入口点。 当USB堆栈检测到设备后,即插即用管理器(Plug,,,,,and,,,,,Play,,,,,Manager)调用DriverEntry例程中设置的AddDevice处理函数进行资源的分配和FDO,,,,,的创建。该例程的伪代码为: PnPAddDevice,,,,,(,,,,,INPDRIVER,,,,,-,,,,,OBJECTFDO,,,,,,,,,,,INPDEVICE,,,, ,-,,,,,OBJECTPDO) { //为设备创建一个符号链接,用于应用程序的CreateFile,,,,,调用; //创建设备对象和设备扩展; //初始化设备对象和设备扩展中的各个变量; //向PDO,,,,,查询设备的电源性能并保存到FDO,,,,,的设备扩展中; //因为设备可能暂时不被使用,关闭USB,,,,,设备电源。 } 当USB,,,,,堆栈分配完资源后,将会发送一个信号来激活DriverEntry例程中指定的处理函数,这个函数将完成如下工作:获取设备描述符;获取配置描述符;从配置描述符中选择一个接口,并用该接口配置设备。如果配置成功,将配置信息存放在设备扩展中。这时,驱动程序已经完全就绪,等待应用程序发出与设备进行通信的请求。 当应用程序与设备进行数据传输时,应用程序首先必须调用CreateFile,,,,,打开设备,然后利用返回的句柄对设备进行读写操作。对于驱动程序,当应用程序调用CreateFile,,,,,时,处理函数将被激活,并完成如下工作:获取当前IRP,,,,,的堆栈指针,通过堆栈指针获得要打开的文件名,然后通过文件名找到内部管道ID,,,,,,若对当前接口此管道ID,,,,,合法,则将该管道打开,并将返回给应用程序一个合法句柄。管道被打开后,用户应用程序将会调用ReadFile,,,,,或WriteFile,,,,,从设备读取数据或向设备写数据,激活处理函数将读写请求转换成相应的USB,,,,,请求数据包(USB,,,,,Request,,,,,Packet,,,,,,URP),,,,,传递给下层驱动程序,并等待IPO,,,,,处理的最后完成。 4.3,,,,,ISP下载控制软件 PC,,,,,机ISP,,,,,下载软件Progisp是面向用户的一个接口,,,,,,它向用户提供读目标芯片厂商号,,,,,,读目标芯片型号,,,,,,写目标芯片Flash,,,,,,读目标芯片Flash,,,,,和擦除目标芯片Flash,,,,,等ISP,,,,,编程操作。因为所有ISP,,,,,操作都在单片机控制系统中实现,,,,,,所以PC,,,,,机ISP,,,,,下载软件仅是通过USB,,,,,接口向单片机发送ISP,,,,,编程指令和代码数据,,,,,,同时接收并显示单片机反馈回的信息。PC机ISP下载软件Progisp支持所有的AVR芯片的编程,支持AT89S51,AT89S52;支持自定义并口下载编程器;支持自定义串口的下载编程器;支持USBASP编程器;支持并口的并行编程器等功能。 4.4,,,,,本章小结 本章主要是从编写设备驱动程序和USB通信应用程序的目的出发,首先介绍了Windows,,,,,驱动模式。明确了下文将要介绍的设备驱动程序和ISP下载控制程序分别在整个系统中所处的位置。然后讨论了Windows中的WDM驱动程序模型的特点,尤其分析了WDM型的USB驱动程序的分层体系架构和工作流程。最后根据本人的实际应用总结了开发WDM驱动程序的方法。 第五章,,,,,应用测试 5.1,,,,,USB下载器驱动安装 将USB线拔下又插上,主机检测到新设备,,,,,,并提示安装驱动程序,,,,,,安装完驱动程序后,,,,,,PC,,,,,机开始枚举USB,,,,,设备。PC机根据读取得USB,,,,,设备描述符配置设备,,,,,,此时,,,,,,USB,,,,,设备枚举成功,,,,,,进入挂起状态,,,,,,本设备已经被PC,,,,,机识别,,,,,,如图5-1,5-2,,,,,所示,,,,,,USB,,,,,接口测试成功。 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,图5-1 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,图5-2 5.2,,,,,上位机应用程序测试 已经下载好程序的USB下载器,就可以向目标板下载程序了。插上JP1,通过USB为 目标板供电。如下图5-3,下载成功。 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,图5-3 5.3测试及结果分析 测试环境说明: 测试中使用的硬件环境: 主机端硬件:PC机配置,,,,,CPU主频3.00GHZ,内存1G,硬盘容量60G 目标机硬件:MEGA,,,,,8,,,,,最小系统,MEGA16最小系统,使用片内FLASH编程。 测试使用的软件环境: 主机端软件:操作系 统,,,,,Microsoft,,,,,Windows,,,,,XP,,,,,Professional,,,,,,下载软件PROGISP(Var1.6.7),SLISP(V1.3.4),,,,,,,,,, 目标机软件:自主开发的若干单片机应用程序。程序大小分别为:ATmega8的程序分别为6.68KB,2.22KB,10.03KB,ATmega16的程序分别为29.8KB,6.68KB。 测试过程: 使用并口下载和USB下载器各自对不同目标系统,不同应用程序分别进行多次下载(10次),记录两种下载方式对于不同大小的程序和不同目标系统的平均下载速度和成功率。最终以此为根据分析USB相对于并口下载器的性能提升情况。 表5-1,,,,,PORGISP程序下载比较 USB下载器 并口下载 目标芯片 Atmega8 ATmega16 ATmega8 ATmega16 程序大小6.68 2.22 10.03 29.8 6.68 6.68 2.22 10.03 29.8 6.68 (KB) 下载时间2 0.9 3.1 8 2 3.1 1.2 4.8 12.85 3.2 (S) 平均速度3.34 2.47 3.32 3.73 3.34 2.15 1.85 2.15 2.32 2.09 (KB/S) 成功率 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 从表上可以得出,USB下载器的下载速度明显比ISP并口下载的速度快,我们来进行定量分析。,,,,, 表5-2,,,,,数据比较分析 ATmega8 ATmega16 程序大小(KB) 6.68 2.22 10.03 29.8 6.68 下载速度并口 2.15 1.85 2.15 2.32 2.09 (KB/S) USB 3.34 2.47 3.32 3.73 3.34 提高率(%) 55 34 54 61 60 表5-2数据分析结果显示,USB下载器在下载速度上具有很大优势,且程序越大,速度提高率越大。 将USB下载器的USB接口与PC相连,ISP插座与计算机并口相连,打开双龙在线编程软件,记录程序大小,下载时间。如下图: 表5-3,,,,,双龙并口下载与USB下载 双龙并口下载 USB下载 目标芯片 ATmega8 ATmega16 ATmega8 ATmega16 10.03 2.22 6.68 6.68 29.8 10.03 2.22 6.68 29.8 6.68 程序大小(KB) 24.51 4 5.2 8.68 30.92 下载时间FAST 3.1 0.9 2 8 2 33.6(S) 4.86 11.8 9.87 32 NORMAL 5 3.32 2.47 3.34 3.73 3.34 0.41 0.56 1.28 0.77 0.96 平均速度FAST 0.30 0.47 0.57 0.68 0.93 (KB/S) NORMAL 100 100 100 100 100 成功率(%) 100 100 100 100 100 表5-4,,,,,数据比较分析 ATmega8 ATmega16 程序大小(KB) 6.68 2.22 10.03 29.8 6.68 下载速度并口 1.28 0.56 0.41 0.96 0.77 (KB/S) USB 3.34 2.47 3.32 3.73 3.34 提高率(%) 161 341 710 289 334 表5-4数据分析非常明显的显示了USB下载器的优势,速度提高率比Progisp并口下载更高。可以看到,USB下载器的下载速度〉PROG并口下载〉双龙SLISP并口下载。 ,,,,,,,,,,,,,,,通过试验数据分析,USB下载器的优势显而易见,证明了本设计方案的可行性。 第六章,,,,,全文总结与展望 6.1,,,,,全文总结,,,,, 本文设计了一种单片机(MCU)控制、基于USB,,,,,接口通信的通用智能型ISP,,,,,下载器。利用该下载器,可以将编写好的程序下载到目标单片机中。通过计算机的USB端口实现对SPI信号的模拟,并完成对AVR程序的下载,从而可以方便的在所有具有USB接口的计算机上对具有在线编程功能单片机进行开发。本人主要工作: 第一阶段:收集、阅读资料并选择芯片器件,通过分析和比较,寻求一种较完善的设计方法,从理论和实践上找到了开发该项目的依据; 第二阶段:系统原理图及电路板的设计与调试。调试过程中遇到的各种技术难点,通过查阅资料、跟踪调试、仪表检测等手段,解决问题; 第三阶段:单片机固件程序设计及USB下载器驱动程序设计。这个阶段的工作难度较大,花费时间也较多,是本课题成败的关键; 第四阶段:将USB下载器正常驱动后,再用ISP下载线与目标芯片连接,对系统下载功能进行整体调试,最终实现了预期的各种功能; 第五阶段:撰写论文。 本人在研究和开发USB外设的过程中,深深体会到,除了硬件设计之外,要开发一个完整的USB外设需要有很强的理论基础,如:USB通信协议,Windows下的驱动程序结构,上层应用程序与设备驱动程序之间通信原理等。通过将理论运用于实践,本人也总结出,有效开发一个USB接口的软件部分,通常可以分为三个模块进行:USB固件程序、设备驱动程序和上层应用程序。 6.2,,,,,展望 经过几个月的研究和实践,我们的USB下载器已经完成。但是对于我们的工作,还是存在着一些不足的地方。比如在USB通信协议方面,由于我们开发的USB外设目的性和针对性都比较强,对本课题范围未能涉及的协议内容理解还是较为肤浅,所以并没有精通该协议的所有知识。另外在初次接触硬件设计的时候,由于缺乏整体概念和开发,虽然设计出来的下载器可以顺利运行,但是设计方案可能远谈不上最优,本下载器在一些局部范围仍有改进的空间,如在PCB板设计上,模拟电路和数字电路隔离考虑的应更周详,器件的选择可以更合理,尽量减少器件之间的电磁干扰。但由于课题研究时间和相关技术资料的限制,并没有实现这些改进措施。 通过本课题,我深深的体会到USB功能的强大和开发的难度。但众多优良的性能特点将会使它在今后的外围串行通信接口的发展中占有举足轻重的地位。我们可以在本下载器的基础上,结合无限通信技术,实现一种可以无线下载的USB下载器,目标芯片可以远距离接受信号,实现在线编程,比如智能车的无线遥控即可采用此技术,,,,,,从而真正实现了便携式,这些工作需要我们以后继续研究。 致谢 本论文是在导师丁晓波老师的指导下完成的,从硬件设计、实验到论文的撰写,都得到了丁老师的大力指导和帮助。 ,,,,,,,,,,,,,,,,,,,,在做业设计的几个月里,我对丁老师渊博的知识、严谨的治学作风感触颇深。借此论文完成之际,谨向丁老师致以诚挚的敬意! 另外,电子创新试验室的同学马志方,郭丕龙,丁茂林等在我论文完成的过程中,给予了很大的帮助,在此深表谢意! 感谢我的母亲,在我的求学生涯中给我以极大的物质支持和精神鼓励,这种付出不求回报,任何感激的语言和文字在此都显得多余,;感谢父亲教导我做人,养育我成人和资助我完成大学学业。在此,衷心祝愿他们身体健康~唯有不断进取才是对他们最大的敬意。 最后,谨向所有关心我支持我的人们表示衷心的感谢~ ,,,,, 参考文献 [1],,,,,龚义建,,,,,,焦启民.,,,,,通用串行总线USB的特点与应用[J].,,,,,高等函授学报(自然科学版),,,,,,2003,(03).,,,,, [2],,,,,耿德根.,,,,,具有在线编程的AVP高速嵌入式单片机[J].,,,,,单片机与嵌入式 系统应用,,,,,,2001,(04). [3],,,,,丁化成,,,,,,耿德根,,,,,,李君凯.,,,,,AVR,,,,,单片机应用设计[M,,,,,].北京:,,,,,北京航空航天大学出版社.,,,,,2002:56-60. [4] 张念淮,,,,,,江浩.,,,,,USB,,,,,总线接口开发指南[M,,,,,].,,,,,北京:,,,,,国防工业出版社.2002:23-25. [5],,,,,吴宝庆.,,,,,USB设备接口剖析[J].,,,,,北京市计划劳动管理干部学院学报,2005,(01). [6],,,,,向丽萍,,,,,,熊文龙.,,,,,Windows环境下USB驱动程序的开发[J].,,,,,,,,,,交通与计算机,,,,,,2006,(03). [7],,,,,肖踞雄,翁铁成,宋中庆.,,,,,USB,,,,,技术及应用设计[M],,,,,.北京:清华大学出版社.2003:76-78. [8,刘俊涛,原亮.,,,,,WDM模式下USB,,,,,设备驱动程序的设计,J,.计算机工程与设计.2003,24(6):42-45. [9],,,,,荣佳波,,,,,,常明志,,,,,,井科伟,,,,,,杨少勇.,,,,,USB设备的WDM驱动程序设计[J].,,,,,应用科技,,,,,,2004,(03). [10,,,,,],,,,,郭静,刘付火.,,,,,Windows,,,,,WDM,,,,,USB,,,,,设备驱动程序的开发[J],,,,,.,,,,,国外电子测量技术,2004,,,,,,(3),,,,,. [11],,,,,黄正瑾.,,,,,在系统可编程技术及其应用.,,,,,南京:,,,,,东南大学出社,1999:22-25. [12],,,,,龚义建,,,,,,焦启民.,,,,,通用串行总线USB的特点与应用[J].,,,,,高等函授学报(自然科学版),,,,,,2003,(03). [13],,,,,吴双力,崔剑,王伯岭.,,,,,,,,,,AVR-GCC与AVR单片机C语言开发.,,,,,,,,,,北京航空航天大学出版社.2004:10-17. [14],,,,,马潮,詹卫前,耿德根等.ATmega8原理机及应用.,,,,,清华大学出版社.2002:101-104. [15],,,,,王田苗.,,,,,嵌入式系统设计与实例开发[M].,,,,,北京:清华大学出版社:2002:2-5. [16],,,,,邵同霞,孙光民.,,,,,嵌入式系统中USB总线驱动的开发及应用[J],计算机应用研究,2002年第12期:93-96. [17],,,,,Don,,,,,Anderson.,,,,,USB体系结构[M].,,,,,北京:中国电力出版社,2001:15-18. [18],,,,,张弘.,,,,,USB接口的设计[M].,,,,,西安:西安电子科技大学出版,2002:17-20. [19],,,,,马伟.,,,,,计算机USB系统原理及其主/从机设计[M].,,,,,北京:北京航空航天大学出版社.2004:12-17. [20],,,,,Jan,,,,,Axelson.USB大全[M],陈逸等译.,,,,,北京:中国电力出版社,2001:21-25. [21],,,,,孙福文.,,,,,基于AVR,,,,,USB接口的温度测量系统下位机设计[J].,,,,,电子元器件应用,,,,,,2008,(11),,,,,. [22],,,,,李川,,,,,,汪秋蒙.,,,,,ISP技术的原理及实现方法[J].,,,,,电子制作,,,,,,2008,(02) [23],,,,,宋晖,,,,,,张华,,,,,,高小明.,,,,,基于USB接口的ISP下载系统设计[J].,,,,,微计算机信息,,,,,,2008,(05). [24],,,,,陈明,,,,,,罗映红.,,,,,一种嵌入式系统USB驱动程序的设计[J].,,,,,太原科技,,,,,,2009,(02),,,,,. [25],,,,,何定洲,,,,,,孙永荣,,,,,,刘建业,,,,,,李荣冰.,,,,,USB接口在嵌入式系统中的开发和应用[J].,,,,,中国科技信息,,,,,,2005,(24). [26],,,,,李玲,周小佳,唐秀辉,闫斌.,,,,,AVR单片机SPI接口设计[J].,,,,,福建电脑,,,,,,2006,(05),,,,,. 附录 本设计电路图: ATmega8测试图片: ATmega16测试图片:
/
本文档为【AVR单片机的USB在线下载器设计及完成[整理版]】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索