找回密码
 立即注册
首页 业界区 业界 关于μkeil v5.40(keil5) 如何使用STM32(ARM)虚拟下载器 ...

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

数察啜 5 天前
最近我心血来潮,想用Proteus+keil5进行联调,但仔细在网上一找,全是某SDN扒下来的陈年老黑X,都快转出数字包浆了还在用,完完全全跟不上时代,也全是51单片机的版本,STM32(ARM)根本不能用。
于是博主心一横,就用了一天研究了一下,STM32(ARM)到底该怎么进行proteus联调。
1.gif

想法有了,该从哪里开始查呢?博主看了一下某SDN漫天乱飘的VDM51.dll,于是决定从这个源头找起。(不得不佩服一下某SDN的污染力,博主用的国际版必应搜索,结果依旧是某SDN的骨灰到处乱飘
2.gif

中间找到了两个用了VDM名称的github项目,博主总算在某个外网的咨询帖子里找到了点苗头,就是它——"VDMARM.dll"
原帖地址:使用 Proteus VSM 进行 Keil ARM MDK 5 远程调试 - Keil 论坛 - 支持论坛 - Arm 社区
顺藤摸瓜,顺着这个名字,博主又找到了一个名称,可惜这次是在某SDN上找到的(虽然一直在骂某SDN,但有时候确实不得不承认它好用。。。)(好用就完了,至于为什么只有它好用,别管
3.gif

STM32+Keil 5+proteus 8 编程、仿真方法汇总_stm32、keil5和proteus8编程、仿真汇总-CSDN博客
该贴指出了一个从没在那一堆坟堆一样的“VDM51.dll”里出现过的东西——"vdmagdi.exe",同时还给出了这个东西的具体来历,罕见的某SDN精品贴啊,就是不知道是原帖?还是秽土转生。
vdmagdi.exe原帖:vdmagdi的安装
然后,等博主把这个vdmagdi.exe下载下来之后,发现了一个有趣的事:
4.png

看看这产品名称!是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]小节
5.png

查看代码
  1. [KARM]
  2. TDRV0=BIN\VDMARM.DLL ("Proteus VSM Simulator")
  3. BOOK0=HLP\VDMAGDI.HLP ("Proteus VSM AGDI Driver")
复制代码
这玩意跟现在μkeil v5.40后的版本完全不符,因此才会报错,把这个小节删掉就不会再报错了。
6.png

顺便把我研究了以下的keil5的INI结构,注释一下发上来,有需要的可以参考一下:
查看代码
  1.  
  2. [ARM]
  3. # Path: 该节配置的路径,其余所有路径都是以该路径为相对路径(必须)
  4. PATH= "C:\Keil_v5\ARM\ "
  5. # VERSION: 版本号,疑似不必须
  6. VERSION=5.40
  7. #TOOLPREFIX: 未知,疑似不必须
  8. TOOLPREFIX=arm-none-eabi-
  9. #LIC: 该小节指代版本的LIC认证,不必须
  10. LIC0=GE7DL-07RZ8-06JQU-SSDA3-6BJKI-KEE5L
  11. #CPUDLLx: 下载器配置,以以下配置确定该工程可用哪些下载器,如CM3/4系列的工程的debugger只能是 SARMCM3.DLL 后面括号中的符号所指代的下载器
  12. CPUDLL0=SARM.DLL(TDRV0,TDRV4,TDRV5,TDRV8,TDRV21)    # 可下载到 ARM7/9 设备的下载器
  13. CPUDLL1=SARMCM3.DLL(TDRV1,TDRV2,TDRV3,TDRV4,TDRV6,TDRV7,TDRV9,TDRV10,TDRV11,TDRV12,TDRV13,TDRV14,TDRV15,TDRV16,TDRV21)    # 可下载到 Cortex-M 设备的下载器
  14. CPUDLL2=SARMCR4.DLL(TDRV6,TDRV21)    # 可下载到 Cortex-R4 设备的下载器
  15. CPUDLL3=SARMV8M.DLL(TDRV15,TDRV6,TDRV11,TDRV9,TDRV14,TDRV17,TDRV18,TDRV19,TDRV20,TDRV21)     # 可下载到 ARMv8-M 设备的下载器
  16. #DELDRVPKGx: 未知,不必须
  17. DELDRVPKG0=ULINK\UninstallULINK.exe("ULINK Pro Driver V1.0")
  18. #BOOKx: 说明文件,不必须,括号内为在程序内显示的名字
  19. BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes for MDK 5.40",GEN)
  20. BOOK1=HLP\ARMTOOLS.chm("Complete User's Guide Selection",C)
  21. BOOK2=HLP\VDMAGDI.HLP ("Proteus VSM AGDI Debugger")
  22. #TDRVx: 下载器驱动DLL,括号内为在程序内显示的名字
  23. TDRV0=BIN\UL2ARM.DLL("ULINK2/ME ARM Debugger")
  24. TDRV1=BIN\UL2CM3.DLL("ULINK2/ME Cortex Debugger")
  25. TDRV2=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")
  26. TDRV3=BIN\lmidk-agdi.dll("Stellaris ICDI")
  27. TDRV4=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")
  28. TDRV5=Segger\JLTAgdi.dll("J-LINK / J-TRACE ARM")
  29. TDRV6=Segger\JL2CM3.dll("J-LINK / J-TRACE Cortex")
  30. TDRV7=BIN\ULP2CM3.DLL("ULINK Pro Cortex Debugger")
  31. TDRV8=BIN\ULP2ARM.DLL("ULINK Pro ARM Debugger")
  32. TDRV9=NULink\Nu_Link.dll("NULink Debugger")
  33. TDRV10=SiLabs\SLAB_CM_Keil.dll("SiLabs UDA Debugger")
  34. TDRV11=STLink\ST-LINKIII-KEIL_SWO.dll ("ST-Link Debugger")
  35. TDRV12=BIN\CMSIS_AGDI.dll("CMSIS-DAP Debugger")
  36. TDRV13=BIN\DbgFM.DLL("Models Cortex-M Debugger")
  37. TDRV14=PEMicro\Pemicro_ArmCortexInterface.dll("Pemicro Debugger")
  38. TDRV15=BIN\ULPL2CM3.dll("ULINKplus Debugger")
  39. TDRV16=TI_XDS\XDS2CM3.dll("TI XDS Debugger")
  40. TDRV17=BIN\ULP2V8M.DLL("ULINK Pro ARMv8-M Debugger")
  41. TDRV18=BIN\UL2V8M.DLL("ULINK2/ME ARMv8-M Debugger")
  42. TDRV19=BIN\CMSIS_AGDI_V8M.DLL("CMSIS-DAP ARMv8-M Debugger")
  43. TDRV20=BIN\DbgFMv8M.DLL("Models ARMv8-M Debugger")
  44. TDRV21=BIN\VDMARM.DLL("Proteus VSM Monitor Debugger")
复制代码
 以及记得在ARM节的最后,额外加上VDMARM.dll这个下载器,括号内可以自主命名,前面的序号需要符合TDRVx的格式,我个人是用的TDRV21。
 以及最后,贴一下vdmagdi.exe文件,免得源网址失效,大家再找来找去了:
下载:https://wwuh.lanzout.com/iHewq2uqkskh 密码:28bi

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册