Keil与Proteus联调ARM举例
- 格式:docx
- 大小:350.62 KB
- 文档页数:5
Keil与protues联结调试一)Keil uVision3与Proteus连接调试单片机仿真2009-11-29 11:26:20 阅读128 评论2 字号:大中小订阅1、打开keil安装目录下的tools.ini2、在“[C51]”字段中,添加一行TDRV8=BIN\VDM51.DLL ("PROTEUS VSM MONITOR 51 DRIVER")(注意这里的TDRV8不能与其他重合,如果重合的话,后面的8可以修改成9、10或更高)。
3、保存tools.ini文件,然后打开keil,右键“目标1”---> Options for Target选项,点击“Debug”标签页,在右半部分,选择“使用”(这个DEBUG标签页共有两种仿真方式可选,左边的是keil软件仿真器,右边的是外部仿真器),点击下拉框,就会出现“Proteus VSM Monitor 51 Driver”,当然这里的这个名字可以你第1步里自定义,自己喜欢取什么名字就什么名字吧,当然最好是一目了然的名字比较好。
4、选择“PROTEUS VSM MONITOR 51 DRIVER”,点旁边的“设置”,如果你的keil和proteus 是装在同一台电脑上的话,那这里的“HOST”(主机)就填写本机IP地址:127.0.0.1(如果keil和proteus装在不同的电脑上,那就需要在HOST中填写另外一台电脑的IP),,在“PORT”(端口)中写入8000 ,一般在右边会选中“Cache memory”.方法21、将KeilC51(u2、u3均可)、Proteus6(94、95均可)都安装好;2、下载两个软件,一个是Proteu的Vdmagdi.exe,另一个是授权后的Prospice.dll(两个文件链接地址看下面)3、先运行Vdmagdi.exe安装Keil接口,然后将Prospice.dll覆盖在Proteus的安装文件夹下的Bin中如:D:\Program Files\Labcenter Electronics\Proteus 6 Professional\BIN;4、打开Proteus,在【菜单】【Debug】下拉菜单中选【User Remote Debug Monitor】(在该项前打勾);5、打开KeilC51,点击【菜单】【工程】【为目标'XX'设置选项】,在【调试】标签下选择右边的【使用U】单选,并在下拉框中选【Proteus VSM Simulator】仿真设备;6、在Proteus侧做好硬件连线,Keil侧写好软件,点击Keil【调试】【运行】,您可以欣赏联调了。
Proteus和Keil联调设置方法常用的有两种方法一keil c与proteus的离线联合使用1)先通过keil c51编辑,修改,编译源程序并生成HEX等单片能识别的文件,运行proteus 将HEX文件与原理图中的MCU进行绑定即可2)不论是离线还是在线方式的联合使用HEX文件是必不可少的,如果找不到HEX文件这不是软件出错,而是没有进行正确的设置进人KEIL开发环境打开一个工程文件,在选中“target1"的情况下选择project--->options for target "target1" 选择”output"选项卡在“create HEX file 前的方框里打钩,保存即可二KEIL C51与PROTEUS 7.0的联合仿真调试1)确保计、算机上安装有TCP/IP协议2)下这个软件proteus vsm a GDI Driver 就是vdmagdi.exe,装了后的变化是在KEIL文件夹下的TOOLS.INI文件中的[c51]字段的最后多了两行就是tdrv5=binvdm51.dll和book10=hlplvdmagd用于两软件的联接和帮助文档3)进入KEIL的开发环境建立一个工程文件在先中“TARGET"的情况下选择project-->options for target "target'4)在"debug"选项卡中选择左边的“use“,在下拉框中选”proteus vsm simulator",再点击"Setting"设置通信接口,在Host后面添上"127.0.0.1",如果你是用的不是同一台电脑,在这里添上另一台电脑的IP地址(另一台电脑安装Proteus).5)打开proteus lsls 在菜单栏中选择“debug-->use remote debug monitor"选中该项.6)注意,一定要把keil的工程和Proteus的文件放到同一个目录下(这里所说的Keil的工程指工程的目录,即Proteus的工程文件要和Keil工程的文件夹在同一层目录下).(注明:以上参考自/lihaoy/blog, 谢谢原文作者^_^)附:Proteus 7.2和Keil C51 V8.08 uvision 3的完整安装1.安装Proteus Version 7.2beta SETUP2.安装Proteus Update72SP2升级到SP2版本2.包括安装破解文件Labcenter_LICENCE.lxk3.安装补丁文件patch,注意里面在说要选择目录的时候要选择相应的目录4.安装汉化菜单:Proteus 7.01 SP2 ARES的汉化菜单放到……Program Files\Labcenter Electronics\Proteus 7 Professional\BIN目录下。
proteus与keil联调proteus 与 keil 联调即使不使⽤以上所说的参数设置,依然可以实现正确的串⼝通信,⽆乱码。
ISP的波特率设置在仿真中并不是取决于编写的代码,⽽是取决于STM32芯⽚的外部晶振频率参数设置。
对于STM32F401芯⽚,ISP的波特率在数值上应该要等于STM32F401的外部晶振频率的4800倍,即403200/84 = 4800;⽽对于STM32F103芯⽚,这个⽐值变为1200,即86400/72 = 1200代码设置的波特率必须是9600,否则,仿真会报错,另外,本⽂只针对标准库编程,HAL库编程按代码⾥设定的波特率设置即可。
在⽤proteus 仿真 stm32f103c6串⼝时,发现stm32主频不能超过55MHz,参见proteus的 sample project,我把倍频系数设为6,同时仿真主频需设为倍频系数*8M(晶振频率),串⼝波特率不受限制。
proteus仿真串⼝前必读事项1、 proteus Virtual Terminal 串⼝波特率没有限制(推荐9600;)2、但对于倍频系数 RCC_PLLMul_*,*的取值似乎只能是6以下,否则Virtual Terminal显⽰乱码。
在sys.c中设置(洋桃电⼦例程;野⽕似乎没把设置RCC频率程序单列出来)/*设置PLL时钟源及倍频系数*/RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_5); //RCC_PLLMul_x(枚举2~16)是倍频值。
当HSE=8MHZ,RCC_PLLMul_9时PLLCLK=72MHZ3、双击proteus原理图中stm32元件,载⼊*.elf⽂件时,弹出如图2的窗⼝,频率必须设为8MHz* RCC_PLLMul_*,其中*<=6, 8MHz为stm32f103c6的外接晶振频率(proteus仿真库没有stm32f103c8)Proteus 系统设置D:\Keil_v5\TOOLS.INI ( 红⾊为 vdmagdi 增加的内容 )[UV2]ORGANIZATION="lsgxeva"NAME="eva", "lsgx"EMAIL="admin@"ARMSEL=1USERTE=1TOOL_VARIANT=mdk_stdRTEPATH="D:\Keil_v5\ARM\PACK"[ARM]PATH="D:\Keil_v5\ARM\"VERSION=5.18PATH1="C:\GNU Tools ARM Embedded\4.9 2015q2\"TOOLPREFIX=arm-none-eabi-CPUDLL0=SARM.DLL(TDRV0,TDRV4,TDRV5,TDRV8,TDRV15) # Drivers for ARM7/9 devicesCPUDLL1=SARMCM3.DLL(TDRV1,TDRV2,TDRV3,TDRV4,TDRV6,TDRV7,TDRV9,TDRV10,TDRV11,TDRV12,TDRV13,TDRV14,TDRV15) # Drivers for Cortex-M devices CPUDLL2=SARMCR4.DLL(TDRV6,TDRV15) # Drivers for Cortex-R4 devicesBOOK0=HLP\RELEASE_NOTES.HTM("Release Notes",GEN)BOOK1=HLP\ARMTOOLS.chm("Complete User's Guide Selection",C)TDRV0=BIN\UL2ARM.DLL("ULINK2/ME ARM Debugger")TDRV1=BIN\UL2CM3.DLL("ULINK2/ME Cortex Debugger")TDRV2=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")TDRV3=BIN\lmidk-agdi.dll("Stellaris ICDI")TDRV4=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")TDRV5=Segger\JLTAgdi.dll("J-LINK / J-TRACE ARM")TDRV6=Segger\JL2CM3.dll("J-LINK / J-TRACE Cortex")TDRV7=BIN\ULP2CM3.DLL("ULINK Pro Cortex Debugger")TDRV8=BIN\ULP2ARM.DLL("ULINK Pro ARM Debugger")TDRV9=NULink\Nu_Link.dll("NULink Debugger")TDRV10=SiLabs\SLAB_CM_Keil.dll("SiLabs UDA Debugger")TDRV11=STLink\ST-LINKIII-KEIL_SWO.dll ("ST-Link Debugger")TDRV12=BIN\CMSIS_AGDI.dll("CMSIS-DAP Debugger")TDRV13=BIN\DbgFM.DLL("Fast Models Debugger")TDRV14=PEMicro\Pemicro_ArmCortexInterface.dll("PEMicro Debugger")TDRV15=BIN\VDMARM.DLL ("Proteus VSM Simulator")BOOK2=HLP\VDMAGDI.HLP ("Proteus VSM AGDI Driver")DELDRVPKG0=ULINK\UninstallULINK.exe("ULINK Pro Driver V1.0")LIC0=BUURY-IEX7U-UHJ8H-W3E43-TR57A-KSXDC[ARMADS]PATH="D:\Keil_v5\ARM\"PATH1=".\ARMCC\bin\"CPUDLL0=SARM.DLL(TDRV0,TDRV4,TDRV5,TDRV8,TDRV15) # Drivers for ARM7/9 devicesCPUDLL1=SARMCM3.DLL(TDRV1,TDRV2,TDRV3,TDRV4,TDRV6,TDRV7,TDRV9,TDRV10,TDRV11,TDRV12,TDRV13,TDRV14,TDRV15) # Drivers for Cortex-M devices CPUDLL2=SARMCR4.DLL(TDRV6,TDRV15) # Drivers for Cortex-R4 devicesBOOK0=HLP\mdk5-getting-started.pdf("MDK-ARM Getting Started (PDF)",GEN)BOOK1=HLP\mdk5-getting-started_jp.pdf("MDK-ARM Getting Started (Japanese/PDF)",GEN)BOOK2=HLP\RELEASE_NOTES.HTM("Release Notes",GEN)BOOK3=HLP\ARMTOOLS.chm("Complete User's Guide Selection",C)BOOK4=HLP\DUI0592E_02_mdk_getting_started_guide.pdf("ARM Compiler Getting Started Guide v5.06 for µVision (PDF)",GEN)BOOK5=HLP\DUI0375G_02_mdk_armcc_user_guide.pdf("ARM Compiler v5.06 for µVision (PDF)",GEN)BOOK6=HLP\DUI0377G_02_mdk_armlink_user_guide.pdf("ARM Linker v5.06 for µVision (PDF)",GEN)BOOK7=HLP\DUI0378G_02_mdk_libraries_user_guide.pdf("ARM Libraries and Floating Point Support Guide v5.06 for µVision (PDF)",GEN)BOOK8=HLP\DUI0379G_02_mdk_armasm_user_guide.pdf("ARM Assembler User Guide v5.06 for µVision (PDF)",GEN)BOOK9=HLP\DUI0459F_02_mdk_fromelf_user_guide.pdf("Using the fromelf Image Converter v5.06 for µVision (PDF)",GEN)BOOK10=HLP\DUI0590E_02_mdk_armar_user_guide.pdf("Creating Static Software Libraries with armar v5.06 for µVision (PDF)",GEN)BOOK11=HLP\DUI0591E_02_mdk_errors_and_warnings_reference_guide.pdf("ARM Compiler Error and Warnings Reference Guide v5.06 for µVision (PDF)",GEN) BOOK12=HLP\DUI0593E_02_mdk_migration_compatibility_guide.pdf("ARM Migration and Compatibility Guide v5.06 for µVision (PDF)",GEN)TDRV0=BIN\UL2ARM.DLL("ULINK2/ME ARM Debugger")TDRV1=BIN\UL2CM3.DLL("ULINK2/ME Cortex Debugger")TDRV2=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")TDRV3=BIN\lmidk-agdi.dll("Stellaris ICDI")TDRV4=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")TDRV5=Segger\JLTAgdi.dll("J-LINK / J-TRACE ARM")TDRV6=Segger\JL2CM3.dll("J-LINK / J-TRACE Cortex")TDRV7=BIN\ULP2CM3.DLL("ULINK Pro Cortex Debugger")TDRV8=BIN\ULP2ARM.DLL("ULINK Pro ARM Debugger")TDRV9=NULink\Nu_Link.dll("NULink Debugger")TDRV10=SiLabs\SLAB_CM_Keil.dll("SiLabs UDA Debugger")TDRV11=STLink\ST-LINKIII-KEIL_SWO.dll ("ST-Link Debugger")TDRV12=BIN\CMSIS_AGDI.dll("CMSIS-DAP Debugger")TDRV13=BIN\DbgFM.DLL("Fast Models Debugger")TDRV14=PEMicro\Pemicro_ArmCortexInterface.dll("PEMicro Debugger")TDRV15=BIN\VDMARM.DLL ("Proteus VSM Simulator")BOOK13=HLP\VDMAGDI.HLP ("Proteus VSM AGDI Driver")RTOS0=Dummy.DLL("Dummy")RTOS1=VARTXARM.DLL ("RTX Kernel")ARMCCPATH0="ARMCC" ("V5.06u1 (build 61)")DELDRVPKG0=ULINK\UninstallULINK.exe("ULINK Pro Driver V1.0")[C51]PATH="D:\Keil_v5\C51\"VERSION=V9.59BOOK0=HLP\Release_Notes.htm("Release Notes",GEN)BOOK1=HLP\C51TOOLS.chm("Complete User's Guide Selection",C)TDRV0=BIN\MON51.DLL ("Keil Monitor-51 Driver")TDRV1=BIN\ISD51.DLL ("Keil ISD51 In-System Debugger")TDRV2=BIN\MON390.DLL ("MON390: Dallas Contiguous Mode")TDRV3=BIN\LPC2EMP.DLL ("LPC900 EPM Emulator/Programmer")TDRV4=BIN\UL2UPSD.DLL ("ST-uPSD ULINK Driver")TDRV5=BIN\UL2XC800.DLL ("Infineon XC800 ULINK Driver")TDRV6=BIN\MONADI.DLL ("ADI Monitor Driver")TDRV7=BIN\DAS2XC800.DLL ("Infineon DAS Client for XC800")TDRV8=BIN\UL2LPC9.DLL ("NXP LPC95x ULINK Driver")TDRV9=BIN\JLinkEFM8.dll ("J-Link / J-Trace EFM8 Driver")TDRV10=BIN\VDM51.DLL ("Proteus VSM Simulator")BOOK2=HLP\VDMAGDI.HLP ("Proteus VSM AGDI Driver")RTOS0=Dummy.DLL("Dummy")RTOS1=RTXTINY.DLL ("RTX-51 Tiny")RTOS2=RTX51.DLL ("RTX-51 Full")LIC0=SDJT4-FM3RX-B2ILG-V2D72-RQ76I-6L05G[KARM]TDRV0=BIN\VDMARM.DLL ("Proteus VSM Simulator")BOOK0=HLP\VDMAGDI.HLP ("Proteus VSM AGDI Driver")Keil⼯程⽬标调试选项 ( Proteus VSM Simulator )============ End。
1.安装Proteus Version 7.1 SET71UP。
2.包括安装破解文件MAXIM_LICENCE.lxk。
3.安装补丁文件patch,注意要在安装目录下补丁。
或者将文件夹BIN下:ARES/ISIS/LICENCE.DLL/PROSPICE.DLL文件夹ELECTRA下:ELECTRA文件夹MODELS下:AVR.DLL/KEYPAD.DLL/LCDALPHA.DLL/LCDPIXEL.DL L/LEDMPX.DLL/MCS8051.DLL//PIC12C5.DLL/PIC12C6.DLL/PIC12F6.DLL/pic16f6.DLL/PIC18.DLL/READOU T.DLL/VTERM.DLL的文件复制到安装目录相应的文件覆盖。
4.安装汉化菜单:Proteus 7.01 SP2 ARES的汉化菜单放到……Program Files\Labcenter Elect ronics\Proteus 7 Professional\BIN目录下。
Proteus 7.01 SP2 ISIS的汉化菜单放到……Program Files\Labcenter Electro nics\Proteus 7 Professional\BIN目录下。
5.完成Proteus安装。
6.安装keil C518.08 uVision3 setup。
7.进入Keil uVision3界面。
点File > license management打开Keil_lic-v3.2 注册机产生LICO 将其复制填入NEW LICENSE ID中,同时复制COMPUTER I D或者通过KEGGEN产生填入NEW LICENSE ID中。
8.Keil 与Proteus连接,连接开始必须在roteus安装目录下VDM51.dll文件复制到Keil安装目录的\C51\BIN 目录中,但新版本中没有,所以必须下载安装补丁vdmagdi.exe,则在Keil安装目录的\C51\BIN 目录中有文件:VDM51.dll同时还需下载一破解文件PROSPICE.dll替换\Proteus 6 Professional\BIN目录下的相同文件(新版本的Proteus可能不需要)。
安装之前的准备:1、MDK4.12(Keil uVision 4)这个是KEIL最新版,至少也要用MDK4.0,之前的版本只能联调51,不能联调ARM。
2、Proteus 7.7 sp2这个是Proteus最新版,只有这一个版本两个联调仿真都成功了,之前的版本都不行,不是能联调51不能联调ARM,就是能联调ARM不能联调51。
3、vdmagdi.exe这个是一个联调的补丁,貌似只有一个版本。
上面3个软件网上都有下载,如果没有的也可以问我要。
安装方法:先安装1、2两个,再安装第3个。
设置方法:1、Proteus中的设置方法:勾选最后那个。
USE REMOTE。
2、Keil4 配置文件的设置方法:①、打开Keil的安装根目录,在根目录下有一个配置设置文件:tools.ini,用记事本的方式打开②、找到“[ARM]”,在代码的第7行就是,可以用“编辑==》查找”③、在[ARM]中找到“TDRV8=STLink\ST-LINKIII-KEIL.dll ("ST-Link Debugger")”然后在找到的这句代码后面粘贴上“TDRV9=BIN\VDMARM.DLL ("Proteus VSM Simulator")”④、把[ARM]下面第三行替换为“CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV9)”也可以在括号里添加上“,TDRV9”⑤、找到[ARMADS],重复③和④中替换的地方。
说明。
这个配置的时候不要太死板,虽然③说粘贴上“TDRV9”,但如果已经有“TDRV9”了,就顺推到“TDRV10”“TDRV11”。
④、把[ARM]下面第三行替换为“CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV9)”的时候,前面你粘贴的是TDRV几,就在后面补上几。
不要你粘贴的是TDRV11,这里还写TDRV9.。
这个就不多说了。
Keil和proteus联调可以更好的学习单片机和arm,我这个是针对对使用keil和proteus很熟练,但还不会使用联调来写的,有什么错误之处还望纠正指导,我也算是初学者,一点点经验,网上说的种种办法我试了一下,没有几个能用的,我这个都给好多朋友安装了,没有什么问题,只是软件有点大,上传不了,要不大家也可以用一用,可惜了
下面为截图,大家按照做就行了,我以arm的为例就行了,单片机也是差不多的第一步:keil的安装,不需要我赘述
keil的破解,点击keil licence creator,选-arm,v2,再点击generate,看图
生成
打开keil的licenc,看图
将keil licence creator产生的代码,复制到keil的new licence id code里,然后点击add lic 就可以了,现在keil就被破解了,使用不受限制,我建议keil不要汉化
第二步:安装proteus,请看下面的截图
第三步:proteus的破解我就不多说了,直接安装联调工具吧,我是用的是vdmagdi,网上有很多下载的,这里选下面的agdi drivers for uvision3,下一步
这个文件必须要安装在keil的文件目录下,看下图
,
这个选arm agdi drives,看图
接着就安装完了,剩下的就是设置参数了第四步:keil的设置,看图说话
好了keil 设置好了
第五步:proteus 的参数设置
第七步:加载文件
第八步,进行keil和proteus的联调把,尽情的享受其中无限的方便吧列说51单片机(C语言)
主编张义和、王敏男等、人民邮电出版社。
Proteus和Keil的使用与联调Proteus7.0 是目前最好的模拟单片机外围器件的工具,非常不错。
可以仿真 51 系列、AVR,PIC 等常用的 MCU 及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC 器件等等),虽然有那么多优点和长处,但还是与实际情况有不少的差别。
如果条件允许,还是买一块单片机开发板或自己做一个单片机应用系统,实实在在的学习和体会一下,仿真毕竟还是仿真,不能代替实际操作,许多实际问题是在仿真中碰不到的。
当然,条件不允许,我们可以采用仿真,达到学习的目的。
如果学习和使用单片机,除了灵活应用Protel等绘制原理图和PCB图以外,那么Keil C51 软件应该要掌握,我们要通过它来编写和调试单片机程序。
Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。
下面就三个问题分别进行介绍。
一、 proteus的使用1. 软件打开双击桌面上的ISIS 7 Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus 7 Professional”→“ISIS 7 Professional”,出现如图1-1所示界面,随后就进入了Proteus ISIS集成环境。
图1-1 启动时的界面2. 工作界面Proteus ISIS的工作界面是一种标准的Windows界面,如图1-2所示。
包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图1-2 Proteus ISIS的工作界面关于该软件的使用,与学习其他软件的方法没有多大区别,当然我们也不是每个功能都使用,没必要逐一介绍,再说下面有例子,呵呵,相信自己的能力吧。
3. 跑马灯实例设计图1-3 跑马灯实例①将所需元器件加入到对象选择器窗口。
keil与proteus联调1、把proteus安装目录下 VDM51..dll文件复制到Keil安装目录的 \C51\BIN 目录中。
2、修改keil安装目录下 Tools.ini文件,在C51字段加入TDRV5=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver"),保存注意:不一定要用TDRV5,根据原来字段选用一个不重复的数值就可以了。
引号内的名字随意3、打开proteus,画出相应电路。
在proteus的tools菜单中选中use remote debug monitor4、进入KEIL的project菜单option for target '工程名'。
在DEBUG选项中右栏上部的下拉菜选中 Proteus VSM Monitor-51 Driver。
在进入seting,如果同一台机IP 名为127.0.0.1,如不是同一台机则填另一台的IP地址。
端口号一定为8000 注意:可以在一台机器上运行keil,另一台中运行proteus进行远程仿真5、在keil中进行debug吧,同时在proteus中查看直观的结果(如LCD显示…)按照上面的教程,装完之后发现proteus目录下面没有vdm51.dll,只好在网上搜,找了半天,找到之后发现我的keil目录下面已经有这个文件了,同样要修改的部分也已经修改好了,走了一圈弯路,呵呵proteus 设置截图keil 设置截图看来uv3里面装了不少的仿真端口,呵呵 .按照上面的3,4步骤分别将proteus 和keil设置好就可以进行连接测试了下面就要就行实际的仿真试验了proteus是英文界面,对于英文不好的人来说不是好消息,我就属于那种人,还好有很多热心认识提供了教程参考一下教程在proteus里将硬件电路搭起来一个led的仿真教程: /306/2089.aspx不过在后面仿真的时候有点区别,原为是利用hex文件来仿真的,不能进行调试我们直接将后面的部分跳过,在keil里面输入源程序下面是我写的c源程序#include <at89x51.h>void delay();void main(){while(1){P1_0 = 0x00;delay();P1_0 = 0x01;delay();}}void delay(){unsigned int i;for(i = 0;i<=25535;i++);}写好程序之后,进行创见目标,就可以进行仿真了看图中画圈的部分可以看出已经和proteus连上了Keil uv4和Proteus 7.5联调设置2011-05-13 19:28(做作业用的)1、安装Keil 和Proteus(貌似是废话)2、猛击vdmagdi.exe,然后选择Keil的安装根目录,例如:“X:\ProgramFiles\Keil”(X为盘符),等待安装完成(友情提示,vdmagdi.exe是老师给的安装包里提供的,1.2M,网上可以下载,我在网盘也传了个,附地址:/RobinGaryKing/Open/vdmagdi.exe/)完成后,看看“X:\ProgramFiles\Keil\C51\BIN”目录下应该出现了VDM51.dll 文件3、打开Proteus,在debug菜单中选中useremote debug monitor(汉化版:“调试——>使用远程调试监控”),点完后应该粗线一个对号4、修改Keil 安装目录“X:\ProgramFiles\Keil”下的TOOLS.INI,(用记事本或者各种能编辑编辑器打开)找到C51字段,下面增加一行TDRV9=BIN\VDM51.DLL ("Proteus VSMMonitor-51 Driver" )那个开头TDRV9可以根据情况写成是TDRV3或者TDRV+其他数字,但是不能和已经有的重复了。
Proteus与Keil联调方法Proteus与Keil联调1.安装Proteus。
2.安装keil C51 uVision3。
3.Keil与Proteus连接,安装keil驱动4.修改keil安装目录下Tools.ini 文件。
用记事本打开Keil根目录下的TOOLS.INI 文件,在[C51] 栏目下加入TDRV3=BIN\VDM51.DLL("Proteus VSM Monitor-51 Driver" ),其中“TDRV3”中的“3”要根据实际情况写,不要和原来的重复。
5.打开proteus,画出相应电路图。
在proteus的debug菜单中选中use remote debug monitor。
在keil中编写MCU的程序。
进入KEIL的project 菜单option for target '工程名'。
在DEBUG选项中右栏上部的下拉菜选中Proteus VSM Monitor-51 Driver。
在进入seting,如果是在同一台电脑上IP名为127.0.0.1,如不是同一台则填另一台的IP地址。
端口号一定为8000 。
点击工具栏的"option for target"按钮,在出现的对话框里点击"Debug",在右栏上部的下拉菜单里选中" Proteus VSM Monitor-51 Driver",还要点击一下Use前面的小圆点。
第五步,Proteus的设置。
运行Proteus的ISIS,鼠标左键点击菜单"DEBUG",选中"use romote debuger monitor"。
基本设置已经完成,可以开始调试了,Keil每调试一次,Proteus就play一次。
在实现连接调试时最主要的是要修改TOOLS.ini和产生VDM51.DLL。
Keil与Proteus联调ARM举例
学习ARM最基本的是能够让系统跑起来,起码能跑到main函数,控制一个GPIO。
如此一来点亮一盏LED灯就是入门操作了。
1. 建立Keil工程
Open Keil -> File -> New -> Project -> NXP -> LPC2131
第一步可以用Keil自带的Startup.s来学习
在工程配置里面勾上产生HEX文件,便于Proteus仿真用
同时选择Debug为Proteus,这样就可让Proteus和Keil联调了。
下面开始画Proteus电路图如下:
Proteus基本电路图很简单,基本上只要电源、接地接对了就可以跑了。
这样设置就可以让Keil和Proteus联调了
接下来就是写ARM的Code,由于我们用来Keil默认的Startup.s,所以第一步先不碰可怕的汇编。
像写PC程序一样写个main函数如下:
int main(void)
{
while(1);
}
编译通过,产生Hex文件,用如下方式让Proteus的ARM连接上Keil编译的HEX程序
这样Proteus就设定了ARM的程序输入的HEX文件
到这里就可用Keil和Proteus联调debug,虽然代码只有while(1),但是可以调试的。
接下来就是如何通过控制GPIO来点亮LED灯了。
了解2131控制GPIO有如下步骤:
1. 设置PIN的功能选择为GPIO
2. 设置PIN的输出方向
3. 设置PIN输出的电平1/0
对应程序如下:
// arm2131 ledon projec main function
#define vWriteReg(addr, val) (*((volatile unsigned long *)(addr)) = (val))
#define dReadReg(addr) (*((volatile unsigned long *)(addr)))
#define vWriteRegMask(addr, mask, val) vWriteReg(addr, dReadReg(addr) & (~(mask)) | (val&(mask)))
#define REG_BASE (0xE0000000)
#define REG_PIN0_SEL (REG_BASE + 0x2C000)
#define RET_IO0_ST (REG_BASE + 0x28000)
#define REG_IO0_SET (REG_BASE + 0x28004)
#define REG_IO0_DIR (REG_BASE + 0x28008)
#define REG_IO0_CLR (REG_BASE + 0x2800C)
int main(void)
{
// P0.0 function select as GPIO
vWriteRegMask(REG_PIN0_SEL, 0x03, 0x00);
vWriteReg(REG_IO0_DIR, 1<<0);
vWriteReg(REG_IO0_CLR, 1<<0);
while(1);
}
至此LED灯就被点亮啦。
如下是相应的工程文件。