C51和MDK-ARM共存方法(uVision5)

本文提供了优快云博客的一个示例链接,展示了如何分享技术文章并进行交流。

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

https://blog.youkuaiyun.com/ouening/article/details/52280137
正常情况下MDK是不能同时支持51AMM的,除非装两个,但是这样太麻烦了,这个修改方法很简单,已经用了很久了,不知道的可以试试。 首先先装ARM版,破解一下,然后把安装目录下的 TOOLS.INI 文件里面添加红字内容(最好备份下),注意路径 [UV2] CDB0=UV4\STC.CDB("STC") ORGANIZATION="Microsoft" NAME="Microsoft", "1" EMAIL="1" ARMSEL=1 USERTE=1 BOOK0="UV4\RELEASE_NOTES.HTM" ("uVision Release Notes",GEN) RTEPATH="D:\KEIL05\PACK" DEVICE_BOOKS= SocketPort=1969854680 [ARM] PATH="D:\KEIL05\ARM\" VERSION=5.00 PATH1="C:\Program Files\GNU Tools ARM Embedded\4.7 2012q4\" TOOLPREFIX=arm-none-eabi- CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV9) # Drivers for ARM7/9 devices CPUDLL1=SARMCM3.DLL(TDRV1,TDRV2,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8,TDRV10,TDRV11,TDRV12,TDRV13,TDRV14,TDRV15) # Drivers for Cortex-M devices CPUDLL2=SARMCR4.DLL(TDRV7) # Drivers for Cortex-R4 devices BOOK0="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\AGDIRDI.DLL("RDI Interface Driver") TDRV3=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger") TDRV4=BIN\lmidk-agdi.dll("Stellaris ICDI") TDRV5=Signum\SigUV3Arm.dll("Signum Systems JTAGjet") TDRV6=Segger\JLTAgdi.dll("J-LINK / J-TRACE ARM") TDRV7=Segger\JL2CM3.dll("J-LINK / J-TRACE Cortex") TDRV8=BIN\ULP2CM3.DLL("ULINK Pro Cortex Debugger") TDRV9=BIN\ULP2ARM.DLL("ULINK Pro ARM Debugger") TDRV10=NULink\Nu_Link.dll("NULink Debugger") TDRV11=SiLabs\SLAB_CM_Keil.dll("SiLabs UDA Debugger") TDRV12=STLink\ST-LINKIII-KEIL_SWO.dll ("ST-Link Debugger") TDRV13=BIN\CMSIS_AGDI.dll("CMSIS-DAP Debugger") TDRV14=BIN\DbgFM.DLL("Fast Models Debugger") TDRV15=PEMicro\Pemicro_ArmCortexInterface.dll("PEMicro Debugger") LIC0=TIV74-FXUYI-GI05Q-NP6N4-0EQBH-JEH8Y [ARMADS] PATH="D:\KEIL05\ARM\" PATH1=".\ARMCC\bin\" CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV9) # Drivers for ARM7/9 devices CPUDLL1=SARMCM3.DLL(TDRV1,TDRV2,TDRV3,TDRV4,TDRV5,TDRV7,TDRV8,TDRV10,TDRV11,TDRV12,TDRV13,TDRV14,TDRV15) # Drivers for Cortex-M devices CPUDLL2=SARMCR4.DLL(TDRV7) # Drivers for Cortex-R4 devices BOOK0="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\AGDIRDI.DLL("RDI Interface Driver") TDRV3=BIN\ABLSTCM.dll("Altera Blaster Cortex Debugger") TDRV4=BIN\lmidk-agdi.dll("Stellaris ICDI") TDRV5=Signum\SigUV3Arm.dll("Signum Systems JTAGjet") TDRV6=Segger\JLTAgdi.dll("J-LINK / J-TRACE ARM") TDRV7=Segger\JL2CM3.dll("J-LINK / J-Trace Cortex") TDRV8=BIN\ULP2CM3.DLL("ULINK Pro Cortex Debugger") TDRV9=BIN\ULP2ARM.DLL("ULINK Pro ARM Debugger") TDRV10=NULink\Nu_Link.dll("NULink Debugger") TDRV11=SiLabs\SLAB_CM_Keil.dll("SiLabs UDA Debugger") TDRV12=STLink\ST-LINKIII-KEIL_SWO.dll ("ST-Link Debugger") TDRV13=BIN\CMSIS_AGDI.dll("CMSIS-DAP Debugger") TDRV14=BIN\DbgFM.DLL("Fast Models Debugger") TDRV15=PEMicro\Pemicro_ArmCortexInterface.dll("PEMicro Debugger") RTOS0=Dummy.DLL("Dummy") RTOS1=VARTXARM.DLL ("RTX Kernel") [C51] PATH="D:\KEIL05\C51\"\" \" SN=K1DZP-5IUSH-A01UE VERSION=V9.01 BOOK0="HLP\RELEASE_NOTES.HTM" ("Release Notes",GEN) BOOK1="HLP\GS51.PDF" ("uVision2 Getting Started",GEN) BOOK2="HLP\C51.PDF" ("C51 User's Guide",GEN) BOOK3="HLP\C51LIB.CHM" ("C51 Library Functions",C) BOOK4="HLP\A51.PDF" ("Assembler/Utilities",GEN) BOOK5="HLP\TR51.CHM" ("RTX51 Tiny User's Guide",GEN) BOOK6="HLP\DBG51.CHM" ("uVision2 Debug Commands",GEN) BOOK7="HLP\ISD51.CHM" ("ISD51 In System Debugger",GEN) BOOK8="HLP\FlashMon51.CHM" ("Flash Monitor",GEN) BOOK9="MON390\MON390.HTM" ("MON390: Dallas Contiguous Mode Monitor",GEN) 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") RTOS1=RTXTINY.DLL ("RTX-51 Tiny") RTOS2=RTX51.DLL ("RTX-51 Full") LIC0=76PCX-HP74U-IRIXW-QEPXN-32TWY-CALVY [C251] BOOK0="HLP\RELEASE_NOTES.HTM" ("Release Notes",GEN) BOOK1="HLP\GS51.PDF" ("uVision2 Getting Started",GEN) BOOK2="HLP\C251.PDF" ("C251 User's Guide",GEN) BOOK3="HLP\C251LIB.CHM" ("C251 Library Functions",C) BOOK4="HLP\A51.PDF" ("Assembler/Utilities",GEN) BOOK5="HLP\DBG251.CHM" ("uVision2 Debug Commands",GEN) TDRV0=BIN\MON251.DLL ("Keil Monitor-251 Driver") VERSION=V3.5
<think>好的,我现在需要帮助用户解决在Keil 5中将C51项目转换为MDK项目的问题。首先,我需要回忆一下用户提供的引用内容,看看是否有相关的步骤或者教程。 根据引用[1][2],用户提到了Keil uVision5MDKC51的合并教程,以及如何共存方法。这说明用户可能已经安装了这两个版本,现在需要将现有的C51项目迁移到MDK环境中。我需要先确认转换的基本步骤,比如项目结构的调整、编译器的切换等。 接下来,用户可能需要了解具体的操作步骤,例如如何修改项目配置中的目标选项,将C51的编译器更换为ARM的编译器。同时,可能涉及到头文件库文件的路径调整,因为C51MDK使用的芯片架构不同,一个是8051,另一个是ARM Cortex-M等。因此,需要确保所有的依赖库都正确指向MDK的安装目录。 另外,引用[3][4]提到了Keil C51的安装汉化包,可能用户在使用中文界面,需要注意界面选项的位置是否与英文版一致。不过转换项目主要涉及配置设置,可能不受语言影响,但需要指导用户找到正确的菜单项。 可能的步骤包括:备份项目、创建新的MDK工程、导入源文件、配置设备型号、调整编译器选项、处理启动文件链接脚本等。需要提醒用户注意C51ARM在内存架构上的差异,可能需要修改代码中的特定部分,比如中断处理函数或硬件相关的寄存器访问。 此外,用户可能遇到常见问题,例如编译错误,找不到头文件或库,这时候需要检查包含路径库路径是否正确引用MDK的目录。还有链接阶段的错误,可能由于启动文件或分散加载文件配置不当导致。 需要确保步骤清晰,逐步引导用户完成转换,同时提供验证方法,比如编译测试调试。最后,生成相关问题,帮助用户深入理解转换过程中可能涉及的其他方面,比如兼容性处理或性能优化。</think>### Keil 5 C51项目转MDK项目步骤 1. **环境准备** - 确保已安装Keil MDKC51共存环境(参考引用[1][^1][^2]) - 备份原始C51项目,防止操作失误导致文件丢失 2. **新建MDK工程** - 打开Keil MDK,选择 `Project > New μVision Project` - 指定存储路径,选择目标芯片型号(如STM32系列) 3. **导入C51源码** - 将原C51项目的`.c``.h`文件复制到新工程目录 -MDK工程中右键`Add Existing Files to Group`,添加所有源文件 4. **配置编译器与设备** - 右键工程名选择`Options for Target` - 在`Target`选项卡中选择ARM编译器(如`Use ARM Compiler`) - 在`Device`选项卡中选择对应ARM芯片型号 5. **调整代码兼容性** - **内存映射修改**:将C51特有的`xdata`/`idata`等修饰符替换为MDK支持的`__attribute__`语法 ```c // 原C51代码 unsigned char xdata buffer[256]; // MDK修改后 unsigned char __attribute__((section(".ARM.__at_0x20000000"))) buffer[256]; ``` - **中断处理**:将C51的`interrupt`关键字替换为MDK的中断向量表注册方式 ```c // MDK中断示例 void TIM2_IRQHandler(void) { // 中断处理逻辑 } ``` 6. **设置头文件与库路径** - 在`Options > C/C++`中添加MDK库路径(如`$KEIL_PATH/ARM/PACK/Keil/STM32F1xx_DFP/2.3.0/Include`) - 移除原C51头文件路径(如`REG51.H`) 7. **处理启动文件与链接脚本** -MDK安装目录复制对应芯片的启动文件(如`startup_stm32f10x.s`)到工程 - 在`Options > Linker`中选择匹配的分散加载文件(`.sct`) 8. **验证与调试** - 编译工程,根据错误提示调整代码或配置 - 使用J-Link/ST-Link连接开发板,测试基本功能(如GPIO控制) --- ### 常见问题解决 - **编译错误`undefined identifier`** 检查是否遗漏MDK外设库(如`stm32f10x_gpio.h`),需通过`Manage Run-Time Environment`添加标准库[^3] - **链接阶段内存溢出** 在`Target`选项卡中调整`IRAM`/`IROM`范围,匹配目标芯片的FlashRAM容量 - **中断未触发** 确认在`STM32CubeMX`或`system_stm32f10x.c`中已启用对应中断向量 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值