基于Proteus的ARM虚拟实验室建设

2009-03-10 09:50
中国教育信息化·高教职教 2009年2期
关键词:虚拟实验室

刘 敏

摘 要:本文提出了一种用Proteus电路仿真软件和常见的ARM应用程序集成开发工具构建ARM虚拟实验室的方法,并通过实例进行了验证。采用虚拟实验的方式,可以脱离硬件平台来学习ARM嵌入式系统,在普通的微机上就能开展ARM实验的设计和验证。虚拟实验可以摆脱传统ARM实验在时间和地点上的限制,降低学习成本,提高学习效率。

关键词:Proteus Arm 虚拟实验室 ADS

中图分类号:TP391.9 文献标识码:B 文章编号:1673-8454(2009)03-0028-03

一、前言

现在,人们生活中的每个角落都有嵌入式设备的存在,比如数码照相机、移动电话、TV机顶盒及掌上电脑等。这些嵌入式设备多采用32位RISC(精简指令集计算机)嵌入式处理器作为核心部件,其中基于ARM(Advanced RISC Machines)核的嵌入式处理器独占鳌头。[1]

目前,基于ARM的嵌入式系统设计已成为很多高校计算机科学与技术、信息工程等专业的必修科目之一。现在高校的ARM实验室基本都是采用相应的硬件仿真设备来构建的,当前这些硬件仿真设备价格相对较高,而且ARM的种类繁多,不可能在一个实验室内包括所有种类的ARM硬件仿真设备,并且硬件设备的维护工作量大,能够开设的实验项目有限,实验课时有限,限制了学习效率。虚拟实验作为传统实验的重要补充,是通过软件对硬件平台进行虚拟仿真,使我们可以脱离硬件平台来学习ARM嵌入式系统,在普通的微机上就能开展ARM实验的设计和验证,达到和硬件调试几乎相同的效果。虚拟实验可以摆脱传统实验时间和地点的限制,降低学习成本,提高学习效率。

二、虚拟实验室的构建

1.所用软件介绍

(1)电路分析与实物仿真软件——Proteus

Proteus是由英国Labcenter electronics公司开发的电路分析与实物仿真软件,是一种EDA(电子设计自动化)工具软件,也是非常适合ARM嵌入式设计仿真与开发的软件。其主要特点如下:

1)可以仿真、分析各种模拟器件、数字器件和集成电路,支持主流单片机系统的仿真。目前支持的单片机类型有:ARM(LPC系列)、68000系列、8051系列、AVR系列、PIC系列、Z80系列、HC11系列等,以及各种外围芯片。Proteus的仿真是基于SPICE3F5(Simulation Program with Integrated Circuit Emphasis)的,因此它也能像其它的EDA软件那样进行电路分析,如模拟分析、数字分析、混合信号分析、频率分析等等;

2)提供了虚拟示波器、逻辑分析仪、信号发生器、计数器、电表、Virtual Terminal等虚拟仪器仪表供选择;

3)能进行SCH(原理图)和PCB(印刷板)电路的设计;

4)其自身只带汇编编译器,不支持C语言。但可以将它与ADS、RealView、Keil等集成开发环境连接,将用汇编和C语言编写的程序编译好之后,可以立即进行软、硬件结合的系统仿真,达到很好的仿真效果。[2]

Proteus能完整地仿真I/O口、中断、定时器、通用外设接口,以及其他与微处理器有关的外设,甚至能仿真多个微处理器。其革命性的功能是将电路仿真和微处理器仿真进行协调,即它能把编译好的目标代码加载到微处理器芯片中,并与该处理器的任何模拟和数字器件协同仿真。直接在基于原理图的虚拟原型上进行处理器编程调试,并进行功能验证,通过虚拟动态器件(如电机、发光二级管、液晶显示器、开关等),配合系统配置的虚拟仪器(如示波器、逻辑分析仪等),可实时看到运行后的输入输出效果,仿真执行目标代码就像在真正的嵌入式系统上运行一样。

(2)常见的ARM应用程序集成开发工具

