1.2.4 单片机开发系统概述
1.开发环境的软硬件构成
当用户目标系统设计完成后,还需要应用软件支持,用户目标系统才能成为一个满足用户要求的单片机应用系统。但该用户目标系统不具备自开发能力,需要借助于单片机仿真器(也称为单片机开发系统)完成该项工作。一个典型的单片机开发环境组成如图1-5所示。
图1-5 单片机开发环境组成图
单片机系统开发环境硬件由PC、单片机仿真器、用户目标系统、编程器和数条电缆组成。软件由PC上的单片机集成开发环境软件和编程器软件构成,前者为单片机仿真器随机软件,后者为编程器随机软件。
单片机仿真器也称为单片机开发系统。单片机仿真器的工作步骤是:取下用户目标系统的单片机芯片(目标系统CPU),把仿真器上的CPU仿真头插入用户目标系统CPU相应的位置,这样就将仿真器中的CPU和ROM出借给了目标系统;PC通过仿真器和目标系统建立起一种透明的联系,程序员可以观察到程序的运行(实际上程序在仿真器中运行)和CPU内部的全部资源情况。也就是说,在开发环境中用户目标系统中的程序存储器是闲置的,我们调试的是仿真器中的程序,仿真器中的程序运行完全受仿真器的监控程序控制。仿真器的监控程序相当于PC的操作系统,该监控程序与PC上运行的集成开发环境相配合,使得我们可以修改和调试程序,并能观察程序的运行情况。
待程序调试完毕,将编程器通过通信电缆连接到PC上,将调试好的程序通过编程器写入单片机芯片(即写入单片机内部的程序存储器),从用户目标系统上拔掉仿真头CPU,即完成了单片机的仿真调试。然后换上写入程序的单片机芯片(目标系统CPU),得到单片机应用系统的运行态,如图1-6所示,也称为脱机运行。由于仿真器的功能差别很大,脱机运行有时和仿真运行并不完全一致,还需要返回仿真过程调试。上述过程有时可能重复多次。
图1-6 单片机应用系统的运行态图
2.单片机的在线编程
通常进行单片机开发时,仿真器和编程器是必不可少的。调试过程需要仿真器,仿真、调试完的程序需要借助编程器烧到单片机内部或外接的程序存储器中。仿真器和编程器价格从几百元到几千元不等,对于一般的单片机爱好者来说,这是一笔不小的开支。另外,在开发过程中,程序每改动一次就要拔下电路板上的芯片,编程后再插上,也比较麻烦。
随着单片机技术的发展,出现了可以在线编程的单片机。这种在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助实现,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS-232口,通过专门设计的固件程序对内部存储器编程。例如,Atmel公司的单片机AT89S252提供一个SPI串行接口,对内部程序存储器编程(ISP),而SST公司的单片机SST89C54内部包含两块独立的存储区,通过预先编程,在其中一块存储区中的程序就可以通过串行口与计算机相连,使用PC上专用的用户界面程序直接下载程序代码到单片机的另一块存储区中。
ISP和IAP为单片机的实验和开发带来了很大的方便和灵活性,也为广大单片机爱好者带来了福音。利用ISP和IAP,不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结束即为成品,甚至可以远程在线升级或改变单片机中的程序。