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