IAR与Keil工程之间的转换
KeilC51 uVsion3、uVsion4、IARfor51一段汇编代码对比

一、一段c代码源程序//从Flash读取设置参数至Ram数组缓冲区中。
for(Count = 0x00; Count != SETPARANUM; ++Count){SetPara_OrigBuff[Count] = *CodeSetPara_BaseAdd++;}说明:CodeSetPara_BaseAdd是定义在flash中的数组名,SetPara_OrigBuff 是定义在RAM中的数组,长度都是SETPARANUM = 0x10二、uVsion3于uVsion4的对比uVsion3版本下生成的汇编代码是这样的C:0x0A21 7E1A MOV R6,#0x1AC:0x0A23 7F00 MOV R7,#0x00C:0x0A25 E4 CLR AC:0x0A26 FD MOV R5,AC:0x0A27 0F INC R7C:0x0A28 EF MOV A,R7C:0x0A29 AA06 MOV R2,0x06C:0x0A2B 7001 JNZ C:0A2EC:0x0A2D 0E INC R6C:0x0A2E 14 DEC AC:0x0A2F F582 MOV DPL(0x82),AC:0x0A31 8A83 MOV DPH(0x83),R2C:0x0A33 E4 CLR AC:0x0A34 93 MOVC A,@A+DPTRC:0x0A35 FC MOV R4,AC:0x0A36 745D MOV A,#SetPara_OrigBuff(0x5D)C:0x0A38 2D ADD A,R5C:0x0A39 F8 MOV R0,AC:0x0A3A A604 MOV @R0,0x04C:0x0A3C 0D INC R5C:0x0A3D BD10E7 CJNE R5,#0x10,C:0A27uVsion4版本下生成的汇编代码是这样的:C:0x0A5F 7F00 MOV R7,#0x00C:0x0A61 7E1A MOV R6,#0x1AC:0x0A63 E4 CLR AC:0x0A64 FD MOV R5,AC:0x0A65 ED MOV A,R5C:0x0A66 6410 XRL A,#0x10C:0x0A68 6018 JZ C:0A82C:0x0A6A 0F INC R7C:0x0A6B EF MOV A,R7C:0x0A6C AA06 MOV R2,0x06C:0x0A6E 7001 JNZ C:0A71C:0x0A70 0E INC R6C:0x0A71 14 DEC AC:0x0A72 F582 MOV DPL(0x82),AC:0x0A74 8A83 MOV DPH(0x83),R2C:0x0A76 E4 CLR AC:0x0A77 93 MOVC A,@A+DPTRC:0x0A78 FC MOV R4,AC:0x0A79 745D MOV A,#SetPara_OrigBuff(0x5D)C:0x0A7B 2D ADD A,R5C:0x0A7C F8 MOV R0,AC:0x0A7D A604 MOV @R0,0x04C:0x0A7F 0D INC R5C:0x0A80 80E3 SJMP C:0A65都使用了8级优化,uVsion3生成的代码21行,uVsion4生成代码是24行;主要体现在对这段代码翻译不同:“Count != SETPARANUM”uVsion3: CJNE R5,#0x10,C:0A27 字节数:3 ,指令周期:3/4uVsion4: MOV A,R5 字节数:5 ,指令周期:5/6 XRL A,#0x10JZ C:0A82三、IARfor51环境下这段程式的汇编:000046 75 82 00 MOV DPL,#0x00000049 75 83 1A MOV DPH,#0x1A00004C 78 5D MOV R0,#0x5D00004C 78 5D MOV R0,#0x5D00004E E4 CLR A00004F 93 MOVC A,@A+DPTR000050 F6 MOV @R0,A000051 A3 INC DPTR000052 74 01 MOV A,#0x01000054 28 ADD A,R0000055 F8 MOV R0,A000056 79 6D MOV R1,#0x6D000058 E9 MOV A,R1000059 68 XRL A,R000005A 70 F2 JNZ 0x004E只要15代码就能实现相同的功能结语:都完成相同功能,但无论从占用空间,还是执行的指令周期数uVsion3下这段代码都要优于uVsion4编译的;虽然差之毫厘,有时候却谬之千里。
keil转IAR工程指南