ARM核嵌入式处理器通常采用C语言编程,目前ARM公司的开发工具ADS、RealView、Keil与ARM核处理器结合较好,得到了广大嵌入式学习者的一致认可。还有其他公司针对ARM的一些开发工具得到广泛应用,例如瑞典IAR System公司推出的IAR EWARM就是一款非常有用的针对ARM处理器的集成开发工具。

ADS(ARM Developer Suite)可能是目前较常用的ARM集成开发工具,它是ARM公司的产品。其中的CodeWarrior for ARM是一套完整的集成开发工具,充分发挥了ARM RISC的优势,使产品开发人员能够很好地应用尖端的片上系统技术。该工具是专为基于ARM RISC的处理器而设计的。它可加速并简化嵌入式开发过程中的每一个环节,使得开发人员只需通过一个集成软件开发环境就能研制出ARM产品。在整个开发周期中,开发人员无需离开CodeWarrior开发环境,节省了在操作工具上花的时间,从而有更多的精力投入到代码编写上来。CodeWarrior集成开发环境(IDE)为管理和开发项目提供了简单、多样化的图形用户界面。用户可以使用ADS的CodeWarrior IDE为ARM和Thumb处理器开发用C、C++或ARM汇编语言编写的程序代码,还可以生成程序代码的十六进制文件。[3]

2.虚拟实验室的构成和虚拟实验的步骤

Proteus仿真软件和常用的ARM应用程序集成开发工具分别都可以配合构成ARM虚拟实验室。

不同的ARM应用程序集成开发工具的功能和用法都很类似,一般在PC机上即可完成对ARM应用程序的编辑、编译、汇编、链接等工作。传统的调试工作一般需要配合其他的模块或产品比如硬件仿真器及其外围电路方可完成,而用本文介绍的Proteus软件对ARM微处理器及其外围电路虚拟仿真后,在PC机上即可完成整个调试过程,就像在真正的硬件设备上调试一样。

虚拟实验主要分为三大步骤:第一步,用Proteus仿真软件设计完成实验所需的硬件原理虚拟仿真电路;第二步,用ARM应用程序集成开发工具完成对实验所需ARM应用程序的编辑、编译、汇编、链接等工作,从而得到Hex目标文件;第三步,把Hex目标文件加载到Proteus中虚拟仿真电路的ARM微处理器上,进行软、硬件联合仿真调试。

3.虚拟实验内容

用Proteus仿真软件和ARM应用程序集成开发工具构成的虚拟实验室,可以完成所有的ARM软件实验和绝大多数的ARM7硬件仿真实验。例如中断、流水灯、串口通信、SPI通信、脉宽调制器、看门狗、A/D转换器、定时等实验。

三、虚拟实验的实例

本文选用Proteus和ADS为例说明进行虚拟实验的方法。选用Proteus和其它ARM应用程序集成开发工具进行虚拟实验的方法类似。

本例以ARM7处理器LPC2106设计一个计数器,外接两位七段数码管显示当前计数值,一个按键KEY1为加1键,另一个按键KEY2为减1键。本例虽然简单,但其开发过程和调试方法却具有代表性。

1.计数器原理电路图

运行Proteus VSM的ISIS(链接状态路由协议)后出现主窗口界面,点击File→New Design新建一个设计项目。接下来添加其中所需的元器件,点击元器件添加按钮P会弹出Pick Devices对话框,在其中选择需要添加的元器件,添加到器件列表区中。然后再依次点击列表区里的元器件,把它们放到绘图区并编辑其属性,接着进行合理的布局后,就可以进行连线了。与PROTEL类似,Proteus也具有自动捕捉节点和自动布线功能,连线时当鼠标的指针靠近一个对象的引脚时,跟着鼠标的指针就会出现一个“×”提示符号,点击鼠标左键即可画线,在终点再点击确认一下就完成一段导线,所有导线画完后,点击电源按钮,添加必要的电源和接地符号,并编辑其属性后,计数器的原理图就绘制完成了。[4] 如图1所示。

2.软件程序

