单片机原理与嵌入式系统设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2 单片机嵌入式系统开发的软硬件环境

3.2.1 单片机嵌入式系统开发的软硬件环境构成

当用户目标系统设计完成后,还需要应用软件支持,用户目标系统才能成为一个满足用户要求的单片机嵌入式系统。但该用户目标系统不具备自开发能力,需要借助于单片机仿真器(也称单片机开发系统)完成该项工作。一个典型的单片机嵌入式系统开发环境组成如图3.2所示,单片机嵌入式系统开发环境硬件由PC、单片机仿真器、用户目标系统、编程器和数条连接电缆组成。软件由PC上的单片机集成开发环境软件和编程器软件构成,前者为单片机仿真器随机软件,后者为编程器随机软件。

图3.2 单片机系统开发环境组成

单片机仿真器也称单片机开发系统。单片机仿真器的工作步骤是:取下用户目标系统的单片机芯片(目标系统CPU),把仿真器上的CPU仿真头插入用户目标系统CPU相应的位置,这样就将仿真器中的CPU和ROM出借给了目标系统;PC通过仿真器和目标系统建立起一种透明的联系,程序员可以观察到程序的运行(实际上程序在仿真器中运行)和CPU内部的全部资源情况,也就是说,在开发环境中用户目标系统中的程序存储器是闲置的。我们调试的是仿真器中的程序,仿真器中的程序运行完全受仿真器的监控程序控制。仿真器的监控程序相当于PC的操作系统,该监控程序与PC上运行的集成开发环境相配合,使得我们可以修改和调试程序,并能观察程序的运行情况。

待程序调试完成后,将编程器通过通信电缆线连接到PC,将调试好的程序通过编程器写入单片机芯片(即写入单片机内部的程序存储器)或目标系统上的程序存储器,从用户目标系统上拔掉仿真头CPU,即完成了单片机的仿真调试,然后换上写入程序的单片机芯片(目标系统CPU),得到单片机嵌入式系统的运行态如图3.3所示,也称为脱机运行。由于仿真器的功能差别很大,脱机运行有时和仿真运行并不完全一致,还需要返回仿真过程调试。上述过程有时可能要重复多次。

开发环境要求的各种配置如下。

① PC,目前市售的计算机配置都满足要求。

② 操作系统应使用Windows 95/98/ME/NT/2000/XP或更高版本。

③ 单片机仿真器及相应的配件,包括通信电缆、仿真电缆、电源等。

④ 在PC上运行的单片机仿真器集成开发环境软件。

⑤ 汇编或编译软件,将汇编语言或高级语言源程序翻译为浮动的目标代码。

⑥ 连接定位器软件,把多个浮动的目标代码在单片机程序空间做定位控制。

⑦ 编程器,一种把单片机运行文件写入EPROM/E2PROM/Flash E2PROM/CPU的工具。

单片机仿真器在开发环境中出借CPU和程序存储器到用户目标系统,调试完成后通过编程器把程序固化到程序存储器,插入目标系统,同时插入目标系统CPU,即可得到单片机嵌入式系统的运行态。

编程器的功能是把调试好的目标代码写入单片机的片内(外)程序存储器里面,把写好后的芯片插到用户目标板上进行脱机(脱离仿真器)运行,如未达到用户要求,则要重新返回仿真阶段查找软件或硬件的原因。这个过程可能要重复多遍。

图3.3 单片机嵌入式系统的运行态

3.2.2 单片机嵌入式系统开发工具选择原则

在单片机嵌入式系统研制中,仿真器是一个重要的辅助开发工具,因此,有必要选择一个好的仿真调试工具,满足做产品开发的用户对目标机仿真调试的要求,并且使用方便可靠。

选择仿真器要求如下:

全地址空间的仿真;

不占用任何用户目标系统的资源;

必须实现硬断点,并且具有灵活的断点管理功能;

硬件实现单步执行功能;

可跟踪用户程序执行;

可观察用户程序执行过程中的变量和表达式;

可中止用户程序的运行或用户程序复位;

系统硬件电路的诊断与检查;

支持汇编和高级语言源程序级调试。

3.2.3 使用JTAG界面单片机仿真开发环境

JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口有4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件的分别测试。现在,JTAG接口还常用于实现ISP(In-System Programmable,在系统编程),对单片机内部的Flash E2PROM等器件进行编程。

JTAG编程方式是在线编程,这种方式不需要编程器。传统生产流程中的先对芯片进行预编程、现装配的方式,因此而改变。简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快了工程进度。

新一代的单片机芯片内部不仅集成了大容量的Flash E2PROM,芯片还具有 JTAG接口,可接JTAG ICE仿真器,PC提供高级语言开发环境(Windows),支持C语言及汇编语言,不仅可以下载程序,还可以在系统调试程序,具有调试目标系统的所有功能,开发不同的单片机系统只需更换目标板。JTAG仿真开发环境如图3.4所示。

在JTAG单片机仿真开发环境中,JTAG适配器提供了计算机通信口到单片机JTAG接口的透明转换,并且不出借CPU和程序存储器给应用系统,使得仿真更加贴近实际目标系统。单片机内部已集成了基于JTAG的协议调试和下载程序。

3.2.4 单片机的在线编程

通常进行单片机开发时,编程器是必不可少的。仿真、调试完的程序,需要借助编程器烧到单片机内部或外接的程序存储器中。普通的编程器价格从几百元到几千元不等,对于一般的单片机爱好者来说,这是一笔不小的开支。另外,在开发过程中,程序每改动一次就要拔下电路板上的芯片编程后再插上,也比较麻烦。

图3.4 JTAG单片机仿真开发环境

随着单片机技术的发展,出现了可以在线编程的单片机。这种在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS-232口,通过专门设计的固件程序对内部存储器编程。例如,Atmel公司的单片机AT89S8252提供了一个SPI串行接口,对内部程序存储器编程(ISP),而SST公司的单片机SST89C54内部包含了两块独立的存储区,通过预先编程在其中一块存储区中的程序就可以通过串行口与计算机相连,使用PC上专用的用户界面程序直接下载程序代码到单片机的另一块存储区中。

ISP和IAP为单片机的实验和开发带来了很大的方便和灵活性,也为广大单片机爱好者带来了福音。利用ISP和IAP,不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结束即为成品,甚至可以远程在线升级或改变单片机中的程序。