项目转换指南将ARM芯片程序的keil工程转换为IAR工程将本文作为将项目文件从基于μVision集成开发环境和基于keil工具链的arm项目源代码转转换概览将现有的一个Keil μVision项目转换需要您收集关于当前项目的信息并将这些信息应用到新的IAR Embedded Workbench项目。
此外,你还需要对实际源代码进行一些修改。
本指南中的信息简化了这一过程。
注:关于IAR Embedded Workbench的基本介绍以及介绍如何使用IDE的信息可以在信息中心和Help菜单中获取的《《基于arm的IDE项目管理和项目建立》》中找到。
项目转换为了将现有的KeilμVision应用转移到IAR Embedded Workbench可以使用一个叫做的Convert To IAR工具。
这是一个被包含在IAR Embedded Workbench的GUI应用程序,可以通过Tools菜单获取。
Convert To IAR工具在不改变源文件的前提下将μVision5的项目文件转换为IAR Embedded Workbench的项目文件。
有关源文件的信息,包括路径、定义的符号和生成配置被转换。
作为附加选项,可以执行源代码替换,并且可以添加自己的替换规则,包括对正则表达式的支持。
软件中有许多预定义的替换规则。
过程1.启动IARembedded Workbench。
2.选择Tool>ProjectConvert。
3.通过单击“浏览”按钮来定位到μVision项目目录结构的顶层(不一定是包含项目文件的目录)。
4.选择Keil μVision5 for ARM作为项目类型。
5.点击Execute按钮,一个新的IAR Embedded Workbench就会生成。
6.通过选择File>Open>Workspace来打开新的工作空间。
7.通过选择project>Options来设置相关的项目选项。
IAR安装以及jlink驱动安装

IAR6.5&jlink下载器安装手册一、IAR6.5的安装步骤1.下载后解压压缩包文件,打开目录,找到文件EWARM-CD-6502:2.选择安装IAR Embedded Workbench3.点击NEXT4.选择同意agree,并且点击NEXT5.选择安装路径,这一步,如果不想占用C盘空间,可以选择非C盘的安装路径,点击NEXT6.默认,点击NEXT7.点击Install,开始安装IAR软件8.等待软件安装完成,点Finish9.安装完成后开始破解IAR6.5。
将安装包中的IAR6.5for ARM(破解方法)解压,复制“IAR Embedded Workbench for ARM6.50.2破解补丁”到IAR6.5的安装路径下面的common/bin文件夹内。
10.运行破解补丁,点击patch开始安装补丁11.如果弹出找不到文件对话框,点击“是”,在IAR6.5安装路径中的arm/bin或者common/bin文件夹内手动寻找该文件。
12.重复以上步骤11次,可能会有多个文件需要手动添加13.手动添加全部文件,补丁安装完成,退出破解软件14.到这里,IAR6.5就成功完成破解,可以正常使用IAR6.5了。
二、Jlink下载器的驱动安装1.切换到原来的安装导航界面,选择Install drivers2.SOGA穗佳电子的kinetis/kl25核心板,使用的是Jlink下载器作为仿真调试器,因此这里选择Jlink2.运行安装文件4.点击运行后,会自动安装驱动,不会出现其他提示。
5.将Jlink下载器连接电脑(PC),电脑会自动识别设备,发出“叮咚”一声,并安装驱动6.为了更直观的看到Jlink和kinetis/kl25系统板的连接状况,以及在系统板被锁时能解锁,我们还需要安装segger公司的jlink驱动。
文件名为Seup_JlinkARM_V458a(这个型号跟你购买的Jlink下载器的固件版本有关),解压后打开文件夹,默认安装,完成后,在电脑桌面左下角的“开始”那儿,找到下面J-link commander7.将Jlink下载器跟Kinetis/KL25核心板最小系统连接起来,点击运行J-link commander。
keil 切换编码中文乱码的一种手动解决方法 -回复