打开ADS1.2集成开发环境CodeWarrior IDE,点击Project→New Project建立一个新的工程counter.mcp,把编写好的代码文件main.c放在工程counter路径下,并把main.c及counter路径下的config.h、LPC2106.h、Startup.s、IRQ.s、target.c和target.h文件全部添到counter工程中。设定好文件的输出格式(.hex),设置工程的工具配置选项后,选择Project→Make命令,编译并链接工程,如果没有错误则生成counter.hex文件。[5]

主要源程序代码如下:

/*文件:main.c。功能:计数器,通过两个按键来控制加减计数,并输出数码管显示*/

#include"config.h"

#define CON 0x000000ff//控制P0.0~P0.7

/*名称:main()。功能:控制计数器加减计数。*/

intmain(void) {

uint16 temp=0;//计数初值预置为0

IODIR=CON;// P0.0~P0.7设置为输出

IOCLR=CON;// P0.0~P0.7输出低电平

while(1) {

if((IOPIN&0x00030000)!=0x00030000)

{

if((IOPIN&0x00030000)==0x00020000)

temp++;//计数值加1

if((IOPIN&0x00030000)==0x00010000)

temp--;//计数值减1

while((IOPIN&0x00030000)!=0x00030000);

IOCLR=CON;// P0.0~P0.7输出低电平

IOSET=temp;// P0.0~P0.7输出计数值

}

}

}

3.联合仿真调试

在Proteus原理图中右击微控制器LPC2106,再单击,出现一属性设置窗口Edit Component,在其中的Program File项中添加上面生成的counter.hex文件的路径,单击OK完成设置。

点击原理图左下角中的运行按钮,即开始仿真运行,数码管显示当前计数值。Proteus为用户提供了一个实时交互的环境,在仿真的过程中每次用鼠标点击KEY1键,数码管显示的计数值加1;点击KEY2键,则减1。整个过程与真实的硬件调试是极其相似的,在动态外设支持下的实时输入和输出为实验者呈现了一个最接近现实的调试环境。如图2所示是计数器仿真运行某时刻的效果图,仿真结果符合设计要求。

Proteus可以总体仿真运行,也可以单步或者设置断点仿真调试。在Proteus中,我们能清楚地观察到ARM系统在工作过程中,各硬件所处实时状态。在仿真过程中,对于连接到每个数字或混合网络上的引脚,用有色小方块显示其状态:蓝色表示低电平,红色表示高电平,灰色表示浮空,黄色表示冲突(如两个器件同时向总线上传送数据)。如果有必要,还可以用Proteus中的虚拟仪器仪表,在实时仿真的同时观测电路参数,测量结果随仿真动态变化并显示。这些功能给用户调试带来了方便,可以随时观察每一步操作所引起的结果。

在Proteus软件中还可以查看各种调试信息,如源代码执行情况、CPU寄存器信息、变量值以及Flash与RAM中的信息等。

四、结束语

实践证明,基于Proteus和ARM应用程序集成开发工具共同构建ARM虚拟实验室的方案是切实可行的。采用虚拟实验的方式,可以脱离硬件平台来学习嵌入式系统,不仅能够解决传统ARM实验室设备资金短缺和维护困难的问题,而且使学生能够充分利用课余时间进行ARM系统的软硬件设计,充分锻炼学生的动手能力。对于ARM开发设计人员,可以使用该方法进行虚拟开发成功之后再进行实际制作,可以提高开发效率,降低开发风险。虚拟实验作为传统实验的重要补充,值得推广。

参考文献:

[1]周润景,袁伟亭.基于PROTEUS的ARM虚拟开发技术[M].北京:北京航空航天大学出版社,2007.

[2]殷苏民.基于Proteus的ARM虚拟开发[J].微计算机信息,2008,24(5-2):127-129.

[3]赵星寒等.ARM开发工具ADS原理与应用[M].北京:北京航空航天大学出版社,2006.

[4]周润景.PROTEUS入门实用教程[M].北京:机械工业出版社,2007.

[5]周润景,袁伟亭,景晓松.Proteus在MCS-51&ARM7系统中的应用百例[M].北京:电子工业出版社,2006.

猜你喜欢
虚拟实验室
虚拟实验室在食品专业仪器分析实验教学中的应用