嵌入式基于Proteus的ARM虚拟开发

 

嵌入式基于ProteusARM虚拟开发

嵌入式基于ProteusARM虚拟开发方法有两种:一种是用ADS编译环境与Proteus 结合,另一种是Keil for ARM ,也就是用Keil uVsion 3软件和Proteus结合。

 

 

基于ProteusADSARM虚拟实验室建设

1  引言

  现在 ?:LeF\wc ,人们生活中的每个角落都有嵌入式设备的存在 ?:LeF\wc ,比如数码相机、移动电话、TV机顶盒及掌上电脑等等。这些嵌入式设备多采用32RISC嵌入式处理器作为核心部件。 ?:LeF\wc  

        其中基于ARM核的嵌入式处理器独占鳌头 ?:LeF\wc ,32RISC处理器中占据超过75%的市场份额。ARM核嵌入式处理器通常采用C语言编程 ?:LeF\wc ,目前ARM公司的开发工具ADSRealView以及Keilarm核处理器结合较好 ?:LeF\wc ,得到了广大嵌入式学习者的一致认可。 ?:LeF\wc  

在传统的嵌入式系统学习中 ?:LeF\wc ,嵌入式开发平台是必不可少的。其中资源少的开发平台便宜但功能较少 ?:LeF\wc ,资源多的开发平台又价格不菲 ?:LeF\wc ,这对广大的嵌入式爱好者无疑是个障碍。然而 ?:LeF\wc ,有没有在不增加甚至降低开发成本的同时还能进行同样或更好的开发呢?本文介绍的Proteus软件就是一个可以完全脱离硬件平台来学习嵌入式系统进行虚拟开发的利器 ?:LeF\wc ,可以说是嵌入式系统学习的一次革命。 ?:LeF\wc  

  1 Proteus简介 ?:LeF\wc  

  Proteus软件是英国Labcenter electronics公司的EDA工具软件 ?:LeF\wc ,是一个电子设计的教学平台、实验平台和创新平台 ?:LeF\wc ,涵盖了电工电子实验室、电子技术实验室、单片机应用实验室等的全部功能。 ?:LeF\wc  

  其革命性的功能是将电路仿真和微处理器仿真进行协调 ?:LeF\wc ,直接在基于原理图的虚拟原型上进行处理器编程调试 ?:LeF\wc ,并进行功能验证 ?:LeF\wc ,通过动态器件(如电机、LEDLCD、开关等) ?:LeF\wc ,配合系统配置的虚拟仪器(如示波器、逻辑分析仪等) ?:LeF\wc ,可实时看到运行后的输入输出的效果 ?:LeF\wc ,其主要特点如下: ?:LeF\wc  

  (1)可以仿真、分析各种模拟器件和集成电路 ?:LeF\wc ,其支持Pillips公司系列的armLPC系列) ?:LeF\wc ,Proteus的仿真是基于SPICE3F5 ?:LeF\wc ,因此它也能像其它的EDA软件那样进行电路分析 ?:LeF\wc ,如模拟分析、数字分析、混合信号分析、频率分析等等; ?:LeF\wc  

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

  (3)能够进行SCH(原理图)PCB(印刷板)电路的设计; ?:LeF\wc  

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

  2  Proteus环境下的系统设计与仿真 ?:LeF\wc  

  ProteusPROTELEWB等软件相似 ?:LeF\wc ,绘制原理图都要先从器件库里取出所需的元器件符号并在绘图区布局好 ?:LeF\wc ,同时编辑好元件的参数 ?:LeF\wc ,接着进行连线 ?:LeF\wc ,添加必要的网络标号等步骤。下面通过一个简单的实例说明如何使用Proteus软件实现arm(以LPC2124为例)系统设计与仿真。实例以 LPC2124控制器为核心 ?:LeF\wc ,L297L298组成步进电机控制器 ?:LeF\wc ,添加必要的外围电路 ?:LeF\wc ,实现对步进电机的正、反转控制。 ?:LeF\wc  

  2.1 电路原理图的设计 ?:LeF\wc  

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

?:LeF\wc  

1  Proteus主窗口 ?:LeF\wc  

?:LeF\wc  

2 电路原理图 ?:LeF\wc  

arm仿真注意设置:1.Proteusdesign -> configure -> new -> name:1.8V -> unconnected:1.8V -> ADD -> 3.3V同理 > OK.

 

ADS 中要设置的是:

设置编译选项并编译:
 1.
Edit->DebugRel
 Settings..->Target Settings->Post-linker里选择 ARM fromELF

 ->设置ARM Linker->Output->RO Base
  ->设置Options->Image entry point
  ->ARM fromELF->Output format里选Inetl 32 bit Hex
 ->Output file name里填stepper.hex,这个反正后缀是hex就行,生成proteus能仿真的hex文件

//总结:PROTEUS仿真一下。发现ADS生成的烧录文件默认为.BIN格式的,而PROTEUS是只能用.HEX或者.ELF文件进行仿真的。Output File name设置为 “File.hex”,其中的FileName可以按照你自己意愿去设置,但是后面的.hex一定要加上,不然生成的文件就是.I32格式的文件,而不是可以用于PROTEUS仿真的.HEX文件。

 

