关于μkeil v5.40(keil5) 如何使用STM32(ARM)虚拟下载器进行Proteus联调

最近我心血来潮,想用Proteus+keil5进行联调,但仔细在网上一找,全是某SDN扒下来的陈年老黑X,都快转出数字包浆了还在用,完完全全跟不上时代,也全是51单片机的版本,STM32(ARM)根本不能用。

于是博主心一横,就用了一天研究了一下,STM32(ARM)到底该怎么进行proteus联调。关于μkeil v5.40(keil5) 如何使用STM32(ARM)虚拟下载器进行Proteus联调

想法有了,该从哪里开始查呢?博主看了一下某SDN漫天乱飘的VDM51.dll,于是决定从这个源头找起。(不得不佩服一下某SDN的污染力,博主用的国际版必应搜索,结果依旧是某SDN的骨灰到处乱飘关于μkeil v5.40(keil5) 如何使用STM32(ARM)虚拟下载器进行Proteus联调

中间找到了两个用了VDM名称的github项目,博主总算在某个外网的咨询帖子里找到了点苗头,就是它——"VDMARM.dll"

原帖地址:使用 Proteus VSM 进行 Keil ARM MDK 5 远程调试 - Keil 论坛 - 支持论坛 - Arm 社区

顺藤摸瓜,顺着这个名字,博主又找到了一个名称,可惜这次是在某SDN上找到的(虽然一直在骂某SDN,但有时候确实不得不承认它好用。。。)(好用就完了,至于为什么只有它好用,别管关于μkeil v5.40(keil5) 如何使用STM32(ARM)虚拟下载器进行Proteus联调

STM32+Keil 5+proteus 8 编程、仿真方法汇总_stm32、keil5和proteus8编程、仿真汇总-CSDN博客

该贴指出了一个从没在那一堆坟堆一样的“VDM51.dll”里出现过的东西——"vdmagdi.exe",同时还给出了这个东西的具体来历,罕见的某SDN精品贴啊,就是不知道是原帖?还是秽土转生。

vdmagdi.exe原帖:vdmagdi的安装

然后,等博主把这个vdmagdi.exe下载下来之后,发现了一个有趣的事:

关于μkeil v5.40(keil5) 如何使用STM32(ARM)虚拟下载器进行Proteus联调

看看这产品名称!是Uv2(keil2)时期的!博主从没用过这个时期的keil,难怪找不到。

安装完之后,这东西会在你的keil目录下的 ./C51/BIN 里和 ./ARM/BIN 里各自放一个 VDMC51.dll 和 VDMARM.dll 以及在 ./ARM/Hlp 里加一个 VDMAGDI.HLP。

最后重点来了,博主在安装完之后遇到了keil5不断报错,意思差不多是说“keil根目录下的TOOLS.INI有个 [未知小节] ,其中提供了无效的PATH参数”。

于是博主就又来康康是怎么个回事了

仔细一看,原来是安装完之后vdmagdi.exe给TOOLS.INI的末尾加了个旧版本的[KARM]小节

关于μkeil v5.40(keil5) 如何使用STM32(ARM)虚拟下载器进行Proteus联调

查看代码

[KARM] TDRV0=BINVDMARM.DLL ("Proteus VSM Simulator") BOOK0=HLPVDMAGDI.HLP ("Proteus VSM AGDI Driver")

这玩意跟现在μkeil v5.40后的版本完全不符,因此才会报错,把这个小节删掉就不会再报错了。

关于μkeil v5.40(keil5) 如何使用STM32(ARM)虚拟下载器进行Proteus联调

顺便把我研究了以下的keil5的INI结构,注释一下发上来,有需要的可以参考一下:

查看代码

  [ARM] # Path: 该节配置的路径,其余所有路径都是以该路径为相对路径(必须) PATH= "C:Keil_v5ARM "  # VERSION: 版本号,疑似不必须 VERSION=5.40  #TOOLPREFIX: 未知,疑似不必须 TOOLPREFIX=arm-none-eabi-  #LIC: 该小节指代版本的LIC认证,不必须 LIC0=GE7DL-07RZ8-06JQU-SSDA3-6BJKI-KEE5L #CPUDLLx: 下载器配置,以以下配置确定该工程可用哪些下载器,如CM3/4系列的工程的debugger只能是 SARMCM3.DLL 后面括号中的符号所指代的下载器 CPUDLL0=SARM.DLL(TDRV0,TDRV4,TDRV5,TDRV8,TDRV21)    # 可下载到 ARM7/9 设备的下载器 CPUDLL1=SARMCM3.DLL(TDRV1,TDRV2,TDRV3,TDRV4,TDRV6,TDRV7,TDRV9,TDRV10,TDRV11,TDRV12,TDRV13,TDRV14,TDRV15,TDRV16,TDRV21)    # 可下载到 Cortex-M 设备的下载器 CPUDLL2=SARMCR4.DLL(TDRV6,TDRV21)    # 可下载到 Cortex-R4 设备的下载器 CPUDLL3=SARMV8M.DLL(TDRV15,TDRV6,TDRV11,TDRV9,TDRV14,TDRV17,TDRV18,TDRV19,TDRV20,TDRV21)     # 可下载到 ARMv8-M 设备的下载器 #DELDRVPKGx: 未知,不必须 DELDRVPKG0=ULINKUninstallULINK.exe("ULINK Pro Driver V1.0") #BOOKx: 说明文件,不必须,括号内为在程序内显示的名字 BOOK0=HLPRELEASE_NOTES.HTM("Release Notes for MDK 5.40",GEN) BOOK1=HLPARMTOOLS.chm("Complete User's Guide Selection",C) BOOK2=HLPVDMAGDI.HLP ("Proteus VSM AGDI Debugger") #TDRVx: 下载器驱动DLL,括号内为在程序内显示的名字 TDRV0=BINUL2ARM.DLL("ULINK2/ME ARM Debugger") TDRV1=BINUL2CM3.DLL("ULINK2/ME Cortex Debugger") TDRV2=BINABLSTCM.dll("Altera Blaster Cortex Debugger") TDRV3=BINlmidk-agdi.dll("Stellaris ICDI") TDRV4=SignumSigUV3Arm.dll("Signum Systems JTAGjet") TDRV5=SeggerJLTAgdi.dll("J-LINK / J-TRACE ARM") TDRV6=SeggerJL2CM3.dll("J-LINK / J-TRACE Cortex") TDRV7=BINULP2CM3.DLL("ULINK Pro Cortex Debugger") TDRV8=BINULP2ARM.DLL("ULINK Pro ARM Debugger") TDRV9=NULinkNu_Link.dll("NULink Debugger") TDRV10=SiLabsSLAB_CM_Keil.dll("SiLabs UDA Debugger") TDRV11=STLinkST-LINKIII-KEIL_SWO.dll ("ST-Link Debugger") TDRV12=BINCMSIS_AGDI.dll("CMSIS-DAP Debugger") TDRV13=BINDbgFM.DLL("Models Cortex-M Debugger") TDRV14=PEMicroPemicro_ArmCortexInterface.dll("Pemicro Debugger") TDRV15=BINULPL2CM3.dll("ULINKplus Debugger") TDRV16=TI_XDSXDS2CM3.dll("TI XDS Debugger") TDRV17=BINULP2V8M.DLL("ULINK Pro ARMv8-M Debugger") TDRV18=BINUL2V8M.DLL("ULINK2/ME ARMv8-M Debugger") TDRV19=BINCMSIS_AGDI_V8M.DLL("CMSIS-DAP ARMv8-M Debugger") TDRV20=BINDbgFMv8M.DLL("Models ARMv8-M Debugger") TDRV21=BINVDMARM.DLL("Proteus VSM Monitor Debugger")

 以及记得在ARM节的最后,额外加上VDMARM.dll这个下载器,括号内可以自主命名,前面的序号需要符合TDRVx的格式,我个人是用的TDRV21。

 以及最后,贴一下vdmagdi.exe文件,免得源网址失效,大家再找来找去了:

下载:https://wwuh.lanzout.com/iHewq2uqkskh 密码:28bi

发表评论

评论已关闭。

相关文章