专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

怎样让Keil软件同时兼容51单片机和ARM单片机的问题

作者:佚名   来源:本站原创   点击数:  更新时间:2013年08月04日   【字体:
        相信学ARM的童鞋大多数都是先学过51的,你如果用Keil这样的编译环境的话,也许你会发现之前学校51的Keil开发环境无法兼容ARM,或者你在做项目,同时要用到Keil开发51单片机和ARM单片机,这个时候就开始无奈了,发现装了keil C或ADK 里面都只有51或者ARM一种单片机核可供选。难道要我们分别安装这两个软件?答案是不可取的,经过了解,KEIL公司是被ARM公司收购了,自从是一家人以后,它们总该相处得好点吧,至少兼容问题总不能自家人排斥自家人,那就太不够意思了,呵呵。
        这几天因为公司的破电脑只有 10G的C盘空间被我装软件以及桌面上放的各种文件给填满了,所以打算把一些软件移到其它盘,删除了KEIL软件以后,发现之前可以同时编译51和ARM 的keil夭折了,所以自己研究了一下,把它的过程记录下来留着以后可作参考。具体方法如下:
第一步到http://www.51hei.com/ 下载并安装Keil C:
直接找开Keil C一直下一步,中间填下SN码,这个在破解的KEIL C软件里面都会有的。安装完成后的环境如下:


第二步把上图Tools文件用文本的方式打开并复制里面的内容保存起来,内容如下:

 
[C51]
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS51.PDF("uVision2 Getting Started")
BOOK2=HLP\C51.PDF("C51 User's Guide")
BOOK3=HLP\C51LIB.CHM("C51 Library Functions",C)
BOOK4=HLP\A51.PDF("Assembler/Utilities")
BOOK5=HLP\TR51.CHM("RTX51 Tiny User's Guide")
BOOK6=HLP\DBG51.CHM("uVision2 Debug Commands")
BOOK7=ISD51\ISD51.HTM("ISD51 In System Debugger")
BOOK8=HLP\FlashMon.CHM("Flash Monitor")
BOOK9=MON390\MON390.HTM("MON390: Dallas Contiguous Mode Monitor")
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")
RTOS1=RTXTINY.DLL ("RTX-51 Tiny")
RTOS2=RTX51.DLL ("RTX-51 Full")
Version=V7.0
PATH="D:\Keil\C51"
SN=K1DZP-5IUSH-A01UE


 
我用的软件兼容性还是蛮好的,里面有C251,,,C51的声明段,因为我只要用到51和ARM兼容,所以我只把C51的代码复制下来就行了。
第三步安装ADK,这里要注意ADK的版本要比KEIL C的版本高一个等级,只有这样才能兼容,如果不这样的话,可能调试功能部分会有问题。比如KEIL与proteus进行调试时会出现调试不了的问题。
安装ADK同上,直接下一步,有提示要SN号的时候在软件里面找了复制,粘贴就行了。安装路径跟KEIL C的路径一样就行了,我在网上看有人说不能同一个路径,其实同个路径好点,省了过会要复制两次代码,而且还不用搞两个电路在电脑,又麻烦又不方便。安装后的效果如下:

接着打开TOOLS文件,把上面的代码复制,粘贴上去。
[UV2]
BOOK0=UV3\RELEASE_NOTES.HTM("uVision Release Notes")
BOOK1=
ARMUSE=0
rem ARMUSE= 0:=Cygnus/GNU, 1:=ARM-ADS, 2:=Keil (future)
Version=V2.2
ORGANIZATION="LN"
NAME="admin Michael", "DSD"
EMAIL="LUSSBY"
ARMSEL=1
 
