1. 关于IAR for MSP430的编译问题,小女子先谢过了,在线等。。。
第一,连上仿真器,看设备管理器 io 里有没有仿真器。在Workspace下面是一个带下拉菜单的文本框,这里有系统的创建配置(build configurations),默认时系统有两种创建(build)配置:Debug和Release。缺省配置是Debug,在这种模式下,用户可以进行仿真和调试;在Release模式下,是不能进入调试状态的
都对看下一项
第二,打开iar,打开工作空间(工程),点左上project,打开options...,设置成下图
第四,连接好板子供电,连接好仿真器与板子,仿真器与电脑,检查设备管理器,io里是不是板子和仿真器都有。还有就是检查板子上的跳帽,一般有两个跳帽是接上就不能用仿真器,一般来讲,断开 TCK和 RTS跳线帽、RESET和 DTR跳线帽,取了才行。
2. 怎样在IAR中加入编译所需库的头文件
1、首先打开电脑,然后在电脑桌面中,找到并双击IAR打开软件,如图。
3. iar使用makefile编译
要编译出在 iar开发板上运行的可执行文件,需要使用到交叉编译器 iar-linux-gnueabihf-gcc 来编译,在终端中输入如下命令:
iar-linux-gnueabihf-gcc -g -c led.s -o led.o
上述命令就是将 led.s 编译为 led.o,其中“-g”选项是产生调试信息,GDB 能够使用这些
调试信息进行代码调试。“-c”选项是编译源文件,但是不链接。“-o”选项是指定编译产生的文
件名字,这里我们指定 led.s 编译完成以后的文件名字为 led.o。执行上述命令以后就会编译生
成一个 led.o 文件
2 、arm-linux-gnueabihf-ld 链接文件
arm-linux-gnueabihf-ld 用来将众多的.o 文件链接到一个指定的链接位置。我们在学习SMT32 的时候基本就没有听过“链接”这个词,我们一般用 MDK 编写好代码,然后点击“编
译”,MDK 或者 IAR 就会自动帮我们编译好整个工程,最后再点击“下载”就可以将代码下载
到开发板中。这是因为链接这个操作 MDK 或者 IAR 已经帮你做好了,因此我们现在需要做的就是确定一下本试验最终的可执行文件其运行起始地址,也就是链接地址。这里我们要区分“存储地址”和“运行地址”这两个概念,“存储地址”就是可执行文件存储在哪里,可执行文件的存储地址可以随意选择。“运行地址”就是代码运行的时候所处的地址,这个我们在链接的时候就已经确定好了,代码要运行,那就必须处于运行地址处,否则代码肯定运行出错。比如设备支持 SD 卡、EMMC、NAND 启动,因此代码可以存储到 SD 卡、EMMC 或者 NAND 中,但是要运行的话就必须将代码从 SD 卡、EMMC 或者NAND 中拷贝到其运行地址(链接地址)处,“存储地址”和“运行地址”可以一样,比如STM32 的存储起始地址和运行起始地址都是 0X08000000,输入如下命令
arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf
上述命令中-Ttext 就是指定链接地址,“-o”选项指定链接生成的 elf 文件名,这里我们命名
为 led.elf
由于需要,最近开始自学IAR编程软件,经过不断使用,现在对IAR工程编译、创建、调试等等有了大致的了解,总得来说开始不太习惯,而且网上使用IAR编写51单片机程序的也不多,因此相关历程不怎么好找,但是习惯之后感觉IAR比Keil还是更胜一筹吧!
下面以一个矩阵按键检测为例,大致记录下IAR的使用方式吧
①新建工程,如图
②添加文件
③编写代码
④设置生成文件信息
大致就是以上几个步骤了,另外再加一点代码调试设置
下面做个比较吧
1.IAR由于不支持位操作(sbit这种),所以操作位需要通过移位来完成,比如设置P1口1 3 5电平为0,则可以这么写P1&=~((1<<1)|(1<<3)|(1<<5));,虽然看起来比较麻烦,不过从实际来看,这么操作比位定义方便,因为一个端口可能需要设置的位很多,此时位定义就会失去意义,当然了,KEIL也是支持这种移位操作的
2.IAR头文件,首先最好添加一个通用头文件,比如io8051.h ioarv.h等等,然后设置工程的时候再在general options下面选择需要的cpu,具体为什么这样做,我还是不太明白,反正ARM就没有这样的一个通用头文件,不过这样还是很方便的,只要是51系列的通杀了
5. 据说IAR开发arm比keil方便,没有用过IAR,是这样吗
相差不大,只要用顺手了,开发速度和质量才是最好的。初学者就不要挑剔了,最好是你跟着什么学,就和人家用一样的,方便解决问题。我是早期用keil,后来工作都用IAR,所以IAR用的比较习惯。就我了解,IAR相比算得上优势的有:
1:编译速度,同样的源码,IAR编译要快些;
2:IAR可以在调试运行中打断点,keil好像要停下来才能打断点;
3:IAR的ctrl+T,自动缩进好用,不知道keil有不有这功能。
以上可能存在对keil的不了解,或新旧版本的对比,所以仅供参考。
6. 用iar新建工程编译选项设置
error[cp001]:
protection
check,
no
valid
license
found
for
this
prod
t
[20]
原因:安装的时候没有把注册机的0x.....字串的小写字母改为大写字母。
warning[pe001]:
last
line
of
file
ends
without
a
newline
f:\emotion\iar\pk
升级\cc1110-8\main.c
原因:在使用iar时常常会弹出类似这样一个警告,其实只要在最后一行多加一个回车就不会再有这个警告了.
error[e72]:
segment
bank_relays
must
be
defined
in
a
segment
definition
option
(-z,
-b
or
-p)
原因:这是用730b编译的错误,可能是由于相对于目标工程版本过高的,后改用720h,没有发生错误。
error[pe005]:
could
not
open
source
file
"stdio.h"
原因:头文件路径不对造成,改正的方法是在设置选项卡的c/c++
compiler
->
preprocessor选项里,将$toolkit_dir$\inc\clib\添到incl?
paths中。
7. 如何设置iar优化等级
果在A行设置的断点,单步调试的时候却只能到达A后边的某几行,可能的一个原因就是代码优化的等级太高了,导致编译器实际上没有在A行停顿。
解决办法:
在OPTION下修改优化等级
IAR默认的是最高优化等级。如果程序不大建议不优化。如果优化等级高,那么一些非汇编的延时函数可能无法执行,一些局部变量的值可能在使用过后,即便没有离开自己的作用