keil 切换编码中文乱码的一种手动解决方法-回复在Keil中遇到编码问题时,出现中文乱码是很常见的情况。
中文乱码的出现主要是由于编码方式不匹配所致,这篇文章将介绍一种手动解决方法来切换Keil的编码以解决中文乱码问题。
第一步:确认编码方式首先,我们需要确认当前Keil的编码方式。
在Keil中,可以通过打开一个文本文件来确认当前的编码方式。
在菜单栏中选择"File" -> "Open",然后在弹出的对话框中选择一个中文文件并打开。
如果文件正常显示中文内容,则说明Keil的编码方式与该文件相匹配;如果出现乱码,则需要进行后续的切换编码操作。
第二步:打开设置在Keil的菜单栏中选择"Project" -> "Options for Target"。
在打开的对话框中选择"C/C++" 选项卡,然后点击"Language Extensions" 选项。
第三步:切换编码方式在"Language Extensions" 选项卡中,可以看到"Character Encoding" 的设置。
一般情况下,Keil默认使用的是"US ASCII" 编码方式,而中文需要使用"GB2312" 或者"UTF-8" 编码方式。
我们可以尝试依次选择这两种编码方式,然后点击"OK" 按钮保存设置。
第四步:重新打开文件完成编码方式的切换后,需要重新打开中文文件来查看是否解决了中文乱码问题。
按照第一步的方法打开一个中文文件,如果文件能够正常显示中文内容,则说明切换编码方式成功;如果还是出现乱码,可以尝试重新选择其他编码方式进行设置。
其他注意事项:- 在切换编码方式之前,建议备份项目文件,以免操作错误导致文件损坏或丢失。
JLINK及KEIL MDK使用手册

JLINK及KEIL MDK使用手册概述本章对 JLINK 驱动程序的安装、使用和对 RealViewMDK (Keil μVision3)集成开发环境安装及其集成开发环境的基本使用和设置进行了介绍。
3.1、安装JLINK仿真器驱动程序JLINK仿真器驱动程序可以从付带光盘或 SEGGER网站/pub/jlink/Setup_JLinkARM_V402c.zip获取最新的安装文件(目前最新安装版本为 Software and documentation pack V4.02c [7177 kb]),下载完成后双击执行,出现如图 3.1所示的安装界面,根据界面安装向导的提示,完成JLINK仿真器驱动程序的安装。
假设安装在 D:\SEGGER目录下。
图3.1按Yes出现下图界面图3.2 按Next继续下一步操作图3.3选择安装目录后按Next继续下一步图3.4如果你还在以前装了IAR的集成开发环境将出现下面图3.5的提示,提示你选择更新IAR 下的JLINK仿真器的动态链接库文件,一般选上后按OK完成JLINK仿真器的安装。
图3.53.2、如何使用JLINK仿真器软件3.2.1、使用J-FLASH ARM 烧写程序到芯片FLASH运行J-FLASHARM 出现图3.6图3.6 进行烧写前的必要设置如:图3.7图3.7选择MINI-STM32开发板的CPU型号,选择完成后按确定退出设置。
图3.8设置完成后左边显示烧写信息图3.9连接目标板,连上后会有提示信息,见下边的状态拦。
图3.10连接成功后如图3.11图3.11接着File->open打开烧录文件,如图3.12图3.12加载完成后选择Target->Auto或快捷键F7进行自动烧录。
图3.13烧写状态,图3.14图3.14 烧写成功,图3.15图3.15关于J-FLASH ARM更详细的操作请参阅JLINK的用户手册。
3.2.2、使用J-Link command设置和查看相关调试信息J-Link command包含了所有设置和查看相关调试信息的命令,J-Link command基于命令行输入方式。
IAR与Keil工程之间的转换