2.2 程序代码的编写 ?:LeF\wc  

  程序代码的编写主要分四个部分进行: ?:LeF\wc  

  (1) LPC2124的初始化代码; ?:LeF\wc  

  (2) LPC2124异常向量入口及异常向量与C语言代码的接口 ?:LeF\wc ,包括初始化堆栈的代码; ?:LeF\wc  

  (3) LPC2124目标板特殊的代码 ?:LeF\wc ,包括异常处理程序和目标板初始化程序; ?:LeF\wc  

  (4) 根据我们实例要求 ?:LeF\wc ,结合原理图 ?:LeF\wc ,编写实现预期功能的代码 ?:LeF\wc ,即通常的执行代码 ?:LeF\wc ,代码文件保存为“main.c”。 ?:LeF\wc  

  通常 ?:LeF\wc ,为了节省开发者的时间 ?:LeF\wc ,通常把这些文件保存在一个文件夹里 ?:LeF\wc ,暂且把文件夹命名为“lpc2124模块” ?:LeF\wc ,这样在以后的程序代码编写时就可以直接调用这个模块 ?:LeF\wc ,再根据不同的要求改写“main.c”就行了 ?:LeF\wc ,而不必要又重新编写这些程序 ?:LeF\wc ,节省了大量时间 ?:LeF\wc ,大大提高了工作效率。 ?:LeF\wc  

  这里主要说明“main.c”的编写 ?:LeF\wc ,要实现的功能是用LPC2124控制器、LP297L298组成的步进电机控制器 ?:LeF\wc ,控制步进电机的运转 ?:LeF\wc ,原理图中可以看到各元器件引脚的连接 ?:LeF\wc ,图中还设置了七个电压探针 ?:LeF\wc ,用数字图表显示各电压节点的电平随时间变化的曲线。KEY键控制电机的正反转(KEY键按下则电机反转)。程序流程图如图3所示。根据程序流程图编写好执行代码文件“main.c”。 ?:LeF\wc  

?:LeF\wc  

3 程序流程图 ?:LeF\wc  

?:LeF\wc  

4  ADS编译环境窗口  ?:LeF\wc  
2.3
仿真 ?:LeF\wc  

  文中采用ADS集成开发环境进行程序的编译连接设置 ?:LeF\wc ,ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具 ?:LeF\wc ,英文全称为ARM Developer Suite ?:LeF\wc ,成熟版本为ADS1.2ADS1.2支持ARM10以前的所有arm系列微控制器 ?:LeF\wc ,支持软件调试 ?:LeF\wc ,支持汇编、CC++源程序 ?:LeF\wc ,具有编译效率高、系统库功能强等特点。 ?:LeF\wc  

  打开ADS1.2集成开发环境CodeWarrior for ARM ?:LeF\wc ,点击New Project name建立一个新的工程lcd.mcp ?:LeF\wc ,把以上编好的代码文件全部添加进工程 ?:LeF\wc ,如图4所示。进行相关设置后 ?:LeF\wc ,选择ProjectMake命令 ?:LeF\wc ,编译并连接工程 ?:LeF\wc ,生成stepper.hex文件。 ?:LeF\wc  

  在原理图中右击微控制器LPC2124 ?:LeF\wc ,再单击 ?:LeF\wc ,出现一属性设置窗口Edit Component ?:LeF\wc ,如图5。在其中的Program File中添加上面生成的stepper.hex文件的路径 ?:LeF\wc ,单击OK完成设置。 ?:LeF\wc  
点击原理图左下角中的运行按钮 ?:LeF\wc ,即开始仿真运行。 ?:LeF\wc  

        仿真结果如图6所示。数字图表显示各电压节点的电平值随时间变化的曲线 ?:LeF\wc ,步进电机按要求运行 ?:LeF\wc ,按下KEY键电机反转。仿真结果完全符合设计要求。 ?:LeF\wc  

?:LeF\wc  

 

~~~~~基于ProteusKeil uVsion 3ARM虚拟实验~~~~~~

ARM 项目中,是在ADS 编译环境下开发的,而ADS 最大的缺点就是调试功能少,经常出现莫名其妙的问题,但Kei 编辑器现在不仅支持ARM7ARM 9等等版本。也就是ARM for ARM ,它的版本在不断的更新,对于Keil 对于ARM9,ARM10的支持,以及Keil 编译环境简单易用,所以选择Keil RV&RTL是大势所趋。//在"下载"说明书见附件:《keil for ARM 软件应用说明书》

 

Proteus 6.9for ARM7调试攻略

       1.安装好Proteus 6.9 SP4,需要用Keil for ARM的或IAR的同样需要安装好。

        2.安装Proteus VSM Simulator驱动(可以在官方网站上下载到)KeilVdmagdi.exe,IARVdmcspy.exe

        3.将附件中的Prospice.dllLicence.dll文件Copy..\bin目录下,MCS8051.dllARM7TDMI.dll文件拷贝到..\MODELS目录下。分别替换原有的文件。

        4.打开原理图模型和程序。记得要在ISIS中选"Use Remote Debug Monitor"。在Keil for ARM中选择"roteus VSM Simulator

IAR的设置: Debugger-->Setup-->Drver-->Third-Party Driver,然后在Third-Party Driver中指向Vdmcspy.dll文件。

        5.IDE中点击Debug进入仿真模式。一个精彩的Proteus for ARM时代来临。

   

 

     

 

 

 

 

                                    by: lanKK

                                  (转载与整理)

                                  -2009.3.29

投 票

觉得本文不错,投一票   

评 论


验证码: 看不清?换一张