恭喜你:选择了正确的AVR学习资料AVR单片机系统设计与开发工具本章将在介绍单片机嵌入式系统设计开发基础知识之后,重点介绍和讲述本书推荐和使用的一套采用ATMEL公司的AVRStudio配合C高级语言的软件开发平台-------CodeVisionAVR(简称CVAVR)所构成的开发软件环境,以及一套简易、开放的,集下载编程、实验和开发一体的多功能AVR-51实验板。单片机嵌入式系统开发过程1.确定系统设计的任务要充分了解对系统的技术要求、使用的环境状况以及使用人员的技术水平。明确任务,确定系统的技术指标,包括系统必须具有那些功能等。这是系统设计的出发点,它将贯串于整个系统设计的全过程,也是产品设计开发工作成败、好坏的关键,因此必须认真做好这项工作。2.系统方案设计单片机芯片的选择。外围电路芯片和器件的选择。综合考虑软、硬件的分工与配合。3.硬件系统设计4.系统软件设计编写5.系统调试通常在编制程序前应对系统要实现的功能、硬件系统的结构和电路、系统中使用的单片机和外围器件进行全面仔细和深入的了解,对系统软件的结构进行全面和完整的设计,编制程序流程图。系统程序的设计应实现结构化、模块化、子程序化,这不仅便于调试,还便于修改。要特别注意的是,设计编写嵌入式系统的软件同编写其它类型的软件程序有较大的区别。由于嵌入式系统是直接面对硬件、控制对象的,因此,设计编写嵌入式系统的程序需要考虑更多的硬件细节,要掌握和使用很多软件技巧,要多学习、多实践。如,嵌入式系统程序的设计要仔细地考虑和划分程序存储器、数据存储器;合理定义、安排和使用各种变量;尽量使用字节变量和位标志变量,优化程序,节省内存容量;估算子程序调用和嵌套的最大级数,预留出足够的堆栈的空间等等。单片嵌入式系统的开发工具与环境一、单片嵌入式系统的程序设计语言单片机嵌入式系统所用的程序设计语言可分为三类:机器语言、汇编语言和高级语言。1.机器语言机器语言是完全面向芯片的语言,由二进制码“0”和“1”组成。二进制代码文件(.bin或.hex)2.汇编语言汇编语言是一种符号化的语言,它使用一些方便记忆特定的助记符(特定的英文字符)来代替机器指令。采用汇编语言开发系统程序的优点:能够全面和深入的理解单片机硬件的功能,充分发挥单片机的硬件特性。汇编语言编写的程序可读性、可移植性和结构性都较差。采用汇编语言编开发单片机应用系统程序比较麻烦,调试和排错也比较困难,产品开发周期长,同时要求软件设计人员要具备相当高的能力和经验。3.高级语言高级语言是一种“基本”不依赖硬件的程序设计语言。由于高级语言具有面向问题或过程,其形式类似自然语言和数学公式,结构性、可读性、可移植好的特点,所以为了提高编写系统应用程序的效率,改善程序的可读性和可移植性,缩短产品的开发周期,采用高级语言来开发单片机系统已成为当前的发展趋势。在设计开发单片嵌入式系统的系统软件过程中,总是要同硬件打交道,而且关联是比较密切的,其软件设计有着自己独特技巧和方法。因此,那些纯软件出身的软件工程师,如果没有硬件的基础,没有经过一定的学习和实践,可能还写不好,甚至写不了单片嵌入式系统的系统软件。作为一个有经验的单片嵌入式系统开发人员,应能同时掌握和使用汇编语言和高级语言设计系统程序。概括起来说,基于高级语言开发单片机系统具有语言简洁,使用方便灵活,可移植性好,表达能力强,可进行结构化程序设计等优点。对于开发大型和复杂的嵌入式系统来讲,采用高级程序设计语言进行系统开发的效率比使用汇编语言高几倍甚至几十倍。但对于小型、简易的系统,或有定时精确,高测量精度要求的系统,使用汇编语言则具有优势。在许多情况下,采用高级语言嵌入汇编程序的软件设计技术往往是最有效的方法。如果你对单片机的内部结构和汇编语言根本不了解,请先不要用C语言编程。如果你对单片机的内部结构和汇编语言根本不了解,也写不出好的单片机的C程序。二.单片嵌入式系统的开发软件平台好的单片嵌入式系统的开发软件通常具备以下几个重要的功能:单片机系统程序编写和运行代码的生成。(编辑、编译功能)嵌入式系统开发平台支持用户采用专用汇编程序设计语言或高级程序设计语言(C、Basic等)编写嵌入式系统控制程序的源代码,并将源代码编译连接生成可在单片机中执行的二进制代码(Hex、Bin)。软件模拟仿真提供一个纯软件的仿真环境,在此环境的支持下,单片机的系统程序可以进行模拟的运行,以实现第一步的软件调试和排错功能。在线仿真功能与专用的仿真器配合,提供一个硬件在线的实时仿真调试环境。用户将编写好的目标系统运行代码下载到仿真器中,通过开发系统软件控制仿真器中程序的运行,同时观察硬件系统的运行结果,分析、调试和排除系统中存在的问题。程序下载烧入功能与专用的编程器配合或使用ISP技术,将二进制运行代码写入到单片机的程序存储器中要熟练掌握和应用单片机来设计开发嵌入式系统,除了对所使用的单片机要有全面和深入的了解外,配备和使用一套好的开发环境和开发平台也是必不可缺的。在嵌入式系统的设计开发中,选用了好的开发工具和开发平台,往往能加速嵌入式应用系统的研制开发、调试、生产和维修,起到事半功倍的效果。单片嵌入式系统的硬件开发工具单片机来设计开发嵌入式系统的过程中,应配备两种硬件设备:仿真器是用于对所设计嵌入式系统的硬软件进行调试的工具。编程烧入器的作用则是将系统执行代码写入到目标系统中。调试(Debug)是系统开发过程中必不可少的环节。在嵌入式系统开发过程中,经常采用的调试方法有三种方式:软件模拟仿真调试(Simulator)实时在板仿真调试(OnBoardDebug)实时在片仿真调试(OnChipDebug)1.软件仿真器软件仿真器也称为指令集模拟器(ISS),其原理是用软件来模拟CPU处理器硬件的执行过程,包括指令系统、中断、定时计数器、外部接口等等。用户开发的嵌入式系统软件,就像已经下装到目标系统硬件一样,载入到软件模拟器中运行,这样用户可以方便对程序运行进行控制,对运行过程进行监视,进而达到实现调试的目的。是一种非实时性的仿真调试手段。软件仿真器的优点:是它可使嵌入式系统的软件和硬件开发并行开展。只要硬件设计工作完成后,不管硬件实体如何,就可以进行软件程序的编写和调试了。应用程序在结构上、逻辑上的错误能够利用软件仿真器很快的发现和定位。有些与硬件相关的故障和错误也能在软件仿真器中被发现。使用软件仿真器不仅可以缩短产品开发周期,而且非常经济,不需要购买昂贵的实时仿真设备。使用软件仿真器的缺点:其模拟的运行速度比真正的硬件慢的多,一般要慢10~100倍。另外软件仿真器只能模拟仿真软件的正确性,仿真与时序有关,查找同硬件有关的错误比较困难。AVRStudio中就包含一个功能非常强大的软件仿真器。能够实现汇编级和高级语言级的软仿真功能。一些针对AVR开发的平台,如IAR、BASCOM中也都包含自己的软件仿真器。BASCOM的软件仿真器提供了模拟实物图形化界面,将一些标准化的外围器件如字符LCD模块、键盘模块等作为实物显示在屏幕上,用户能够更加直观的看到系统运行的结果,使用非常方便。2.实时在板仿真器(ICE)实时在板仿真器通常称为在线仿真ICE(InCircuitEmulate),它是最早用于开发嵌入式系统的工具。ICE是实际是一个特殊的嵌入式系统,一般是由专业公司研制和生产。它的内部含有一个具有“透明性”和“可控性”的MCU,可以代替被开发系统(目标系统)中的MCU工作,既用ICE的资源来仿真目标机。因此,ICE实际上是内部电路仿真器,它是一个相对昂贵的设备,用于代替微处理器,并植入微处理器与总线之间的电路中,允许使用者监视和控制微处理器所有信号的进出。因此,这种仿真方式和设备,更准确的讲应该称为实时在板仿真(OnBoardDebug)器。ICE仿真器一般使用串行口(COM口或USB接口)或并行口(打印机口)同PC机通信,并提供一个与目标机系统上的MCU芯片引脚相同的插接口(仿真口)。使用时,将目标机上的MCU取下,插上仿真器的仿真口,仿真器的通信口与PC连接在PC上需要安装与该仿真器配套使用的专用调试系统软件,用户在该调试系统中,就可以通过PC机来控制仿真器中程序的运行,同时观察系统外围器件和设备的运行结果,分析、调试和排除系统中存在的问题。这种运行调试方法称为在线(板)仿真。仿真开发系统通常具有的一些基本功能为:可控性。可以根据调试的需要,控制目标程序的运行方式,如单步、连续、带断点等多种运行方式透明性。能对MCU的各个部分进行监控,如查看和设置内存单元、寄存器、I/O的数据。仿真开发系统都必须配备一套在PC机上运行的专用仿真开发软件系统,用以配合和实现仿真器的在线仿真调试工作。因此嵌入式系统的开发人员,除了要掌握单片机和嵌入式系统的应用和设计能力,还应熟练地掌握和使用仿真器和仿真系统软件。3.实时在片仿真器新型的芯片在片内集成了硬件调试接口。(IEEE1149.1标准的JTAG)JTAG硬件调试接口的基本原理:采用了一种原应用于对集成电路芯片内部进行检测的“边界扫描”技术实现的。使用该技术,当芯片在工作时,可以将集成电路内部的各个部分的状态以及数据,组成一个串行的移位寄存器链,并通过引脚送到芯片的外部。所以通过JTAG硬件调试接口,用户就能了解芯片在实际工作过程中,各个单元的实际情况和变化,进而实现跟踪和调试。JTAG硬件调试接口采用4线的串行方式传送数据,占用MCU的引脚比较少。采用JTAG硬件调试接口进行仿真调试也是实时的在线调试。不同的是,采用这种方式的调试不需要将芯片取下,用户得到的运行数据就是芯片本身运行的真实数据,所以这种调试手段和方式称为实时在片调试(OnChipDebug),并正在替代传统的实时再板仿真调试(OnBoardDebug)技术。实现实时在片调试的首要条件,是芯片本身要具备硬件调试接口。除此之外,同实时再板仿真调试一样,也需要一个专用的实时在片仿真器(采用JTAG硬件调试口的,称为JTAGICE),不过同实时再板仿真器相比,它的价格就便宜。使用实时在片仿真器进行系统调试时,其系统的组成和连接方式与使用实时再板仿真器类似。JTAG仿真器一般也是使用串行口(COM口或USB接口)或并行口(打印机口)同PC机通信,不同之处在于,另一端的接口是直接与目标机系统上MCU芯片的JTAG引脚连接,不需要将芯片从系统上取下。4.编程烧入器编程烧入器也称为程序烧入器或编程器,它的作用是将开发人员编写生成的嵌入式系统的二进制运行代码下载(写入)到单片机的程序存储器中。万用编程器,它不仅可以下载运行代码到多种类型和型号的单片机中,还可以对EPROM、PAL、GAL等多种器件进行编程。AVR单片嵌入式系统的软件开发平台AVR单片机提供了一套免费的集成开发平台:AVRStudio()。该软件平台支持AVR汇编程序的编辑、编译、连接以及生成目标代码。同时该软件还内嵌AVRGCC高级语言接口,内含AVR软件模拟器,其仿真调试平台还可以配合ATMEL公司设计推出的多种类型的仿真器,如实时在板仿真器ICE40、ICE50,实时在片仿真器JTAGICE、JTAGICEmkII等,以实现系统的在线的硬件仿真调试功能和目标代码的下载功能。采用高级程序语言C的开发平台有:ICCAVR(/www.imagecraft.com/software)CodeVisionAVR(www.hpinfotech.ro)IARSystems(/www.iar.com)AVRGCC()采用高级程序语言BASIC的开发平台有:BASICAVR()FastAVRBasic()BASCOM-AVR()。AVRStudio和AVRGCC是完全免费的软件ICCAVR、CodeVisionAVR、IARSystem、BASCOM-A