IAR与Keil工程之间的转换1.IAR与Keil之间的关系。
IAR与Keil的相同点:IAR与Keil编程都是使用固件库,所以对于外设驱动函数库的使用没有差别。
IAR工程与Keil工程的区别:(1)启动文件不同:RVMDK 在建立STM32工程时会自动创建启动文件STM32F10x.s,而IAR 使用的启动文件是cortexm3_macro.s。
(2)两者对中断向量表的管理不一样。
2.移植步骤。
以Test工程为例:在移植STM32 工程时首先要检查IAR 工程中是否使用了中断。
方法是要看工程中stm32f10x_it.c 文件内的各中断函数是否为空函数,中断函数为空说明没有使用中断;否则若中断函数有修改并且在main 函数中对NVIC 进行了设置,则说明使用了中断。
没有中断:没使用中断时的移植较为简单,此时还可以使用RVMDK 自动创建的启动文件STM32F10x.s,只要把IAR 工程project 文件夹中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和main.c 等文件复制到建立好的RVMDK 工程文件夹下,然后为RVMDK 工程添加使用到的库函数文件即可。
有中断:(1)在RVMDK 中建立工程,命名为Test;然后将启动文件cortexm3_macro.s 和stm32f10x_vector.s 复制到建立好的Test 工程文件夹下,并在Test工程中将RVMDK 自动建立的启动文件STM32F10x.s删除,用以上两个文件替换。
注释:cortexm3_macro.s 和stm32f10x_vector.s这两个启动文件是针对于v2.0.3版本,基于v3.0以上的版本,启动文件都统一命名为startup_stm3210f10x_xx.s,其中:startup_stm3210f10x_xx.c,每个启动文件对应一系列产品:─startup_stm3210f10x_ld.s,STM32 小容量产品─startup_stm3210f10x_md.s,STM32 中容量产品─startup_stm3210f10x_hd.s,STM32 大容量产品(2)将IAR工程project文件夹中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h 和main.c文件复制到Test工程文件夹内。
转换 ADS 工程到keil

转换ADS工程到keilTeam MCUZONE 从44b0开始关注和学习ARM的人对ADS肯定很熟悉,而现在从单片机过渡而来开始学习ARM的人也不少,而且目前内置flash的ARM器件也大量出现,也方便了应用和学习。
ADS作为官方的编译工具,其效率自不待言,keil作为c51时代的经典,其对外设的模拟能力值得称道。
随着keil推出keil for ARM,使用ARM7的用户也可以象51一样进行直观的开发,而没有ADS中繁琐的设置,而且使用keil的ulink还能使得debug变得更轻松。
现在keil被ARM收购,成为了正规军,在keil中调用ADS的工具链完成具体的编译,连接等工作,将使得开发变得简单,同时获得高的代码效率。
由于keil里面是调用ADS的工具链,所以工程文件的本身不需要修改,只需要重新建立个工程,改些设置即可。
罗嗦了这么多,下面切入正题,讲解如何将现成的用于ADS的工程转换到keil中。
首先需要保证电脑上安装有keil for ARM IDE,最新的是3.00a(20060524)最好安装有ADS1.2或者RV2.2。
这里以x256的tc代码为例,原来的ADS工程文件夹如下图:浏览一下文件夹就会发现:Include:包含了相应的头文件Sam7x-tc:包含了工程文件Src:应用的代码Startup:汇编和c的启动代码首先到工程文件夹下,打开ADS的工程,这就是本工程所用到的一些资源文件,然后编译一下,看看能不能通过。
建议将这些文件复制出来放到另外一个keil专用的工程文件夹里,比如也可以象ADS中一样建立不同的文件夹来存放,但是这里工程文件比较小,就放到一起了。
注意其中的.h文件,这是根据那些.c文件中的信息添加的。
打开keil,建立一个工程,注意选择正确的目标器件的名字,然后为工程取个名字,加入这些资源文件:上图中可以看到每个.c文件包含了哪些.c文件,这是编译了一次之后,keil产生的引用信息。
Metalink ASM51 汇编器到Keil A51 汇编器的转化

