IAR与Keil工程之间的转换
- 格式:docx
- 大小:15.25 KB
- 文档页数:1
一、一段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编译的;虽然差之毫厘,有时候却谬之千里。
项目转换指南将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来设置相关的项目选项。
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中,可以通过打开一个文本文件来确认当前的编码方式。
在菜单栏中选择"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 驱动程序的安装、使用和对 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工程之间的转换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工程到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产生的引用信息。
应用笔记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工具。
单片机的软件开发工具与环境介绍单片机是指集成在单个芯片上的微型计算机系统。
它具备较小的体积、低功耗、低成本以及较强的功能等特点,被广泛应用于各个领域。
在单片机的开发过程中,选择合适的软件开发工具和环境非常关键。
本文将介绍几种常用的单片机软件开发工具与环境。
一、Keil μVisionKeil μVision是一款由Keil Software公司推出的嵌入式系统开发工具。
它是一套集成开发环境(IDE),包含了编译器、调试器、仿真器等功能模块,可以实现单片机程序的编写、编译以及调试。
KeilμVision支持多种芯片系列,如STMicroelectronics的STM32系列、NXP的LPC系列等。
其可视化界面友好,功能强大,被广泛应用于单片机软件开发领域。
二、IAR Embedded WorkbenchIAR Embedded Workbench是由IAR Systems推出的单片机开发工具。
它提供了完整的软件开发流程,包括编写、编译、调试和优化等环节。
IAR Embedded Workbench支持多种单片机系列,如Texas Instruments的MSP430系列、Renesas的RL78系列等。
该工具具有较高的代码生成效率和卓越的调试功能,可以帮助开发者提高开发效率和代码质量。
三、MPLAB X IDEMPLAB X IDE是由Microchip公司开发的一款集成开发环境。
它主要用于开发与Microchip单片机相关的应用程序。
MPLAB X IDE支持多种编程语言,如C、C++以及汇编语言。
该工具提供了丰富的调试功能和模拟器功能,并能够与硬件调试器(如PICkit)结合使用,使得开发者可以更加方便地进行单片机程序的开发和调试。
四、Arduino IDEArduino IDE是一款面向Arduino单片机的开发工具。
Arduino是一种开源的电子原型平台,广泛应用于各个领域的快速原型开发。
keil c51中数据运算强制类型转换Keil C51中数据运算强制类型转换在Keil C51中,数据运算时常常需要进行类型转换,尤其是在不同数据类型之间进行运算时。
强制类型转换是一种将一种数据类型转换为另一种类型的方式,以便在不同数据类型之间进行运算或赋值操作。
在本文中,我们将探讨Keil C51中数据运算强制类型转换的相关知识,并就此进行全面评估,帮助读者更深入地理解这一重要的概念。
1. 强制类型转换的概念在Keil C51中,强制类型转换是指将一个数据类型转换为另一个数据类型的操作。
通常情况下,当进行不同数据类型之间的运算或赋值操作时,需要将其中一个数据类型强制转换为另一个数据类型,以便确保运算或赋值能够正确进行。
强制类型转换可以通过在需要转换的数据类型前添加目标数据类型的括号,在表达式中进行转换操作来实现。
2. 强制类型转换的作用强制类型转换在Keil C51中具有重要的作用。
它可以确保不同数据类型之间的运算或赋值操作能够正确进行,避免数据类型不匹配而引发的错误。
可以通过强制类型转换来提高程序的运行效率,避免不必要的类型检查或转换操作。
强制类型转换还可以帮助程序员更灵活地处理数据,使得程序设计更加简洁和高效。
3. 强制类型转换的注意事项在进行强制类型转换时,需要注意以下几点。
应该在转换的时候确保数据类型之间的兼容性,避免引发不可预料的错误。
应该尽量减少不必要的强制类型转换,以避免程序的复杂性和不必要的性能损耗。
需要注意强制类型转换可能引发的精度损失或溢出问题,特别是在浮点数和整数之间进行转换时,需要格外小心。
4. 个人观点和理解在我看来,强制类型转换在Keil C51中扮演着非常重要的角色。
它不仅可以帮助程序员更好地处理不同数据类型之间的运算和赋值操作,还可以提高程序的运行效率和灵活性。
然而,要注意在实际应用时需谨慎使用,以避免可能引发的问题。
强制类型转换是程序设计中不可或缺的一部分,是提高程序可靠性与性能的关键之一。
Keil工程到IAR工程的移植STM32工程使用的启动文件有不同的版本,在移植STM32工程之前先检查MDK工程的启动文件。
♦启动文件为cortexm3_macro.s和stm32f10x_vector.s,如下图时:下面以建立IAR工程example为例讲述如何移植。
首先建立文件夹命名为example,打开文件夹并建立三个文件夹,分别命名为boot、library、user,然后向三个文件夹中放入文件。
在boot文件夹中放入在IAR环境下使用的文,如下如所示件启动文件cortexm3_macro.s和stm32f10x_vector.c在library问价夹中放入外设驱动函数文件,如下图:在user文件夹中放入文件main.c、main.h、stm32f10x_it.c、stm32f10x_it.h,这四个文件是要移植的MDK工程下的文件,在user文件夹中还要放入在IAR工程下需要的stm32f10x_conf.h文件。
文件整理完后建立IAR工程并命名example,然后添加工程所需文件即可。
♦启动文件为startup_stm32f10x_xx.s时:针对不同容量的STM32芯片有启动文件——startup_stm32f10x_ld.s对应小容量产品——startup_stm32f10x_md.s对应中容量产品——startup_stm32f10x_hd.s对应大容量产品下面以建立IAR工程example为例讲述如何移植。
建立文件夹并命名example,打开example文件,在文件夹中建立四个文件夹,分别命名CMSIS、StartUp、StdPeriph_Driver、User。
在CMSIS文件夹中放入Cortex微控制器软件接口文件即core_cm3.c、core_cm3.h、system_stm32f10x.c、system_stm32f10x.h和stm32f10x.h文件。
在StartUp文件夹中放入IAR环境下启动文件startup_stm32f10x_xx.s,根据所使用的芯片选择相应的启动文件。
ldrb keil用法-回复ldrb keil 是一种嵌入式软件开发工具,能够用于编写、调试和测试嵌入式系统的程序。
它是Keil公司的产品,被广泛应用于各种嵌入式系统的开发过程中。
在本文中,我将详细介绍ldrb keil的使用方法,并以步骤的形式进行回答。
第一步:安装ldrb keil在使用ldrb keil之前,我们首先需要将它安装在计算机上。
安装过程非常简单,只需要下载安装程序并按照提示进行操作即可。
当然,在安装之前,确保您的计算机系统满足相关要求,并具备所需的硬件和操作系统。
第二步:创建新项目安装完成后,我们可以开始创建新的项目。
在ldrb keil的界面中,点击菜单栏上的“File”,然后选择“New Project”。
接下来,选择项目保存的位置,并输入项目名称。
在弹出的对话框中,选择适合您嵌入式系统类型的“Device”(例如ARM Cortex-M系列),并选择目标设备的型号。
最后,单击“OK”以创建新项目。
第三步:添加源码文件一旦项目创建完成,我们就可以开始添加源码文件。
在项目资源管理器窗口中,右键单击所创建的项目,然后选择“Add Files to Group”。
接下来,选择要添加的源码文件,在对话框中点击“OK”即可添加成功。
第四步:编写代码现在,我们可以开始编写程序代码了。
在ldrb keil的界面中,打开所添加的源码文件,并开始编写您的嵌入式系统应用程序。
根据您的需求,您可以使用C语言、汇编语言或者其他支持的语言来编写代码。
第五步:构建项目在编写好代码之后,我们需要对项目进行构建,以生成可执行文件。
在ldrb keil的界面中,点击菜单栏上的“Project”,然后选择“Build Target”。
ldrb keil将自动编译源码,并生成可执行文件。
构建过程中,如果有错误或警告信息,您可以在“Build Output”窗口中查看并进行相应的修正。
第六步:调试和测试一旦项目构建成功,我们可以开始进行调试和测试。
Keil MDK 和IAR 两款ARM开发工具区别比较首先要说明,没有那款开发工具是万能的,也没有那款工具在所有方面都具有绝对优势。
对于KeilMDK-ARM和IAR两款工具择,可以根据自己的习惯来选择,而不应该在使用其中的一款时贬低另外一款,或者总是赞美自己的选择。
好了,下面开始讲Keil MDK-ARM和IAR的区别。
一、概述Keil MDK-ARM(旧称RealView MDK)开发工具源自德国Keil公司,被全球上百万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。
KEIL MDK集成了业内最领先的技术,包括uVision3、uVision4、uVision5集成开发环境与ARM编译器。
支持ARM7、ARM9、Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4、Cortex-R4内核核处理器。
Keil MDK可以自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,ARM编译器的最新版本可将性能改善超过20%以上。
IAR Embedded Workbench是一套用于编译和调试嵌入式系统应用程序的开发工具,支持汇编、C 和C++语言。
它提供完整的集成开发环境,包括工程管理器、编辑器、编译链接工具和C-SPY调试器。
IAR Systems以其高度优化的编译器而闻名。
每个C/C++编译器不仅包含一般全局性的优化,也包含针对特定芯片的低级优化,以充分利用您所选芯片的所有特性,确保较小的代码尺寸。
IAR Embedded Workbench能够支持由不同的芯片制造商生产,且种类繁多的8位、16位或32位芯片。
二、区别1、MDK不支持层叠文件夹,在文件夹的下一级中必须为文件;IAR支持层叠,可以比较方便管理代码,理清层次。
2、MDK连接library,直接添加到文件夹即可;IAR则需要从工程中选项中设置。
kyil的使用方式
Keil的使用方式包括以下步骤:
1. 打开Keil软件,进入工程窗口。
2. 在工程窗口中,右键单击工程文件,选择“新建” -> “Source File”,输入文件名并保存。
3. 在新建的源文件中,编写代码并保存。
4. 在工程窗口中,右键单击工程文件,选择“Build Target” -> “Build”,编译代码。
5. 如果编译成功,右键单击工程文件,选择“Debug” -> “Start/Stop Debugging”,进入调试界面。
6. 在调试界面中,可以使用各种调试工具进行调试,如单步执行、断点、查看变量等。
7. 调试完成后,可以右键单击工程文件,选择“Rebuild All Targets”重新编译代码,或者选择“Close”关闭Keil软件。
请注意,以上步骤仅供参考,具体使用方式可能因个人习惯和项目需求而有所不同。
在Keil C51中,数据运算时的强制类型转换是一个非常重要的概念,它涉及到数据在进行运算时的类型转换问题。
在程序设计中,我们经常会遇到需要将一个数据类型转换为另一个数据类型的情况,其中强制类型转换就是一种常见的方法。
在本文中,我将深入探讨Keil C51中数据运算时的强制类型转换,以便你能更深入地理解这一概念。
1. 强制类型转换的概念在Keil C51中,强制类型转换是指将一个数据类型转换为另一个数据类型的操作。
这种转换是由程序员明确指定的,旨在改变数据在进行运算时的类型。
在进行数据运算时,如果参与运算的数据类型不一致,就会出现类型不匹配的问题,这时就需要进行强制类型转换,以确保数据能够正确地进行运算。
2. 强制类型转换的应用在Keil C51中,强制类型转换经常用于将一个较大的数据类型转换为一个较小的数据类型,或者将一个无符号数据类型转换为一个有符号数据类型。
当我们需要将一个16位的整数转换为8位的整数时,就需要进行强制类型转换。
在进行这种类型转换时,需要注意数据溢出的问题,以免造成数据丢失或错误的运算结果。
3. 强制类型转换的语法在C语言中,进行强制类型转换的语法为:(type_name) expression,其中type_name为目标数据类型,expression为需要进行类型转换的表达式或变量。
在Keil C51中,使用这种语法可以将一个数据类型转换为另一个数据类型,以确保数据在进行运算时的类型匹配。
4. 强制类型转换的注意事项在进行强制类型转换时,需要注意以下几点:- 确保目标数据类型能够容纳转换后的数据,以避免数据溢出或失真的问题。
- 考虑数据的有符号性和无符号性,以确保类型转换后数据的符号正确。
- 尽量避免频繁进行类型转换,以提高程序的可读性和可维护性。
Keil C51中数据运算时的强制类型转换是一个非常重要的概念,它涉及到程序设计中数据类型转换的问题。
在进行数据运算时,我们经常需要将一个数据类型转换为另一个数据类型,以确保数据能够正确进行运算。
S3C44B0移植心得本文主要讲的是针对之前一块S3C44B0的板子无法在IAR平台下下载程序而移植到keil平台下的相关内容。
因为这块S3C44B0的板子是前面两届师兄开发的(自己在买的S3C44B0学习板的基础上根据需要自己画板开发的),现在手上也没有他的原理图,于是在网上找到了S3C44B0的datasheet,芯片引脚图如下图所示,这个帮了我一个大忙。
后面我会详细介绍。
拿到这块板子的时候,客户的需求就是在原来程序的基础上改善功能,起初以为会很简单,毕竟底层的驱动师兄已经写好了,我要做的可能就是main()函数里面修改,达到预期功能。
但是事实却不是这样,bug是一个接一个的来了。
(本来开发经验比较少,这款S3C44B0更加不熟悉,之前也没有用过IAR和ADS 来开发)首先,打开师兄留下来的程序文档,发现一个问题—里面没有工程文件,找了所有的文件夹,只发现了44b0_flash.icf和44b0_ram.icf这两个奇怪的文件(之前没有见到过,上网查了查,才知道是IAR平台下的,下载时需要用到的),于是乎我就按着这个思路,现在IAR环境下建立工程文件,如下图所示:编译发现会报错,例如找不到.h文件,,这个不是问题,我把代码中所有包含文件路径的都去掉,变成只包含头文件的样式,然后在project->option选项中选中C/C++ Compiler->Preprocessor,在Additional include directories中输入你要包含的路径,如下图所示,$PROJ_DIR$是固定格式,后面的是.h文件所在的目录路径。
然后再编译,没有错误,然后在Debugger选项Driver里面选择RDI,勾选Run to main,再在RDI选项里面加入H-JTAG的驱动路径,这些全部完成后,我就以为可以下载了。
其实不然,在我点击Download and Debug的快捷按钮,会出现调试界面,然后点运行,程序执行实现了点亮一个led(这里只是测试),我以为下载没有问题了,断电再上电,发现啥现象也没有,难道程序没有下载成功?我又重新试了一次,发现调试的时候能够点亮led灯,但是断电后程序就丢失了,我断定程序只是下载到内部的sram中,而没有下载到flash中,所以掉电后程序就没有了。
STM32 IAR工程转STM32 Keil MDK工程
不管是IAR还是RVMDK,编程时使用的都是STM32的固件函数库,唯一不同的是启动文件。
RVMDK在建立STM32工程时会自动创建启动文件 STM32F10x.s,而IAR使用的启动文件
cortexm3_macro.s。
此外,两者对中断向量表的管理也不一样。
在移植STM32工程时首先要检查IAR工程中是否使用了中断。
方法是要看工程中stm32f10x_it.c文件内的各中断函数是否为空数,中断函数为空说明没有使用中断;否则若中断函数有修改并且main函数中对NVIC进行了设置,则说明使用了中断。
在
STM32 IAR工程的启动文件cortexm3_macro.s和
stm32f10x_vector.s
一、没有使用中断的移植
没使用中断时的移植较为简单,此时还可以使用RVMDK自动创建的启动文件STM32F10x.s,只要把IAR工程project文件夹中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和main.c等文件复制到建立好的RVMDK工程文件夹下,然后为RVMDK工程添加使用到的库函数文件即可。
二、有中断的移植:
如果IAR工程中使用了NVIC时,在RVMDK下就不能再使用自动生成的STM32F10x.s启动文件了,并且IAR工程中的启动文件cortexm3_macro.s和stm32f10x_vector.s(stm32f10x_vector.c)须使用Keil MDK工程中cortexm3_macro.s和stm32f10x_vector.s来替换。
IAR数据存储及格式转换使用说明1、打开IAR程序。
找到记录区变量名字,如下图所示:变量名:rec,地址0x00100000(Location栏显示).2、输入记录RAM地址和选择保存RAM数据。
打开Memory窗口(在系统菜单View下)。
在Go to处输入需要记录的变量地址,然后按回车键。
如下图所示:然后单击右键。
选择Memory Save.3、保存RAM数据的区域在执行上一个操作后,系统将弹出记录数据的存储窗口。
如下图所示:注意:在这里,需要填写的地址有Start address(记录开始地址)和End address(记录结束地址)。
Start address的默认地址是以鼠标所在位置自动填写的一个数。
并不一定是你所想记录的地址。
所以,一定要输入刚才Go to的那个地址。
End address则根据记录数据的大小而定。
填写完成后,选择Save即可。
4、查看RAM记录文件通过上步操作后,IAR会在工程所在目录下,新增一个Memory.hex的文件。
如下图所示:确定文件已经生成。
5、打开转换软件打开专用转换软件,将弹出一个选择对话框,如下图所示:在这个软件里面,设定了输出格式如下:1、输出数据的长度。
目前支持8位和16位两种。
2、输出数据的数据格式,目前支持十六进制和十进制。
3、输出数据的类型,支持有符号和无符号两种。
4、每次转换成的TXT每行显示多少个数据可以设定(每行显示个数)。
根据想要转换的输出格式,对应的设定上面的菜单。
6、选择转换文件在设定好输出格式以后,单击“文件转换”。
在弹出的对话框内,找到需要处理的文件。
然后点击“打开”即可。
由于文件一般都比较小。
所以转换速度非常快。
点完打开后,马上就可以在源文件相同的目录下,生成一个同样名字的TXT文档。
7、用EXCEL打开文件打开EXCEL后,选择打开文件,在打开文件的窗口对话框中,选择文件类型为:所有文件。
然后,找到TXT文件后,选择打开。
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工程添加使用到的库函数文件,然后进行编译。