第4章 AVR单片机系统设计与开发工具
在学习和掌握如何应用单片机来设计和开发嵌入式系统时,除了要对所使用的单片机有全面和深入的了解外,配备和使用一套好的开发环境和开发平台也是必不可缺的。在嵌入式系统的设计开发中,选用了好的开发工具和开发平台,往往能加速嵌入式应用系统的研制开发、调试、生产和维修,起到事半功倍的效果。
国内外许多公司根据不同单片机的性能和特点,研制推出了各种类型的用于开发单片嵌入式系统的单片机开发装置和软件开发平台。不同类型的单片机使用的开发系统是不同的。对同一类型的单片机来讲,也有多种类型和功能的开发装置和开发平台。价格便宜、性能适中的系统在几百元,高性能的开发系统则要数千元到上万元,甚至仅仅一套软件开发平台就要上万元。虽然设计开发一个嵌入式系统,可以选用多家公司、多种类型的单片机,但在决定学习和使用哪种单片机时,应对单片机的性能价格,开发装置和开发平台的性能价格,以及是否方便使用等,几方面做一个综合的评估。
由于AVR单片机的程序存储器采用的是可多次下载的Flash存储器,具有可在线下载(ISP)等的优良特性,给学习和使用都带来极大的方便。
本章将在介绍单片机嵌入式系统设计开发基础知识之后,重点介绍和讲述本书推荐和使用的一套采用ATMEL公司的AVR Studio配合C高级语言的软件开发平台—-CodeVisionAVR (简称CVAVR)所构成的
开发软件环境,以及一套简易、开放的,集下载编程、实验和开发一体的多功能AVR-51实验板。
4.1 单片机嵌入式应用系统设计
4.1.1单片机嵌入式系统开发所需的基础知识和技能
在IT行业,应用系统设计可以分成两大类,一类用于科学计算、数据处理、企业管理、Internet网站建立等;另一类用于工业过程检测控制、智能仪表仪器和自动化设备、小型电子系统、通信设备、家用电器等。
对于前一类的应用系统设计,通常都是基于通用计算机系统和网络的系统开发,硬件设备也是通用的,可以从市场购买,而其主要的工作是软件开发,使用的开发平台以C++、VB、数据库系统、网站建立开发平台等。
而后一类应用系统的设计则同前一类有很大的不同。它涉及的应用系统是一个专用的系统,往往要从零开始。既必须根据实际的需求,从系统硬件的构成设计与实现,到相应的软件设计与实现,两者并重,相辅相成,却一不可。
第二类应用系统的特点是:
z系统功能、要求、性能的多样性和专用性。
z硬件电路和软件设计的不可分割和专一性。
z可靠性高,抗干扰能力强。
z体积小、重量轻、功耗省、投资少。
z开发周期短,见效快。
单片机嵌入式应用系统设计归属于第二类应用系统的范畴。因此,对于从事单片机嵌入式系统设计、开发、学习的电子工程师和专业人员来讲,不仅要熟悉各种电子器件和IC芯片的使用和特性,具备模拟电路、数字电路等各类硬件电路和硬件系统的设计能力,还必须
具有很强的计算机综合应用和软件编程设计能力。
在今天,单片机嵌入式系统的硬件设计、软件编程、系统仿真调试和程序的编程下载,大都是在个人电脑PC的支撑下实现的。因此,单片机嵌入式系统设计开发人员所具备的另一个基本重要的技能就是要熟练掌握和使用个人电脑PC,应具备熟练使用个人电脑PC的基础,具备相应的软件设计编程能力,熟悉相关软件(如Protel、VHDL)的使用,同时对PC机的硬件接口(RS-232串行通信口、LPT并行打印机接口、USB接口等)也要有一定的了解。
早期的单片机系统开发平台是以PC的DOS操作系统为支撑的,但随着PC机的发展,现在的单片机系统开发平台都已经转到以Windows平台支撑的PC上。Windows平台具有的多任务、多窗口性能给单片机嵌入式系统的设计开发带来极大的方便。
当你设计研制的单片机嵌入式系统是一个大型管理控制系统的下位机,或要与Internet或局网中的数据库联网,那么你除了要熟练掌握与单片机有关的硬件(模拟电路、数字电路、单片机等)和软件开发技术外,你还要具备与整个大的系统有关的基础和技术(如,数据库、Internet协议、VB、VC等)。因此,对一个高级电子工程师来讲,他对个人电脑PC的熟练掌握程度,以及软件设计和编程的能力,决不亚于计算机专业的人员,在某些方面比计算机专业的人员要求还高,还要全面。
要具备较高的硬件系统设计开发能力和水平,不是在短期内通过理论和书本的学习就能得以实现的。它需要经过一定时间的学习,并且特别注重理论与实际相结合,要亲自独立的动手去做,去实践,才能打下良好的基础。所以说,不亲自动手实践,你是不可能真正掌握设计开发单片机嵌入式系统技术的。有了良好的基础,有了长期的实践经验,加上紧跟世界半导体器件的最新发展,你才能成为一个真正的电子工程师。
4.1.2单片机嵌入式系统开发过程
对于单片机嵌入式系统的设计与开发来讲,由于涉及对象和要求的多样性和专用性,其硬件和软件结构
有很大差异,但系统设计开发的基本内容和主要步骤是基本相同的。图4-1是单片机嵌入式系统开发过程示意图。
在一个具体的单片机嵌入式系统的设计时,一般需要作以下几个方面的考虑:
1.确定系统设计的任务
在进行系统设计之前,首先必须进行设计方案的调研,包括查资料、进行调查、分析研究。要充分了解对系统的技术要求、使用的环境状况以及使用人员的技术水平。明确任务,确定系统的技术指标,包括系统必须具有那些功能等。这是系统设计的出发点,它将贯串于整个系统设计的全过程,也是产品设计开发工作成败、好坏的关键,因此必须认真做好这项工作。
上位机软件开发培训2.系统方案设计
在系统设计任务和技术指标确定以后,即可进行系统的总体方案设计,一般包括: (1)单片机芯片的选择。单片机芯片的选择应适合于应用系统的要求。不仅要考虑单片机芯片本身的性能是否能够满足系统的需要,如:执行速度、中断功能、I/O驱动能力与数量、系统功耗以及抗干扰性能等,同时还要考虑开发和使用是否方便、市场供应情况与价格、封装形式等其它因素。
(2)外围电路芯片和器件的选择。仅仅一片单片机芯片是不能构成一个完整的嵌入式系统的。一个典
型的系统往往由输入部分(按键、A/D、各种类型的传感器与输入接口转换电路),输出部分(指示灯、LED显示、LCD显示、各种类型的传动控制部件),存储器(用于系统数据记录与保存),通信接口(用于向上位机交换数据、构成联网应用),电源供电等多个单元组成。这些不同的单元涉及到模拟、数字、弱电、强电以及它们相互之间的协调配合、
转换、驱动、抗干扰等。因此,对于外围芯片和器件的选择,整个电路的设计,系统硬件机械结构的设计,接插件的选择,甚至产品结构、生产工艺等,都要进行全面和细致的考虑。任何一个忽视和不完善,都会给整个系统带来隐患,甚至造成系统设计和开发的失败。
图4-1 单片机嵌入式系统开发过程
(3)综合考虑软、硬件的分工与配合。单片机嵌入式系统中的硬件和软件具有一定的互换性,有些功能可以用硬件实现,也可以用软件来实现,因此,在方案设计阶段要认真考虑软、硬件的分工和配合。采用软件实现功能可以简化硬件结构,降低成本,但软件系统则相应的复杂化,增加了软件设计的工作量。而用硬件实现功能则可以缩短系统的开周期,使软件设计简单,相对提高了系统的可靠性,但可能提高了成本。在设计过程中,软、硬件的分工与配合需要取得协调,才能设计出好的应用系统。
3.硬件系统设计
开发人员在全面了解要设计开发系统所具备的功能和要求,制定出整体的系统设计方案后,接下来就是根据具体的需求和设计方案,选择能可靠实现全部功能的单片机芯片和相应的外围电路器件,设计整个系统的电原理图。原理图设计完成后,还要根据实际需要设计相应的印刷板(PCB)图。这个阶段常使用的软件平台是电子电路CAD软件,如PROTEL等。
单片机嵌入式系统的硬件系统设计是一个综合能力的表现,它全面反映和体现了设计开发人员的所具有的技术水平和创新设计能力。比如说,设计一个具备相同功能的单片机嵌入式系统,如采用传统并行总线扩展外围设备的设计思路,设计出的硬件系统就相对庞大和复杂,因为仅地址线和数据线就有16+8=24根,还需要相应的锁存器和地址译码器等器件,稳定性、抗干扰性都相对差一些。如采用新型
的单片机,CMOS器件,选用串行接口的大容量存储器、AD/DA等器件,就可减少硬件开发的工作量,大大缩短系统设计开发的周期,同时也提高了系统的可靠性。
4.系统软件设计编写
在硬件系统设计的基础上,则要根据系统的功能要求和硬件电路的结构设计和编写系统软件。作为单片机系统软件设计人员,应该具备扎实的硬件功底,不仅是对系统的功能和要求有深入的了解,而且对实现的硬件系统、使用的芯片和外围电路的性能也要很好的掌握。这样才能设计出可靠的系统程序。
一个嵌入式系统的系统软件实际上就是该系统的监控程序。对于一些小型嵌入式系统的应用程序一般采用汇编语言编写。对于中、大型的嵌入式系统,常采用高级语言(如:C语言、Basic语言)来编写。软件设计和编写也是开发嵌入式系统过程中非常重要和困难的任务之一,因为它直接关系到实现系统的功能和系统的性能。
通常在编制程序前应对系统要实现的功能、硬件系统的结构和电路、系统中使用的单片机和外围器件进行全面仔细和深入的了解,对系统软件的结构进行全面和完整的设计,编制程序流程图。系统程序的设计应实现结构化、模块化、子程序化,这不仅便于调试,还便于修改。
要特别注意的是,设计编写嵌入式系统的软件同编写其它类型的软件程序有较大的区别。由于嵌入式系
统是直接面对硬件、控制对象的,因此,设计编写嵌入式系统的程序需要考虑更多的硬件细节,要掌握和使用很多软件技巧,要多学习、多实践。如,嵌入式系统程序的设计要仔细地考虑和划分程序存储器、数据存储器;合理定义、安排和使用各种变量;尽量使用字节变量和位标志变量,优化程序,节省内存容量;估算子程序调用和嵌套的最大级数,预留出足够的堆栈的空间等等。
5.系统调试
当硬件和软件设计好后,就可以进行系统调试了。硬件电路系统调试检查分为静态检查和动态检查。硬件的静态检查主要检查电路制作的正确性,如路线、焊接等。动态检查一般首先要使用仿真系统(对于采用ISP技术的系统可直接)输入各种单元部分的系统调试和诊断程序,检查系统的各个部分的功能是否能正常工作。硬件电路调试完成后可进行系统的软
硬件联调。先将各功能模块程序分别调试完毕,然后组合,进行完整的系统运行程序调试。最后还要进行各种工业测试和现场测试,考验系统在实际应用环境中是否能正常可靠的工作,是否达到设计的性能和指标。
系统的调试往往要经过多次的反复。硬件系统设计的不足、软件程序中的漏洞,都可能是造成系统调试出现问题。系统调试要具备相当水平和实践经验,它全面反映了嵌入式系统设计开发者的水平和能力。
以上各个方面的能力是不能够仅仅通过书本的理论学习就能够掌握的,因此,学习和掌握单片嵌入式系统的设计、开发与应用,要非常注重实际的动手练习,要在学习中实践、在实践中加深学习,只有这样才能不断巩固、加强和深入下去,才能真正的掌握这门技术。
4.2 单片嵌入式系统的开发工具与环境
4.2.1单片嵌入式系统的程序设计语言
在掌握单片机结构和系统设计基础上,根据系统的设计和系统的功能要求就可以编写系统应用程序。掌握程序设计的方法和技术对于嵌入式系统的学习和应用开发具有十分重要的地位。
开发单片机嵌入式系统所用的程序设计语言可分为三类:机器语言、汇编语言和高级语言。
1.机器语言
机器语言是完全面向芯片的语言,由二进制码“0”和“1”组成。在单片机的程序存储器中存放就是以“0”和“1”构成的二进制序列指令字,它是单片机CPU直接识别和执行的语言。用机器语言表示的程序称为机器语言程序或目标程序。如下面一条AVR机器语言代码:0000110000000001
就是将AVR单片机内部的寄存器单元R0和R1的内容相加,结果保存在R0中。
采用机器语言编程不仅难学、难记,而且也不易理解和调试,因此人们不直接使用机器语言来编写系统程序,往往使用汇编语言或高级语言编写程序。不过,无论使用汇编语言还是高级语言来编写系统程序,最终都需要使用相应的开发软件系统(一般在软件开发平台中的都提供编译软件系统)将其编译成机器语言,生成目标程序的二进制代码文件(.bin 或.hex),然后再把目标代码写入(编程下载)单片机的程序存储器中,最后由单片机的CPU 执行。
2.汇编语言
汇编语言是一种符号化的语言,它使用一些方便记忆特定的助记符(特定的英文字符)来代替机器指令。如“ADD”表示加,“MOV”表示传送等。上面的AVR机器指令用汇编语言表示为:ADD R0,R1
用汇编语言编写的程序称为汇编语言程序,显然,它比机器语言易学、易记。但是,汇编语言也是面向机器的,也属于低级语言。由于各种单片机的机器指令不同,每一类单片机的汇编语言也是不同的,如8051的汇编语言同AVR的汇编语言是完全不一样的。
传统开发单片嵌入式系统主要是用汇编语言编写系统程序。学习和采用汇编语言开发系统程序的优点是:能够全面和深入的理解单片机硬件的功能,充分发挥单片机的硬件特性。但由于汇编语言编写的程序可读性、可移植性(各种单片机的机器指令不同)和结构性都较差,因此采用汇编语言编来开发单片机应用系统程序的比较麻烦,调试和排错也比较困难,产品开发周期长,同时要求软件设计人员要具备
相当高的能力和经验。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论