IAR_C介绍
- 格式:doc
- 大小:336.50 KB
- 文档页数:6
iar编译器使用指南【实用版】目录1.IAR 编译器的概述2.IAR 编译器的安装3.IAR 编译器的使用4.IAR 编译器的优势5.IAR 编译器的未来发展正文IAR 编译器是一款功能强大的编译器,适用于多种编程语言,包括 C、C++等。
它能够将编写的代码转换成机器可以识别的二进制代码,进而运行。
本文将为大家详细介绍 IAR 编译器的使用和安装过程。
首先,我们来看看如何安装 IAR 编译器。
安装过程相对简单,只需按照安装向导的指示进行即可。
在安装过程中,需要选择合适的版本和安装路径。
路径的选择可以根据个人习惯进行,但建议选择一个易于记忆和管理的路径。
安装完成后,需要配置环境变量,以便在编写代码时能够快速调用 IAR 编译器。
安装完成后,就可以开始使用 IAR 编译器了。
使用过程主要分为以下几个步骤:首先,编写代码。
在编写代码时,需要遵循相应的编程规范,以保证代码的正确性。
其次,编译代码。
在编译代码时,需要使用 IAR 编译器提供的命令行工具,将编写的代码转换成二进制代码。
最后,运行生成的二进制代码。
运行时,需要使用相应的运行环境,以保证程序能够正确运行。
IAR 编译器具有许多优势,例如编译速度快、生成的代码体积小等。
这些优势使得 IAR 编译器在开发过程中具有更高的效率。
此外,IAR 编译器还提供了丰富的调试功能,能够帮助开发者快速定位和修复代码中的问题。
未来,IAR 编译器将会继续优化和升级,以满足开发者不断变化的需求。
它将会提供更多的编程语言支持,以及更丰富的功能和工具,帮助开发者更高效地进行编程和开发。
总的来说,IAR 编译器是一款实用的编译器,它具有编译速度快、生成的代码体积小等优势,适用于多种编程语言。
安装和使用过程相对简单,只需按照相应的步骤进行即可。
5.1.1基本选项配置在工作区(Workspace)中选定一个项目,单击Project下拉菜单中的Options…选项,弹出选项配置对话框,从左边Category列表框内选择General Options进入基本选项配置。
图5.1 基本选项配置中的Target选项卡图5.1所示为基本选项配置中的Target选项卡,Processor variant(处理器类型)选项区域中的Core复选框用于设置ARM核,默认为ARM7TDMI,也可以从其左边的下拉列表框中选择其它ARM核,例如ARM9、ARM11或Xscal等。
建议使用时尽可能根据当前所用ARM芯片,选中Device复选框,点击其右边的按钮,从弹出的文本框内选择所用器件,这样IAR EWARM会根据所选芯片自动设置器件描述文件,以便于调试。
如果所选ARM芯片含有浮点数协处理器,可在FPU下拉列表框内选取合适的浮点处理单元。
Endian mode选项区域用于选择大小端模式,默认为Little。
图5.2所示为基本选项配置中的Output选项卡。
Output file选项区域用于设置编译后生成的输出文件类型,可选择Executable(生成执行代码)或Library(生成库文件)。
Output directories选项区域用于设置输出文件目录,默认执行代码文件目录为Debug\Exe,目标文件目录为Debug\Obj,列表文件目录为Debug\List,也可设置其它目录。
图5.2基本选项配置中的Output选项卡图5.3基本选项配置中的Library Configuration选项卡图5.3所示为基本选项配置中的Library Configuration选项卡。
IAR C/C++编译器提供了DLIB库,支持ISO/ANSI C和C++以及IEEE754标准的浮点数。
通过Library下拉列表框选择希望采用的运行库。
选择None表示应用程序不链接运行库;选择Normal表示链接普通运行库,其中没有locale接口和C locale,不支持文件描述符,printf and scanf不支持多字节操作,strtod不支持十六进制浮点数操作。
三星IAR C编译器安装z取得你机器的Host ID–运行IARID.EXE即可生成你机器的Host ID ,注意注册机对此号码大小写敏感。
三星IAR C编译器安装z生成注册码–运行iarkgn_gui.exe。
–在Product中选择“Embedded Workbench ForSamsung SAM8 v2.21A”,在HostID中填入上一步生成的ID号,按Generate就可生你机器的Liensenumber及Liense Key。
三星IAR C编译器安装z运行EWSAM8-EV-221A.exe,在相应的安装页面填入Liense number及Liense Key,一路Next安装即告完成。
中断z一般形式如下:#pragma vector=TIMER1_COMPA_vect__interrupt void uart0_rx_isr(void){//中断服务的内容}TIMER1_COMPA_vect是中断入口地址,在头文件中可找到,Samsung的单片机通常只有一个入口。
对于中断标志仍需用软件清0。
在指定的RAM位置定义变量z形式如下:__no_init unsigned char LcdBuffer[10]@0xB0;z主要应用在于:–如S3C9234的LCD缓存地址是从0xB0开始的,就可以用上面的形式进行定义。
–做掉电记忆在RAM的不同位置定义变量,以确认在掉电的过程中RAM是否已不稳定。
–清RAM时,在特定位置定义指针。
在S3C9228中定义LCD缓冲区z形式如下:–__no_init unsigned char __tinyp1 LcdBuf[16];z说明–9228的LCD缓冲区是放在Page 1中的,要访问时必须翻页,按上面方式定义后编译器在访问LcdBuf[ ]时会自动翻页。
定义常量表格z一般形式与其它嵌入式C相同,如:–const char DispTbl[ ]={CHAR_A,CHAR_B,…};z注意:必须将编译器中的对应选项打开,否则此表在经过编译的初始化函数初始化后将被置于RAM中。
V0.42003/09/0911. 特色符合ANSI C 標準規範 IEEE 相容浮點運算標準 內含97個常見函式庫 支援65C02 CPU可直接指定暫存器及I/O 變數(by SFR) 可指定程式碼或速度最佳化 支援BANK 記憶體分段模式 中斷程式可直接使用C 語言2. 程式執行流程CPU reset 後,會先進入CSTARTUP.S14執行,程序如下: [C-78] 1. CLD 2. Initialize Processor stack 3. Call __low_level_init 副程式(含在lowinit.c )及視需要Initialize data segments 4. Call main()主程式。
(結束後仍可回到CSTARTUP.S14)2.1 修改CSTARTUP1. 修改cstartup.s14 檔案2. 執行a6502 cstartup.s14(如此將產生cstartup.r14 之object 檔案)3. 將library 更新:執行xlib.exe ,並輸入下列操作def-cpu 6502rep-mod CSTARTUP library 名稱 exit變更過後的library 可以覆蓋過原先的檔案,從此將會使用新的CSTARTUP 程序; 若是不想將原來的library 覆蓋,可以將新產生的library 放在project 路徑,然後 在.xcl 檔案裡面加上下列資料也可以只用指定的library: library 名稱V0.42003/09/0923. C l i b r a r y 定義 [C -93]IAR-C 的標準library 包含三個部分: 1. 標準C library 定義。
2. CSTARTUP 定義的程序。
3. 內定供6502使用的low-level 功能。
使用方式:首先必須先指定合適的記憶體模式與CPU 的library ,並在程式中include 需用到的Head files 。
第一部分产品介绍AVR® IAR Embedded Workbench® IDE用户手册的这部分包括以下章节:产品介绍已安装文件1.1产品介绍嵌入式IAR Embedded Workbench®是一个非常有效的集成开发环境(IDE),它使用户充分有效地开发并管理嵌入式应用工程。
作为一个开发平台,它具备任何在用户每天的工作地方所想要的特性。
本章介绍了嵌入式IAR Embedded Workbench IDE,旨在使用户获得对本产品的所有集成工具的总体了解。
1.1.1嵌入式IAR Embedded Workbench IDE嵌入式IAR Embedded Workbench IDE提供一个框架,任何可用的工具都可以完整地嵌入其中,这些工具包括:高度优化的IAR A VR C/C++编译器;A VR IAR汇编器;通用IAR XLINK Linker;IAR XAR库创建器和IAR XLIB Librarian;一个强大的编辑器;一个工程管理器;IAR C-SPY TM调试器,一个具有世界先进水平的高级语言调试器。
嵌入式IAR Embedded Workbench适用于大量8位、16位以及32位的微处理器和微控制器,使用户在开发新的项目时也能在所熟悉的开发环境中进行。
它为用户提供一个易学和具有最大量代码继承能力的开发环境,以及对大多数和特殊目标的支持。
嵌入式IAR Embedded Workbench有效提高用户的工作效率,通过IAR工具,用户可以大大节省工作时间。
我们称这个理念为:“不同架构,同一解决方案”。
如果用户想获得关于所支持的目标处理器的更详细的信息,请与用户的软件提供商或者与用户的IAR代理联系,或者登陆IAR网站 以查询最新的产品信息。
一个可扩展的模块化的环境尽管嵌入式IAR Embedded Workbench IDE可以提供完成一个成功工程所需的所有工具,但我们也认识到集成其他工具的必要性。
IAR 使用手册RfStorm工作室为客户提供全方位的技术支持,用户可以放心使用我们的产品。
产品不断更新中,敬请紧密关注。
RfStorm工作室地址:成都市成华区二仙桥东三路1号网址:/客户服务QQ:1048910847E-mail:rfstorm.service@R f S t o r m工作室目录1、IAR介绍 (2)2、IAR 集成开发环境 (5)3、IAR安装 (5)4、新建一个工程 (12)5、参数的配置 (16)5.1、General Options设置 (16)5.2、linker设置 (18)5.3、Debugger设置 (18)5.4、Z-stack生成HEX文件 (20)6、编译、连接、下载 (22)1、IAR介绍IAR Embedded Workbench的C/C++ 交叉编译器和调试器是今天世界最完整的和最容易使用专业嵌入式应用开发工具。
IAR Embedded Workbench 对不同的微处理器提供一样直观用户界面。
IAR Embedded Workbench今天已经支持35 种以上的8 位/16 位32 位ARM 的微处理器结构。
IAR Embedded Workbench 包括:嵌入式C/C++ 优化编译器,汇编器,连接定位器,库管理员,编辑器,项目管理器和C-SPY调试器中。
使用IAR 的编译器最优化最紧凑的代码,节省硬件资源,最大限度地降低产品成本,提高产品竞争力。
EWARM 是IAR 目前发展很快的产品,EWARM已经支持ARM7/9/10/11XSCALE ,并且在同类产品中具有明显价格优势。
其编译器可以对一些SOC 芯片进行专门的优化. 如Atmel ,TI ,ST ,Philips 。
除了EWARM 标准版外,IAR 公司还提供EWARM BL (256K )的版本,方便了不同层次客户的需求。
IAR System 是嵌入式领域唯一能够提供这种解决方案的公司。
IAR-A VR C编译器简要第一章数据类型(编译器支持ISO/ANSI C 基本数据类型和一些附加数据类型。
)1.1.整型数据:数据类型大小范围对齐bool8 bits 0 to 1 1char8 bits 0 to 255 1signed cha r 8 bits -128 to 127 1unsigned char 8 bits 0 to 255 1signed short16 bits -32768 to 32767 1unsigned short16 bits 0 to 65535 1signed int16 bits -32768 to 32767 1unsigned int16 bits 0 to 65535 1signed long32 bits -231 to 231-1 1unsigned long32 bits 0 to 232-1 1signed long long64 bits -263 to 263-1 1unsigned long long64 bits 0 to 264-1 1bool数据类型在C++语言里是默认支持的。
如果你在C代码的头文件里包含stdbool.h, bool数据类型也可以使用在C语言里。
也可以使用布尔值false和true。
1.2.浮点数据类型:数据类型大小Rang e (+/-)E xponent M ant i ssaflo a t32 bit s±1.18E-38t o ±3.39E+388 bit s23b i t sdou b le*32 bit s(def au lt)±1.18E-38t o ±3.39E+388 bit s23 bit sdou b le*64 bit s±2.23E-308to±1.79E+30811 bit s 52b i t slong do ub le*32 bit s±1.18E-38t o ±3.39E+388 bit s23 bit slong do ub le*64 bit s±2.23E-308to±1.79E+30811 bit s 52b i t s1.3.指针类型:指针有数据指针和函数指针。
3.2IAR C安装与使用
IAR C语言开发软件由IAR公司开发的第三方MSP430开发环境,有30天试用版与4K容量限制的DEMO版本。
是一个新的专业化集成开发环境,用来编辑,编译和调试Windows 9x/NT/2000/XP环境下的MSP430应用程序。
还包含一个汇编器和一个仿真器。
IAR Embedded Workbench(简称EW)IAR EW的C/EC++交叉编译器和调试器是今天世界最完整的和最容易使用专业嵌入式应用开发工具。
EW对不同的微处理器提供一样直观用户界面。
EW包括:嵌入式C/C++优化编译器,汇编器,连接定位器,库管理员,编辑器,项目管理器和C-SPY调试器中。
使用IAR的编译器最优化最紧凑的代码,节省硬件资源,最大限度地降低产品成本,提高产品竞争力。
其中最广泛使用的有EWARM, EWAVR和EW430.
找到IAR软件EW430_310的子目录,双击autorun.exe,开始安装EW430_310,如图3-21所示,安装路径可以按默认的。
图3-21 IAR软件EW430_310的子目录
将软件中crack子目录下图3-22的软件拷贝到安装软件图3-23的bin目录下,运行crack ,回答y即可
图3-22 软件中crack子目录
新型C/C++工具包 3.10版的集成开发环境IAR Embedded Workbench具有内嵌C++扩展功能,支持在模板和标准模板库(STL)内嵌C++功能,包括模板、命名空间、可变符号、static-cast(类型强制转换)、reinterpret-cast(类型强制转换)和const-cast(类型强制转换);新型IDE窗口管理具有可停靠窗口和多视窗功能;源浏览器可对定义和声明进行快速导航;IAR C-SPY调试器的STL Container Awareness具有对STL容器内数据类型的码元进行总览的功能;IAR C-SPY调试器支持全硬件调试;还包括Ready-made 工程模板、自定义C/内嵌C++库和在线帮助系统。
以下是在使用MSP430中的一些总结:
1)系统时钟问题:
系统默认使用DCO,使用外部高速晶振XT2时必须自己开启XT2,并延时50us等待XT2起振,然后手工清除IFG1中的OFIFG位!一定要注意操作顺序,打开XT2->等待XT2稳定->切换系统时钟为XT2,若后面两步操作反了,在通常情况下不会出现问题,但是在电压不稳MCU频繁复位的情况下,非常容易造成MCU死掉,只能掉电后重新上电才能可靠复位。
图3-23 安装软件的bin目录
2)早期版本的IAR开发环境
必须在Project->Option->C-Spy中选择对应器件的DDF文件,否则调试时无SFR 窗口。
3)在写Flash期间,一定要关闭中断,此时CPU无法执行程序
4)调试的时候,不要选中"Release JTAG on Go"
5) 在调试时,需要关闭看门狗,否则在打开看门狗的情况下,每当执行到断点,程序将会跳转到入口点从头执行。
或者,暂停运行或停止到断点处时,当需要继续运行时,程序不再执行,而是需要使用“同步JTAG”才能继续运行(从头运行)
6) IAR EWB标识符是区分大小写的
7) 结构变量内部存在对齐要求,通常按照2个字节的位置对齐,在"C/EC++ Compiler Reference Guide"的P93又如下例子:
struct {
short s; /* stored in byte 0 and 1 */
char c; /* stored in byte 2 */
long l; /* stored in byte 4, 5, 6, and 7 */
char c2; /* stored in byte 8 */
} s;
sizeof(s) 为10,而不是8
可以使用#pragma pack来改变这种对齐方式,但是会导致,这个结构只能按字节方式存取
图3-24 版本号查看
8) MSP430 IAR C/EC++ Compiler支持两个运行库
a) IAR CLIB : 主要用于8或16为处理器,不完全兼容ISO/ANSI C,也不完全支持IEEE 754浮点数,不支持Embedded C++.
b) IAR CLIB : 支持ISO/ANSI C和Embedded C++.
图3-25 进入编辑状态
9) cstartup的定制
(1). 在__low_level_init()中添加代码。
该函数可以用来初始化I/O寄存器,并决定数据段是否在cstartup被初始化。
文件430\src\lib\lowinit.c给出了框架,copy 到项目目录中使用,文件中有一定的使用说明。
(2) 若__low_level_init()中添加代码不能满足要求,则把
430\src\lib\cstartup.s43拷贝到自己的工作目录,修改所需代码;然后在将该文件添加到项目,在项目选型的XLINK的include页下选择Ignore CSTARTUP in library即
可。
10) 使用#include "io430x14x.h"和#include "in430.h"来替代#include
<msp430x14x.h>使用定义的位变量可以使用以下方式定义位变量,但是编译器最终还是转换为字节操作:
struct
{
unsigned char WDTIE : 1;
unsigned char OFIE : 1;
unsigned char : 2;
unsigned char NMIIE : 1;
unsigned char ACCVIE : 1;
unsigned char URXIE0 : 1;
unsigned char UTXIE0 : 1;
} IE1_bit;
不推荐使用bitfields,效率很低
11) 数组的索引值用int型效率最高,char型略低
数组类型:char型数组效率最高,
其他类型的数组在索引时,都采用了乘法。