应用笔记AN021从Metalink ASM51汇编器到Keil A51汇编器的转化1引言从C8051F集成开发套件软件V1.4开始Metalink ASM51汇编器/链接器被Keil A51宏汇编器和纯二进制OMF-51兼容的BL51代替一旦安装了V1.4或更高版本的集成开发套件软件C8051F IDE不再支持由Metalink汇编器/编译器产生输出的源级调试Keil 8051工具的优点包括支持多源和目标文件可以在项目中加入多源/目标文件且只有当文件修改后才需重新汇编生成代码包含宏和条件汇编命令的代码源级调试程序下载前程序调试更快捷源文件名不再受DOS8.3格式限制寄存器定义文件不再必须在每个项目的源目录中有单独拷贝包含文件能保存在单一目录在汇编器的搜寻路径内中2从Metalink ASM51 汇编器到Keil A51汇编器的转化Keil A51汇编器的源文件和伪指令的句法与Metalink ASM51汇编器十分相似根本的不同是Metalink ASM51源文件寄存器定义包含文件与Keil A51汇编器的包含文件Keil A51汇编器使用$INCLUDE伪指令来定义寄存器而Metalink ASM51使用$MODXXXX伪指令Metalink ASM51句法;C8051F000寄存器定义包含文件$MOD8F000Keil A51 汇编器句法$INCLUDE C801F000.inc ;C8051F000寄存器定义包含文件当安装IDE时最新的寄存器定义文件它定义了所有的SFR寄存器和位寻址控制/状态位已被拷贝到Cygnal\Examples\C8051Fxxx目录中此目录也是默认的搜索目录已经没有必要拷贝寄存器定义文件到每一个源文件目录在包含文件中使用的寄存器和位的名字与C8051FXXX数据手册中的完全相同完整的汇编器和链接器的参考手册可以在IDE的在线帮助菜单或Cygnal\hlp目录A51.PDF中找到在Cygnal\Exampel\C8051FXXX目录中的示例源程序也可以作为开发程序代码的模板关于在Cygna IDE 中使用Keil8051工具的更多信息请参考应用笔记AN004-在C8051F IDE中集成Keil 8051工具。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IAR与Keil工程之间的转换
1.IAR与Keil之间的关系。
IAR与Keil的相同点:
IAR与Keil编程都是使用固件库,所以对于外设驱动函数库的使用没有差别。
IAR工程与Keil工程的区别:
(1)启动文件不同:RVMDK 在建立STM32工程时会自动创建启动文件STM32F10x.s,而IAR 使用的启动文件是cortexm3_macro.s。
(2)两者对中断向量表的管理不一样。
2.移植步骤。
以Test工程为例:
在移植STM32 工程时首先要检查IAR 工程中是否使用了中断。
方法是要看工程中stm32f10x_it.c 文件内的各中断函数是否为空函数,中断函数为空说明没有使用中断;否则若中断函数有修改并且在main 函数中对NVIC 进行了设置,则说明使用了中断。
没有中断:
没使用中断时的移植较为简单,此时还可以使用RVMDK 自动创建的启动文件STM32F10x.s,只要把IAR 工程project 文件夹中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和main.c 等文件复制到建立好的RVMDK 工程文件夹下,然后为RVMDK 工程添加使用到的库函数文件即可。
有中断:
(1)在RVMDK 中建立工程,命名为Test;然后将启动文件cortexm3_macro.s 和stm32f10x_vector.s 复制到建立好的Test 工程文件夹下,并在Test工程中将
RVMDK 自动建立的启动文件STM32F10x.s删除,用以上两个文件替换。
注释:cortexm3_macro.s 和stm32f10x_vector.s这两个启动文件是针对于v2.0.3
版本,基于v3.0以上的版本,启动文件都统一命名为startup_stm3210f10x_xx.s,
其中:startup_stm3210f10x_xx.c,每个启动文件对应一系列产品:
─startup_stm3210f10x_ld.s,STM32 小容量产品
─startup_stm3210f10x_md.s,STM32 中容量产品
─startup_stm3210f10x_hd.s,STM32 大容量产品
(2)将IAR工程project文件夹中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h 和main.c文件复制到Test工程文件夹内。
(3)为Test工程添加使用到的库函数文件,然后进行编译。