keil 同时编译ARM和C51

本文详细介绍了如何在一个KEIL环境中实现C51与ARM的兼容编译,包括安装MDK、破解KEIL for ARM、链接C51动态库以及添加路径等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们之前用过keil编译过C51,ARM也是通过keil来编译的,但是我们用之前编译C51的keil来编译ARM时,发现是无法编译的,这是因为我们安装keil时破解是按照C51来破解的。有的同学为了编译C51和ARM,在电脑上同时安装了两个版本的keil,但是打开工程时也稍微有点麻烦,这里其实可以在一个keil下兼容编译,方法如下:

1 .安装MDK 

    安装过程比较简单,直接next就可以,安装好后安装路径下有如下四个文件。

     

2.破解keil  for ARM

    打开桌面上的keil ,在file下有个licensemanagement,打开,如下

    

   打开破解器

   

   点击generate生成注册码

   

 3.链接进C51的动态库

   将安装过keil  for C51的安装路径下的C51文件夹拷贝到现在MDK的安装路径下

  

这里的C51和ARM都是动态库,如果只破解一个就只会有一个库文件夹。

4.添加路径

  打开tools文件,已记事本打开,添加如下代码:

  

[C51]
PATH="C:\Keil\C51\"
VERSION=V9.00
BOOK0=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")
RTOS0=Dummy.DLL("Dummy")
RTOS1=RTXTINY.DLL ("RTX-51 Tiny")
RTOS2=RTX51.DLL ("RTX-51 Full")
LIC0=GEGKP-MSCX1-YLXC6-DKBC1-ZJPCT-SL63G
TDRV9=BIN\STCMON51.DLL ("STC Monitor-51 Driver")


5.再次破解

   

   


http://blog.youkuaiyun.com/sun980984305/article/details/52261706

   至此完成了。

<think>好的,用户想了解Keil5ARMC51编译器的差异。首先,我需要回顾一下自己关于Keil编译器的知识。Keil是一家提供嵌入式开发工具的公司,被ARM收购后,他们的产品主要包括针对不同架构的编译器。C51主要用于8051系列单片机,而MDK-ARM则用于ARM Cortex-M系列处理器。 根据引用内容,用户提供的资料提到C51MDK-ARMKeil5中的兼容性问题,以及安装方法。引用[1]详细列出了C51工具链的各个组件,比如Cx51、Ax51、BL51等,而ARM的工具链可能使用不同的编译器,如ARMCC或Clang。需要比较两者的编译器、链接器、优化策略、目标架构支持的外设库。 接下来,我得整理这些差异。例如,C51编译器针对8位8051架构,而ARM编译器处理32位指令集。优化方面,ARM编译器可能更注重代码大小速度的平衡,而C51可能更注重代码紧凑性,因为8051资源有限。链接器库管理器的不同也会影响生成的目标文件库的格式。 还要考虑开发环境中的配置差异,比如启动文件、中断处理外设库。引用[3]提到安装时要兼容不同单片机,可能需要同时安装两个工具链,并正确配置工程设置,避免冲突。用户可能在实际使用中遇到如何切换编译器或管理不同项目的问题,这也需要解释。 另外,用户的问题可能隐含更深层的需求,比如项目迁移或跨平台开发,需要说明两者不兼容的原因,以及可能的解决方案。例如,不能直接将C51代码用于ARM项目,但可以通过条件编译或硬件抽象层来处理。 最后,确保回答结构清晰,分点列出差异,并生成相关问题帮助用户进一步学习。需要检查LaTeX格式是否正确,数学表达式如版本号是否用$符号包裹,独立公式单独成段。同时,引用标识要正确对应,比如引用[1]关于工具链组件的描述,引用[2][3]关于安装兼容性。</think>### Keil5ARM与C51编译器差异分析 #### 1. **目标架构差异** - **C51编译器**:专为Intel 8051及其兼容的8位单片机设计,支持传统51内核架构,如STC89系列[^3]。 - **ARM编译器**:面向ARM Cortex-M系列32位微控制器(如STM32),支持Thumb/Thumb-2指令集。 #### 2. **工具链组成对比** | 组件类型 | C51工具链 | ARM工具链 | |---------------|---------------------|-------------------------| | **编译器** | Cx51(C语言) | ARMCC/Clang(C/C++) | | **汇编器** | Ax51(ASM51语法) | ARMASM(ARM汇编语法) | | **链接器** | BL51/LX51 | ARMLINK | | **优化能力** | 侧重代码密度优化 | 支持速度与大小平衡优化 | #### 3. **代码生成特性** - **内存模型**: - C51采用分页内存管理(如`data`/`xdata`段),需手动指定变量存储区域。 - ARM编译器直接使用32位扁平地址空间,例如: ```c // C51中显式声明存储类型 xdata char buffer[256]; // 外部RAM ``` #### 4. **开发环境配置** - **工程文件**: - C51工程扩展名为`.UVPROJ` - ARM工程为`.UVPROJX`(XML格式) - **库兼容性**: $$ \text{C51库格式(.LIB)} \neq \text{ARM库格式(.AR)} $$ #### 5. **性能指标对比** | 指标 | C51编译器 | ARM编译器 | |---------------|--------------------|---------------------| | 代码密度 | 高(针对8位优化) | 中等(32位指令集) | | 执行速度 | 1-24 MHz主频 | 16-480 MHz主频 | | 浮点运算 | 软件模拟 | 硬件FPU支持 | #### 6. **调试功能差异** - C51仅支持基本JTAG/SWD调试 - ARM编译器支持Trace功能(如ETM/ITM),可实时监控变量: ```c __attribute__((section(".bss.var"))) int sensor_value; // ARM特定修饰 ``` #### 7. **安装与兼容性** - 需分别安装C51MDK-ARM软件包[^2] - 注册表冲突解决方案:按顺序`C51 → MDK-ARM → C51`重复安装[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值