[C166]
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS166.PDF("uVision2 Getting Started")
BOOK2=HLP\C166.PDF("C166 User's Guide")
BOOK3=HLP\C166LIB.CHM("C166 Library Functions",C)
BOOK4=HLP\EC166.CHM("EC166 Embedded C++")
BOOK5=HLP\A166.PDF("A166 & Utilities User's Guide")
BOOK6=HLP\DBG166.CHM("uVision2 Debug Commands")
BOOK7=HLP\OCDS.CHM("OCDS Debugging")
TDRV0=MONITOR\MON166.DLL ("Keil Monitor-166 Driver")
TDRV1=OCDS\CBC166.DLL ("OCDS Driver for C16xU/H/UTAH")
TDRV2=OCDS\OCDSXC.DLL ("OCDS Driver for XC16x")
RTOS1=RTXTINY.DLL ("RTX-166 Tiny")
RTOS2=RTXFULL.DLL ("RTX-166 Full")
Version=V4.2
[C51]
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS51.PDF("uVision2 Getting Started")
BOOK2=HLP\C51.PDF("C51 User's Guide")
BOOK3=HLP\C51LIB.CHM("C51 Library Functions",C)
BOOK4=HLP\A51.PDF("Assembler/Utilities")
BOOK5=HLP\TR51.CHM("RTX51 Tiny User's Guide")
BOOK6=HLP\DBG51.CHM("uVision2 Debug Commands")
BOOK7=ISD51\ISD51.HTM("ISD51 In System Debugger")
BOOK8=HLP\FlashMon.CHM("Flash Monitor")
BOOK9=MON390\MON390.HTM("MON390: Dallas Contiguous Mode Monitor")
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")
RTOS1=RTXTINY.DLL ("RTX-51 Tiny")
RTOS2=RTX51.DLL ("RTX-51 Full")
Version=V7.0
PATH="D:\Keil\C51"
SN=K1DZP-5IUSH-A01UE
[C251]
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\GS51.PDF("uVision2 Getting Started")
BOOK2=HLP\C251.PDF("C251 User's Guide")
BOOK3=HLP\C251LIB.CHM("C251 Library Functions",C)
BOOK4=HLP\A51.PDF("Assembler/Utilities")
BOOK5=HLP\DBG251.CHM("uVision2 Debug Commands")
TDRV0=BIN\MON251.DLL ("Keil Monitor-251 Driver")
Version=V3.5
[ARM]
PATH="D:\Keil\ARM"
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\ARMTOOLS.chm("Complete User's Guide Selection", C)
BOOK2=HLP\RL_RELEASE_NOTES.HTM("RTL-ARM Release Notes")
BOOK3=HLP\RVI.chm("RV Compiler Introduction")
BOOK4="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\gcc\gcc.pdf" ("GNU C Compiler",GEN)
TDRV0=ULINK\ARM7.DLL("ULINK ARM7 Debugger")
Version=3.80a
PATH1="C:\Program Files\CodeSourcery\Sourcery G++ Lite\"
CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV8)                             # Drivers for ARM7/9 devices
CPUDLL1=SARMCM3.DLL(TDRV1,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8)              # Drivers for Cortex-M devices
BOOK5="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\as.pdf" ("GNU Assembler",GEN)
BOOK6="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\ld.pdf" ("GNU Linker",GEN)
BOOK7="C:\Program Files\CodeSourcery\Sourcery G++ Lite\share\doc\arm-2007q3-53-arm-none-eabi\pdf\binutils.pdf" ("GNU Binary Utilities",GEN)
TDRV1=BIN\UL2ARM.DLL("ULINK ARM Debugger")
TDRV2=BIN\UL2CM3.DLL("ULINK Cortex Debugger")
TDRV3=BIN\AGDIRDI.DLL("RDI Interface Driver")
TDRV4=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")
TDRV5=BIN\lmidk-agdi.dll("Luminary Eval Board")
TDRV6=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")
TDRV7=Segger\JLTAgdi.dll("J-LINK / J-TRACE")
TDRV8=Segger\JL2CM3.dll("Cortex-M3 J-LINK")
TDRV9=STLink\ST-LINKIII-KEIL.dll ("ST-Link Debugger")
[ARMADS]
PATH="D:\Keil\ARM"
PATH1="BIN40"
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\ARMTOOLS.chm("Complete User's Guide Selection", C)
BOOK2=HLP\RL_RELEASE_NOTES.HTM("RTL-ARM Release Notes")
BOOK3=HLP\RVI.chm("RV Compiler Introduction")
BOOK4=
BOOK5=
TDRV0=ULINK\ARM7.DLL("ULINK ARM7 Debugger")
Version=V0.1
 
CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV8)                             # Drivers for ARM7/9 devices
CPUDLL1=SARMCM3.DLL(TDRV1,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8)              # Drivers for Cortex-M devices
TDRV1=BIN\UL2ARM.DLL("ULINK ARM Debugger")
TDRV2=BIN\UL2CM3.DLL("ULINK Cortex Debugger")
TDRV3=BIN\AGDIRDI.DLL("RDI Interface Driver")
TDRV4=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")
TDRV5=BIN\lmidk-agdi.dll("Luminary Eval Board")
TDRV6=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")
TDRV7=Segger\JLTAgdi.dll("J-LINK / J-TRACE")
TDRV8=Segger\JL2CM3.dll("Cortex-M3 J-LINK")
TDRV9=STLink\ST-LINKIII-KEIL.dll ("ST-Link Debugger")
RTOS0=Dummy.DLL("Dummy")
RTOS1=ARTXARM.DLL ("RTX Kernel")
[KARM]
PATH="D:\Keil\ARM"
CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV8)                             # Drivers for ARM7/9 devices
CPUDLL1=SARMCM3.DLL(TDRV1,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8)              # Drivers for Cortex-M devices
BOOK0=HLP\RELEASE_NOTES.HTM("Release Notes")
BOOK1=HLP\RL_RELEASE_NOTES.HTM("RTL-ARM Release Notes")
BOOK2=HLP\ARMTOOLS.chm("Complete User's Guide Selection", C)
BOOK3=HLP\RVI.chm("RV Compiler Introduction")
TDRV0=BIN\UL2ARM.DLL("ULINK ARM Debugger")
TDRV1=BIN\UL2CM3.DLL("ULINK Cortex Debugger")
TDRV2=BIN\AGDIRDI.DLL("RDI Interface Driver")
TDRV3=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger")
TDRV4=BIN\lmidk-agdi.dll("Luminary Eval Board")
TDRV5=Signum\SigUV3Arm.dll("Signum Systems JTAGjet")
TDRV6=Segger\JLTAgdi.dll("J-LINK / J-TRACE")
TDRV7=Segger\JL2CM3.dll("Cortex-M3 J-LINK")
TDRV8=STLink\ST-LINKIII-KEIL.dll ("ST-Link Debugger")
RTOS0=Dummy.DLL("Dummy")
RTOS1=ARTXARM.DLL ("RTX Kernel")
此时可以发现,当我们打开KEIL的时候,里面有了ARM的头文件,也有51的头文件了,^-^   .
接下来先别高兴,还有一个步骤
要做,那就是分别给ARM和51注册库了。具体是打开安装好的KEIL,在FILE->license Managetment
点PK51 prof.Develpors Kit,复制 CID。接着打开ADK软件里面的注册机,如下


粘贴到CID里面,,TARGET选择51,如果是注册ARM就选择ARM,然后点GENERATE,会在上面横条那生成一串注册码,复制,粘贴到上图LicenseManagetment的New License IdCODE,并点后期ADD LIC即可。
因为注册ARM跟Keil C51的注册一样,就不累赘了。注册完成后效果如下:


可以看到51和ARM都已经注册完成,时间可以使用的时候是到2020年的六月和九月。 至此我们的KEIL软件可以兼容51和ARM单片机了。
关闭窗口

相关文章