论文部分内容阅读
摘要:嵌入式开发需要良好的软硬件环境,目前ARM公司的开发工具ADS、RealView以及Keil与ARM核处理器结合的较好,但硬件开发平台昂贵。Proteus软件较好的解决了硬件仿真的问题,它支持外围数字电路和模拟电路与处理器协同仿真,可以随意搭建硬件虚拟仿真平台。针对Keil for ARM编译器,结合Proteus软件,以ARM处理器LPC2124介绍了如何构建ARM嵌入式开发平台进行源代码级调试的方法。为嵌入式系统学习提出了一种新的思路和方法。
关键词:ARM;嵌入式系统;虚拟仿真;Proteus;Keill μVision3
中图分类号:TP391文献标识码:A文章编号:1009-3044(2007)16-31098-02
The ARM Virtual Development Based on the Combination of Proteus and Keil
GENG Wen-bo1, QI Xiao-hui2
(1.Dept. of Physics and Electronic Engineering, Zhoukou Normal University,Zhoukou 466000,China;2.Jinan Institute of Semiconductor,Jinan 250014,China)
Abstract:The development of embedded system based on microprocessor needs excellent software and hardware environment. Nowadays, the development tool ADS, RealView and Keil of the ARM Company have a good support for ARM processor, but the hardware is expensive. The problem can be resolved by using software Proteus: We can build a virtual hardware workbench to simulate peripheral digital circuit and analog circuit together with microprocessor depending on our requirement. Combining Keil for ARM IDE and software Proteus, introduce how to build ARM embedded system virtual workbench to debug source code, which is new way to study embedded system.
Key words:ARM;Embedded System;Virtual Simulation;Proteus; Keil μVision3
1 引言
不管是基于单片机的嵌入式开发还是基于ARM的嵌入式开发,嵌入式系统设计是一门实践性很强的学科,没有大量的实践操作是不可能学好这门课的。因此在传统的嵌入式系统学习中,嵌入式开发平台是必不可少的。其中资源少的开发平台便宜但功能较少,资源多的开发平台有价格不菲,很多人无法承受。比起51单片机开发板和实验箱,ARM开发板和实验箱要昂贵得多。而且一般的开发板和实验箱是成品,学习者很难参与到其中的细节中去,动手能力就难以得到训练和提高。英国Labcenter公司推出了适合嵌入式设计仿真的开发平台——Proteus软件。利用它,我们可以随时搭建一个嵌入式应用系统,并对其进行仿真,这样就很很好解决了上述矛盾。
2 Keil与Proteus简介
2.1 Keill μVision3简介
Keil软件公司(现为ARM子公司)是嵌入式开发工具的专业制造商。其产品包括C编译器、宏汇编器、实时内核、调试器、模拟器、集成开发环境以及8051、251、ARM7/ARM9/Cortex-M3和XC16x/C16x/ST10系列微控制器仿真开发工具。Keil μVision2已称为目前国内流行的嵌入式集成开发环境(IDE)。为了更好地支持32位微处理器的开发,Keil又推出了Keil μVision3 IDE。UV3平台的人机交互界面非常友好,而且编译器性能优异,编译出代码的大小、执行速率及系统的稳定性均领先于市场上同类产品。
Keill μVision3针对不同的处理器,包括不同的软件产品,有ARM开发工具、C51开发工具和XC16x/C16x/ST10开发工具和C251开发工具,用户可以根据需要选择。
Keil μVision3具有高效的工程管理的集成开发环境,高速ARM指令/外设模拟器,多种流行编译工具的选择(如C编译器、ADS/RealView编译器和GNU GCC编译器等)和JTAG仿真器ULINK。
2.2 Proteus简介
Proteus是来自英国Labcenter Electronics公司的EDA工具软件。它提供原理图绘制,SPICE仿真与PCB设计功能,这一点与EWB的Multisim和Ultiboard类似,不过它可以仿真微处理器和外围电路,可以仿真ARM7、PIC、Atmel AVR、Motorola HCXX以及8051/8052系列等常用的微处理器。与Keil和Mplab不同的是它还提供了外围电路的仿真,例如74系列、40系列、LED、示波器、逻辑分析仪等各种常用的元器件及测试设备;它还提供了大量的元件库,有RAM、ROM、键盘、马达、LED、LCD、A/D、D/A,部分SPI器件、部分I2C器件等;支持Keil和MPLAB集成开发环境,里面附带有大量范例。
3 Keil与Proteus的整合与联调
Proteus与Keil之间是通过TCP/IP协议进行通行的,要确保PC机上安装有TCP/IP协议。Proteus VSM AGDI驱动程序(包括8051驱动程序VDM51.dll和ARM驱动程序VDMARM.dll)支持将Proteus VSM作为Keil集成开发环境的一个调试器插件。驱动程序必须安装运行在IDE的机器上,而Proteus可以安装在IDE运行的机器上,也可安装在另一台机器上。需要注意的是,8051驱动程序应当工作在Keil μVision2和Proteus6.7及其以下版本,否则用Keil uVision 2和Proteus6.9联调,会出现错误提示。
3.1 Proteus6.7版本与Keil的接口(以8051驱动程序安装为例)
(1)假如Proteus和Keil均已正确安装。把C:\Program Files\Labcenter Electronics\Proteus6 Professional\MODELS\目录下的VDM51.dll文件复制到C:\Keil\C51\BIN目录中。
(2)用记事本打开Keil目录下的TOOLS.INI文件,在键[C51]下加入TDRV5=BIN\VDM51.DLL ("Proteus VSM Simulator"),其中“TDRV5”中的“5”要根据实际情况写,不要和原来的重复就可以了。
(3)Keil的设置。启动Keil μVision3并打开一个工程,选择Project菜单的Option for Target‘工程名’,在Debug标签的右栏上部下拉列表框中选中Proteus VSM Simulator,如图1所示。然后单击右侧的Settings按钮,如果Proteus运行在另一台PC机上,则在弹出的对话框中填入另一台PC机的IP地址,如果是在同一台PC机上运行,IP地址选默认的Localhost或填入127.0.0.1,端口号都选择默认的8000。
(4)Proteus的设置。启动ISIS,在Debug菜单中选中Use Romote Debug Monitor。
图1 Debug标签下Proteus VSM Simulator的选择与IP设置
(5)在ISIS中画好相应的仿真电路图,或者打开一个设计好的文件,然后打开Keil,编写好程序,编译通过后(为方便起见,可把Keil的工程和Proteus的文件放到同一个目录下),单击Debug菜单下的Start/Stop Debug Session菜单项或按Ctrl+F5进入调试界面。此时可单步,全速运行程序,并进行调试,同时可以观察Proteus中目标板的运行情况。
3.2 Proteus6.9版本与Keil的接口
Proteus6.9版本安装目录下的MODELS子目录没有VDM51.dll和VDMARM.dll,需要执行安装程序vdmadi.exe(下载网址为http://downloads.labcenter.co.uk/vdmagdi.exe),双击之后会自动在Keil安装目录下的ARM子目录和C51子目录下的BIN子目录,分别安装VDMARM.dll和VDM51.dll,同时会在Keil目录下的TOOLS.INI文件相应位置添加相关键值,不需要用户进行修改。然后按照3.1中的第(3)步开始依次进行设置即可。
4 实例分析
下面以ARM7处理器LPC2124的通用输入/输出口GPIO来控制LED流水灯为例,介绍如何通过Proteus和Keil μVision3构建ARM嵌入式开发平台进行源代码级调试的方法。例子虽然很简单,但其调试方法和过程却具有代表性,旨在抛砖引玉。
4.1硬件电路绘制
启动Proteus ISIS 6 Professional,通过选择相应的元器件,绘制硬件电路图如图2所示。绘制电路图的操作和Protel、EWB等软件不太一样,初学者可能不太适应,熟悉之后操作很简单,同时限于篇幅,这里不介绍电路图绘制方法,读者可以参阅相关文献。
图2 LED流水灯的硬件电路图
4.2 程序编译与电路仿真
启动Keil μVision3,首先选定编译器(使用GNU编译器,Keil本身不带需要另外安装),方法是在工作空间(Project Workspace)空白处右击,从弹出的菜单中选择Manage Components命令,勾选Use GNU Compiler选项,在GNU-Tool-Prefix框中输入arm-uclibc-,单击确定。
接着新建一个工程,命名为Blinky.uv2并保存,在弹出的Select Device for Target ‘工程名’对话框中选择目标CPU,这里选Philips公司的LPC2124芯片,确定并添加启动代码,建立New Group并将源文件Time.c和Blinky.c添加到工程中去。源文件用C语言编写,在此从略。
然后进行工程配置,选择Project菜单的Option for Target‘工程名’,在弹出的对话框中,单击Target标签设置晶振频率为12MHz,单击Output标签勾选Create Hex File复选框,单击Linker标签,去掉Do not use Standard System Startup Files的对勾,并设置Linker Script文件Flash.ld,单击Debug标签的右栏上部下拉列表框中选中Proteus VSM Simulator,其他选项卡为默认,单击确定。
最后单击执行Project菜单下的Build Target命令或单击工具栏Build Target按钮进行编译链接,生成目标代码,通过后就可以进行仿真了。
单击执行Debug菜单下的Start/Stop Debug Session命令,加载程序到LPC2124中,这时切换至Proteus界面会发现,LED流水灯电路已经启动仿真(处于仿真暂停状态)。此时在Keil的调试界面下单击执行Debug菜单下的Run命令或按F5键全速运行程序,再切换至Proteus界面,会发现LED流水灯电路已经开始仿真运行了。结果如图3所示。
图3 Proteus和Keil联调时的仿真结果
5 结束语
本文以ARM处理器LPC2124为例,介绍了一种基于Proteus软件和Keil for ARM编译器接口的ARM电路仿真并进行源代码级调试的实现方法,为嵌入式系统学习提出了一种新的思路和方法,该方法具有普遍意义。对于ARM学习者,没有ARM实验箱也可以学习ARM嵌入式系统开发;对于ARM开发设计人员,可以使用该方法进行虚拟开发成功之后再进行实际制作,无疑可以提高开发效率,降低开发风险。
参考文献:
[1]http://www.labcenters.co.uk.
[2]http://www.keil.com.
[3]周润景,袁伟亭.基于PROTEUS的ARM虚拟开发技术[M].北京:北京航空航天大学出版社,2007.
注:“本文中所涉及到的图表、公式注解等形式请以PDF格式阅读原文。”
关键词:ARM;嵌入式系统;虚拟仿真;Proteus;Keill μVision3
中图分类号:TP391文献标识码:A文章编号:1009-3044(2007)16-31098-02
The ARM Virtual Development Based on the Combination of Proteus and Keil
GENG Wen-bo1, QI Xiao-hui2
(1.Dept. of Physics and Electronic Engineering, Zhoukou Normal University,Zhoukou 466000,China;2.Jinan Institute of Semiconductor,Jinan 250014,China)
Abstract:The development of embedded system based on microprocessor needs excellent software and hardware environment. Nowadays, the development tool ADS, RealView and Keil of the ARM Company have a good support for ARM processor, but the hardware is expensive. The problem can be resolved by using software Proteus: We can build a virtual hardware workbench to simulate peripheral digital circuit and analog circuit together with microprocessor depending on our requirement. Combining Keil for ARM IDE and software Proteus, introduce how to build ARM embedded system virtual workbench to debug source code, which is new way to study embedded system.
Key words:ARM;Embedded System;Virtual Simulation;Proteus; Keil μVision3
1 引言
不管是基于单片机的嵌入式开发还是基于ARM的嵌入式开发,嵌入式系统设计是一门实践性很强的学科,没有大量的实践操作是不可能学好这门课的。因此在传统的嵌入式系统学习中,嵌入式开发平台是必不可少的。其中资源少的开发平台便宜但功能较少,资源多的开发平台有价格不菲,很多人无法承受。比起51单片机开发板和实验箱,ARM开发板和实验箱要昂贵得多。而且一般的开发板和实验箱是成品,学习者很难参与到其中的细节中去,动手能力就难以得到训练和提高。英国Labcenter公司推出了适合嵌入式设计仿真的开发平台——Proteus软件。利用它,我们可以随时搭建一个嵌入式应用系统,并对其进行仿真,这样就很很好解决了上述矛盾。
2 Keil与Proteus简介
2.1 Keill μVision3简介
Keil软件公司(现为ARM子公司)是嵌入式开发工具的专业制造商。其产品包括C编译器、宏汇编器、实时内核、调试器、模拟器、集成开发环境以及8051、251、ARM7/ARM9/Cortex-M3和XC16x/C16x/ST10系列微控制器仿真开发工具。Keil μVision2已称为目前国内流行的嵌入式集成开发环境(IDE)。为了更好地支持32位微处理器的开发,Keil又推出了Keil μVision3 IDE。UV3平台的人机交互界面非常友好,而且编译器性能优异,编译出代码的大小、执行速率及系统的稳定性均领先于市场上同类产品。
Keill μVision3针对不同的处理器,包括不同的软件产品,有ARM开发工具、C51开发工具和XC16x/C16x/ST10开发工具和C251开发工具,用户可以根据需要选择。
Keil μVision3具有高效的工程管理的集成开发环境,高速ARM指令/外设模拟器,多种流行编译工具的选择(如C编译器、ADS/RealView编译器和GNU GCC编译器等)和JTAG仿真器ULINK。
2.2 Proteus简介
Proteus是来自英国Labcenter Electronics公司的EDA工具软件。它提供原理图绘制,SPICE仿真与PCB设计功能,这一点与EWB的Multisim和Ultiboard类似,不过它可以仿真微处理器和外围电路,可以仿真ARM7、PIC、Atmel AVR、Motorola HCXX以及8051/8052系列等常用的微处理器。与Keil和Mplab不同的是它还提供了外围电路的仿真,例如74系列、40系列、LED、示波器、逻辑分析仪等各种常用的元器件及测试设备;它还提供了大量的元件库,有RAM、ROM、键盘、马达、LED、LCD、A/D、D/A,部分SPI器件、部分I2C器件等;支持Keil和MPLAB集成开发环境,里面附带有大量范例。
3 Keil与Proteus的整合与联调
Proteus与Keil之间是通过TCP/IP协议进行通行的,要确保PC机上安装有TCP/IP协议。Proteus VSM AGDI驱动程序(包括8051驱动程序VDM51.dll和ARM驱动程序VDMARM.dll)支持将Proteus VSM作为Keil集成开发环境的一个调试器插件。驱动程序必须安装运行在IDE的机器上,而Proteus可以安装在IDE运行的机器上,也可安装在另一台机器上。需要注意的是,8051驱动程序应当工作在Keil μVision2和Proteus6.7及其以下版本,否则用Keil uVision 2和Proteus6.9联调,会出现错误提示。
3.1 Proteus6.7版本与Keil的接口(以8051驱动程序安装为例)
(1)假如Proteus和Keil均已正确安装。把C:\Program Files\Labcenter Electronics\Proteus6 Professional\MODELS\目录下的VDM51.dll文件复制到C:\Keil\C51\BIN目录中。
(2)用记事本打开Keil目录下的TOOLS.INI文件,在键[C51]下加入TDRV5=BIN\VDM51.DLL ("Proteus VSM Simulator"),其中“TDRV5”中的“5”要根据实际情况写,不要和原来的重复就可以了。
(3)Keil的设置。启动Keil μVision3并打开一个工程,选择Project菜单的Option for Target‘工程名’,在Debug标签的右栏上部下拉列表框中选中Proteus VSM Simulator,如图1所示。然后单击右侧的Settings按钮,如果Proteus运行在另一台PC机上,则在弹出的对话框中填入另一台PC机的IP地址,如果是在同一台PC机上运行,IP地址选默认的Localhost或填入127.0.0.1,端口号都选择默认的8000。
(4)Proteus的设置。启动ISIS,在Debug菜单中选中Use Romote Debug Monitor。
图1 Debug标签下Proteus VSM Simulator的选择与IP设置
(5)在ISIS中画好相应的仿真电路图,或者打开一个设计好的文件,然后打开Keil,编写好程序,编译通过后(为方便起见,可把Keil的工程和Proteus的文件放到同一个目录下),单击Debug菜单下的Start/Stop Debug Session菜单项或按Ctrl+F5进入调试界面。此时可单步,全速运行程序,并进行调试,同时可以观察Proteus中目标板的运行情况。
3.2 Proteus6.9版本与Keil的接口
Proteus6.9版本安装目录下的MODELS子目录没有VDM51.dll和VDMARM.dll,需要执行安装程序vdmadi.exe(下载网址为http://downloads.labcenter.co.uk/vdmagdi.exe),双击之后会自动在Keil安装目录下的ARM子目录和C51子目录下的BIN子目录,分别安装VDMARM.dll和VDM51.dll,同时会在Keil目录下的TOOLS.INI文件相应位置添加相关键值,不需要用户进行修改。然后按照3.1中的第(3)步开始依次进行设置即可。
4 实例分析
下面以ARM7处理器LPC2124的通用输入/输出口GPIO来控制LED流水灯为例,介绍如何通过Proteus和Keil μVision3构建ARM嵌入式开发平台进行源代码级调试的方法。例子虽然很简单,但其调试方法和过程却具有代表性,旨在抛砖引玉。
4.1硬件电路绘制
启动Proteus ISIS 6 Professional,通过选择相应的元器件,绘制硬件电路图如图2所示。绘制电路图的操作和Protel、EWB等软件不太一样,初学者可能不太适应,熟悉之后操作很简单,同时限于篇幅,这里不介绍电路图绘制方法,读者可以参阅相关文献。
图2 LED流水灯的硬件电路图
4.2 程序编译与电路仿真
启动Keil μVision3,首先选定编译器(使用GNU编译器,Keil本身不带需要另外安装),方法是在工作空间(Project Workspace)空白处右击,从弹出的菜单中选择Manage Components命令,勾选Use GNU Compiler选项,在GNU-Tool-Prefix框中输入arm-uclibc-,单击确定。
接着新建一个工程,命名为Blinky.uv2并保存,在弹出的Select Device for Target ‘工程名’对话框中选择目标CPU,这里选Philips公司的LPC2124芯片,确定并添加启动代码,建立New Group并将源文件Time.c和Blinky.c添加到工程中去。源文件用C语言编写,在此从略。
然后进行工程配置,选择Project菜单的Option for Target‘工程名’,在弹出的对话框中,单击Target标签设置晶振频率为12MHz,单击Output标签勾选Create Hex File复选框,单击Linker标签,去掉Do not use Standard System Startup Files的对勾,并设置Linker Script文件Flash.ld,单击Debug标签的右栏上部下拉列表框中选中Proteus VSM Simulator,其他选项卡为默认,单击确定。
最后单击执行Project菜单下的Build Target命令或单击工具栏Build Target按钮进行编译链接,生成目标代码,通过后就可以进行仿真了。
单击执行Debug菜单下的Start/Stop Debug Session命令,加载程序到LPC2124中,这时切换至Proteus界面会发现,LED流水灯电路已经启动仿真(处于仿真暂停状态)。此时在Keil的调试界面下单击执行Debug菜单下的Run命令或按F5键全速运行程序,再切换至Proteus界面,会发现LED流水灯电路已经开始仿真运行了。结果如图3所示。
图3 Proteus和Keil联调时的仿真结果
5 结束语
本文以ARM处理器LPC2124为例,介绍了一种基于Proteus软件和Keil for ARM编译器接口的ARM电路仿真并进行源代码级调试的实现方法,为嵌入式系统学习提出了一种新的思路和方法,该方法具有普遍意义。对于ARM学习者,没有ARM实验箱也可以学习ARM嵌入式系统开发;对于ARM开发设计人员,可以使用该方法进行虚拟开发成功之后再进行实际制作,无疑可以提高开发效率,降低开发风险。
参考文献:
[1]http://www.labcenters.co.uk.
[2]http://www.keil.com.
[3]周润景,袁伟亭.基于PROTEUS的ARM虚拟开发技术[M].北京:北京航空航天大学出版社,2007.
注:“本文中所涉及到的图表、公式注解等形式请以PDF格式阅读原文。”