IAR使用全面方法.docx
《IAR使用全面方法.docx》由会员分享,可在线阅读,更多相关《IAR使用全面方法.docx(34页珍藏版)》请在冰豆网上搜索。
![IAR使用全面方法.docx](https://file1.bdocx.com/fileroot1/2022-12/7/e4139523-c541-482c-9db3-cdc45b54a7c4/e4139523-c541-482c-9db3-cdc45b54a7c41.gif)
IAR使用全面方法
软件介绍
AVR®IAREmbeddedWorkbench®IDE用户手册的这部分包括以下章节:
产品介绍
已安装文件
1.1产品介绍
嵌入式IAREmbeddedWorkbench®是一个非常有效的集成开发环境(IDE),它使用户充分有效地开发并管理嵌入式应用工程。
作为一个开发平台,它具备任何在用户每天的工作地方所想要的特性。
本章介绍了嵌入式IAREmbeddedWorkbenchIDE,旨在使用户获得对本产品的所有集成工具的总体了解。
1.1.1嵌入式IAREmbeddedWorkbenchIDE
嵌入式IAREmbeddedWorkbenchIDE提供一个框架,任何可用的工具都可以完整地嵌入其中,这些工具包括:
高度优化的IARAVRC/C++编译器;
AVRIAR汇编器;
通用IARXLINKLinker;
IARXAR库创建器和IARXLIBLibrarian;
一个强大的编辑器;
一个工程管理器;
IARC-SPYTM调试器,一个具有世界先进水平的高级语言调试器。
嵌入式IAREmbeddedWorkbench适用于大量8位、16位以及32位的微处理器和微控制器,使用户在开发新的项目时也能在所熟悉的开发环境中进行。
它为用户提供一个易学和具有最大量代码继承能力的开发环境,以及对大多数和特殊目标的支持。
嵌入式IAREmbeddedWorkbench有效提高用户的工作效率,通过IAR工具,用户可以大大节省工作时间。
我们称这个理念为:
“不同架构,同一解决方案”。
如果用户想获得关于所支持的目标处理器的更详细的信息,请与用户的软件提供商或者与用户的IAR代理联系,或者登陆IAR网站以查询最新的产品信息。
一个可扩展的模块化的环境
尽管嵌入式IAREmbeddedWorkbenchIDE可以提供完成一个成功工程所需的所有工具,但
我们也认识到集成其他工具的必要性。
因此,IAREmbeddedWorkbenchIDE容易适应于用户喜欢的编辑器和源代码控制系统。
IARXLINKLinker可以输出多种格式,使用户可在第三方的软件上进行调试。
实时操作系统(RTOS)支持也可加载到产品中。
编译器,汇编器和连接器也可在命令行环境中运行,用户可以在一个已建好的工程环境中把它们作为外部工具使用。
特性
嵌入式IAREmbeddedWorkbench是一个灵活的集成开发环境,使用户可以针对多种不同的目标处理器开发应用程序。
并为快速开发和调试提供便捷的Windows截面。
项目管理
嵌入式IAREmbeddedWorkbenchIDE能帮助用户控制所有的工程模块,例如,C或者C++源代码文件、汇编文件、“引用”文件、以及其他相关模块。
用户创建一个工作区,可以在此开发一个或多个工程。
文件可以组合,并且可以为各级设置选项-工程、组、或者文件。
任何修改都被记录,从而保证重新设计时可以获得所有所需的模块,而可执行文件中不会包含已过期的模块。
下表指出另外的一些特性:
通过工程模板可以创建独立的可编辑和可运行的工程文件,使开发平稳启动;
分级的工程表述;
具有分级图标的源代码浏览器;
可以为全球化、组和个人源代码文件设置选项;
“Make”功能只在必要时才实行再编译、再汇编和再连接文件;
基于文本的工程文件;
自定义功能使用户轻松的扩展标准工具栏;
工程文件输入时可使用命令行模式。
源代码控制
源代码控制(SourceCodeControl,SCC),作为修订控制,可用于跟踪用户的源代码的不同版本。
IAREmbeddedWorkbench可以识别和接受基于Microsoft发布的SCC接口规范的任何第三方源代码控制系统。
窗口管理
为使用户充分而方便地控制窗口的位置,每个窗口都可停靠,用户就可以有选择地给窗口做上标记。
可停靠的窗口系统还通过一种节省空间方式使多个窗口可同时打开。
另外,重新分配窗口大小也很方便。
2
文本编辑器
集成化的文本编辑器可以并行编辑多个文件,并具有时兴编辑器所期望的所有编辑特性,包括无限次的撤销/重做和自动完成。
另外它还包含针对软件开发的特殊功能,比如关键字的着色(C/C++,汇编和用户定义等)、段缩进、以及对源文件的导航功能。
还可识别C语言元素(例如括号的匹配问题)。
下表指出另外的一些特性:
上下文智能帮助系统可以显示DLIB库的参考信息;
使用文本风格和色条指出C、C++和汇编程序的语法;
强大的搜索和置换功能,包括多文件搜索;
从错误列表直接跳转到程序行;
支持多字节字符;
圆括号匹配
自动缩排;
书签功能;
每个窗口均可无限次撤销和重做。
文档
AVR嵌入式IARWorkbenchIDE在本文档中有详细讲解。
另外还有在线的帮助文件以及超文本格式的PDF用户文档。
1.1.2IARC-SPY调试器
IARC-SPY调试器是为嵌入式应用程序开发的高级语言调试器。
在设计上,它与IAR编译器和汇编器一起工作,并且与嵌入式IAREmbeddedWorkbenchIDE完全集成,可在开发与调试间自由切换。
因此,它使用户可做到:
在调试时进行编辑。
在调试过程中,源代码的修正可以直接写入用来控制调试过程的同一窗口中。
其修改将在项目重启后生效;
在启动调试器之前可设置源代码断点。
源代码中的断点可与同一段源代码相关联,即使中间插入了新的代码。
IARC-SPY调试器由一个具备基本的C-SPY系列特点的主要部分和驱动部分组成。
C-SPY驱动确保与目标系统的通信和控制。
并提供一个用户接口-特殊菜单,窗口和对话框-以连接到目标系统的功能上,比如,特殊断点。
在下面内容中,将概述通用C-SPY调试器的特性。
对于可用的C-SPY驱动的概述,请参见第8页,IARC-SPY调试器系统。
C-SPY调试器的总体特性
因为IAR系统提供的是一个整体工具链,编译器和连接器的输出结果包含调试器的扩展调试信息,从而使用户获得最佳的调试效果。
IARC-SPY调试器具备本节中所介绍的总体特性。
源代码和反汇编调试
IARC-SPY调试器使用户能按要求在源代码和反汇编调试间切换,适用于C/C++和汇编语言源代码。
调试C或C++源代码是验证用户的应用程序的逻辑性最快捷、最便利的方式,然而,反汇编调试则针对应用程序的错误段,并对硬件进行精确控制。
在混合显示模式中,调试器显示C/C++源代码及其对应的反汇编代码清单。
程序调用级的单步调试
传统的调试器设置,认为最佳的源代码调试间隔是“行到行”,与之相比,C-SPY则更细化,将每个语句和调用函数称为“步点”,并加以控制。
这就意味着在每个表达式里的函数调用,以及函数调用作为参数甚至到其他类型的函数调用都可以进行“单步”调试。
后者在调试C++源代码时特别有效,主要针对大量的外部函数调用,比如对象构造器。
调试信息提供了内嵌函数,如果执行了这类函数的调用,也可进行源码级调试。
代码和数据断点
C-SPY断点系统允许用户在调试程序过程中设置多种断点,并按照特定需要在某一位置停止。
用户可以设置代码断点来验证程序的逻辑性是否正确。
也可以设置数据断点来检验数据如何以及何时改变。
最后,用户还可以添加条件至断点处。
变量和表达式监控
当用户监控变量和表达式时,用户可以选择很多工具。
任何变量和表达式都可通过一次扫描来求值。
用户可以很轻松地在一段较长的时间内对已定义的表达式进行监控和记录其值。
对局部变量用户可以直接控制,同时可以无干扰地显示即时数据。
最终将自动显示最后指定的变量。
Container响应
当用户在IARC-SPY调试器中运行程序时,可以查看诸如STL列表和向量地址等库内数据类型。
因此,用户在运行C++STLcontainers时,可以对程序进行总体浏览,以及良好的调试。
调用栈信息
AVRIARC/C++编译器产生扩展的函数调用信息。
在不影响整个运行环境的情况下,无论程序计数器指在哪里C-SPY都能显示整个函数调用栈信息。
用户可以在调用栈中选择任何函数,并且可以获得相关的局部变量和寄存器的可用信息。
强大的宏系统
IARC-SPY调试器包含了一个强大的内部宏系统,能使用户定义复杂的动作并得以实施。
C-SPY宏可单独使用也可以同复杂的断点联合使用-如果用户是在使用仿真器的话-中断仿真系统需要进行一系列复杂的动作。
C-SPY调试器的其他特性
下表指出了一些其他的特性:
模块化和可扩展化的结构设计允许在调试器中加入第三方设备,比如,实时操作系统,外围仿真模块和驱动;
线程运行保证在运行目标应用程序时IDE仍处于响应状态;
自动步进;
源代码浏览器可以方便查看函数,类型以及变量;
变量的扩展类型识别;
可配置化的寄存器(CPU和外围设备)以及存贮器窗口;
支持代码覆盖和函数级模块化;
终端I/O模拟;
支持UBROF,Intel扩展和Motorola输入格式。
RTOS响应
IARC-SPY调换器支持实时OS响应调试。
RTOS插件模块由IAR以及一些第三方的供货商提供。
如要了解支持RTOS模块信息,请联系用户的软件供应商或IAR代理,或者访问IAR网站。
文档
IARC-SPY调试器在本文档中有详细介绍。
调试器的一般特点在第四部分中有介绍,每个调试器驱动特殊性质在第五部分IARC-SPY仿真器和第六部分C-SPY硬件调试系统中有介绍。
网上还有帮助信息和超文本格式(PDF)文档。
1.1.3IARC-SPY调试器系统
至本手册撰写之时,AVR公司的IARC-SPY调试器针对下列目标系统发布了驱动:
仿真器;
AVR®ICE200
AVR®JTAGICE
AVR®JTAGICE
AVR®CryptoControllerROM-monitorforAtmelSmartCardDevelopmentBoard(SCDB)和Voyager开发系统
需了解C-SPY驱动的相关信息,请联系用户的软件供应商或IAR代理。
也可登陆IAR网站,。
如需了解更多关于IARC-SPY调试器的信息,请参看调试器概念,第107页。
在下面章节,将描述各种驱动。
C-SPY仿真器驱动
C-SPY软仿真器驱动在软件上完全模拟了目标处理器的功能。
通过这个驱动,在获得相关硬件之前就可对程序的逻辑性进行调试。
因为不需要硬件,它同时也是很多应用程序最有效的解决方案。
特性
除具备C-SPY调试器的基本特点外,软仿真器驱动还具备:
指令级仿真;
中断模拟;
外围设备仿真,使用C-SPY宏系统与直接断点并行。
关于IARC-SPY软仿真器更详细的信息,请参看第五部分IARC-SPY软仿真器一节。
C-SPYICE200驱动
C-SPYICE200驱动允许连接AVR®ICE200。
C-SPYICE200驱动提供了低成本的实时调试功能。
特性
除了具有IARC-SPY调试器的基本特性外,C-SPYICE200驱动还具备:
全部面向微控制器的实时运行。
代码断点数量不限。
不占用目标系统的存贮器;
注意:
C-SPYICE200驱动不支持代码和数据覆盖、规格化。
关于C-SPYICE200驱动更详细的信息,请参看本手册第六部分C-SPY硬件调试器系统。
C-SPYJTAGICE驱动
C-SPYJTAGICE驱动允许连接AVR®JTAGICE。
它提供了自动的flash下载,并利用了片上调试的性能。
C-SPYJTAGICE驱动提供了低成本的实时调试功能。
特性
除了具有IARC-SPY调试器的基本特性外,C-SPYJTAGICE驱动还具备:
全部面向微控制器的实时运行。
使用目标设备上的硬件断点。
不占用目标系统的存贮器;
内置的flash下载器。
串口通信。
注意:
C-SPYJTAGICE驱动不支持代码和数据覆盖、规格化。
关于IARC-SPY软仿真器更详细的信息,请参看本手册第六部分C-SPY硬件调试器系统。
C-SPYJTAGICEMKII驱动
C-SPYJTAGICEMKII驱动允许连接AVR®JTAGICEMKII。
它提供了自动的flash下载,并利用了片上调试的性能。
C-SPYJTAGICEMKII驱动提供了低成本的实时调试功能。
特性
除了具有IARC-SPY调试器的基本特性外,C-SPYJTAGICEMKII驱动还具备:
全部面向微控制器的实时运行。
使用目标设备上的4个硬件断点,以及不限数量的软件断点。
不占用目标系统的存贮器;
内置的flash下载器。
通过串口或USB连接实现通信;
注意:
C-SPYJTAGICEMKII驱动不支持代码和数据覆盖、规格化。
关于C-SPYJTAGICEMKII驱动更详细的信息,请参看本手册第六部分C-SPY硬件调试器系统。
C-SPYCRYPTO控制器ROM监视器驱动
C-SPYCRYPTO控制器ROM监视器驱动(CCR驱动)允许连接到AtmelSmartCard开发板(SCDB)和Voyager开发系统。
特性
除了具有IARC-SPY调试器的基本特性外,CCR驱动还具备:
实时运行;
RS-232串口通信;
支持实时中断;
注意:
C-SPYROM监视器不支持代码覆盖。
关于IARC-SPYROM监视器更详细的信息,请参看本手册第六部分C-SPY硬件调试器系统。
1.1.4IARC/C++编译器
AVRIARC/C++编译器是一个具有世界先进水平的具备标准C/C++特性的编译器,众多的扩展插件让用户可以更好地使用AVR的特定功能。
编译器已经和其他的AVR的IAR系统集成。
特性
AVRIARC/C++编译器具备以下特性:
代码生成
普通或特定的AVR的最优化技术可以产生出高效的机器代码;
全面的输出选择,包括可重定位的目标代码、汇编源代码和可选的汇编器列表文件;
目标代码可与汇编器连接;
生成扩展的调试信息。
语言工具:
支持C或C++编程语言;
具有支持IAR扩展的嵌入式C++的特性:
模板、名称空间、多重的虚拟外设、固定操作符(static_cast,const_cast,和reinterpret_cast),以及标准的模板库(STL);
在不同的存储器中放置类;
作为一个独立自主的环境,与ISO/ANSI标准相一致;
有特殊目标语言的扩展,比如特殊函数的输入,扩展的关键字,#pragma指示,预设标志,内部函数,完全分配和行内汇编器;
针对嵌入系统的应用函数的标准库;
与IEEE标准兼容的浮点算法;
可在C或者C++中应用的中断函数。
类型检查
在编译时进行扩展类型检查;
在连接时进行外部调用类型检查;
连接时检查应用程序的内部模块移植性。
运行环境
AVRIAREmbeddedWorkbench提供了两套运行库:
IARDLIB库,支持ISO/ANSIC和C++。
这个库还支持IEEE754格式的浮点数,多字节参数和局部参数。
IARCLIB库是一种轻型库,并不完全与ISO/ANSIC兼容。
同时,它也不支持IEEE745格式或者C++格式。
现在有几种模式来定制运行环境和运行库。
就这两种运行库而言,库的源代码已经包含在其中了。
文档
AVRIARC/C++编译器在AVR®IARC/C++编译器参考手册里有详细介绍。
1.1.5IAR汇编器
AVRIAR汇编器同其他的IAR系统软件集成。
它是一个强大的重定位宏汇编器(支持Intel/Motorola格式),并且含有多种指示符和表达式。
它具备一个内部C语言预处理器,因而支持条件汇编。
AVRIAR汇编器使用与Atmel®公司AVR汇编器相同的存贮机制和操作语法,从而简化了对已有代码的移植过程。
关于详细信息,请参见汇编器AVR®IAR汇编器参考手册。
特性
AVRIAR汇编器具备以下特性:
C预处理器;
扩展的交叉调用输出的列表文件;
由可用存贮器大小决定参数个数和程序大小;
支持外部调用的复杂表达式;
每个模块有多达65536个可重定位段;
在参数表中有255个重要参数。
文档
AVRIAR汇编器在AVR®IAR汇编器参考手册里有详细介绍。
1.1.6IARXLINK连接器
IARXLINK连接器连接一个或多个由AVRIAR汇编器或者AVRIARC/C++编译器产生的可重定位的目标文件,并生成AVR处理器所需的机器代码。
它在连接小的单个文件、完全汇编程序时同连接大的、可重定位的、多模块的C/C++或混合C/C++以及汇编程序时一样快捷便利。
它可以识别超过30种的工业标准的代码,另外还包括IARC-SPY调试器所使用的IAR系统调试格式——UBROF(通用的二进制可重定位目标文件格式)。
一个应用程序可由任意多个UBROF可重定位文件构成,并且可以和汇编器以及C或C++程序合成。
IARXLINK连接器最终输出结果是一个完整的、可执行的目标文件,并可以下载到AVR的处理器中或到一个硬件仿真器中。
当然,输出文件是否包含调试信息取决于用户所选择的输出格式。
IARXLINK连接器支持用户定义库,并只下载那些在连接应用程序时所需的模块。
在连接前,IARXLINK连接器将对所有的模块进行C语言级的类型检查,并对所有输入文件中的所有参数进行完全的可靠性检查。
它还对所有的模块进行统一的编译器设置检查,从而确保使用C或C++运行库的正确类型和参数。
特性
完全的内部模块类型检查;
简易的库模块的覆盖;
灵活的段命令可以更细致地掌控代码和数据的定位;
连接符的定义使对配置的控制更加自如;
可选的代码检测功能对运行监测;
去除无用代码和数据。
文档
IARXLINK连接器在IARLinker和库工具参考手册中有详细介绍。
1.1.7IARXARLibraryBuilder库创建器和IARXLIBLibrarian库管理器
一个库是包含一系列可重定位目标模块的单个文件,每个模块都按需要加载到文件中,互相独立。
IARXARLibraryBuilder库创建器帮助用户轻松地创建库。
此外,IARXLIBLibrarian库管理器使用户可以对IAR系统汇编器和编译器产生的可重定位目标库文件进行操作。
一个库文件与任何由汇编器或编译器生成的可重定位目标文件并没有区别,除非它包含了“LIBRARY”类型的模块。
所有的C或C++程序都使用库,同时AVRIARC/C++编译器则使用一些标准的库文件。
特性
IARXARLibraryBuilder库创建器和IARXLIBLibrarian库管理器均具备以下特性:
其模块可以嵌入一个库文件中;
交互式或者批量式操作。
IARXLIBLibrarian库管理器还具备以下特点:
其模块可以列出、添加、插入、更换或移除;
其模块可以在程序和库类型间变更;
字段可以列出;
字符可以列出。
文档
IARXARLibraryBuilder库创建器和IARXLIBLibrarian库管理器在IAR连接器和库工具参考手册中有详细介绍。
另外,在嵌入式IAREmbeddedWorkbench的帮助菜单中还有一份PDF格式的文档供查询。
1.2已安装文件
本章介绍了安装过程中创建了哪些目录以及使用了哪些文件类型。
在本章末尾,介绍了在不同版本的手册和在线文档中可以找到的信息。
参考产品附带的“快速入门”和“安装和注册手册”,可以查到关于系统要求以及如何安装及注册IAR系统产品的信息。
1.2.1目录结构
安装过程中创建了几个目录,用来放置IAR系统开发工具所使用的不同类型的文件。
下面就详细讲解每个目录下默认的文件。
根目录
在安装过程中创建的默认根目录为:
x:
\ProgramFiles\IARSystems\EmbeddedWorkbench4.n,x是指MicrosoftWindows的安装目录,而4.n是嵌入式IAREmbeddedWorkbenchIDE的版本号。
11
注意:
安装路径可与上图设置不同,这取决于先前安装的IAR产品以及用户个人的喜好。
AVR目录
Avr目录包含所有特定产品的相关子目录。
Avr\bin目录
Avr\bin子目录包含特殊AVR插件的可执行文件,比如AVRIARC/C++编译器,AVRIAR汇编器和AVRIARC-SPY驱动。
Avr\config目录
Avr\config子目录包含用于配置开发环境和工程的文件,比如:
连接器命令模板文件(*.xcl)
特殊函数注册描述文件(*.sfr)
C-SPY设备描述文件(*.ddf)
语法着色配置文件(*.cfg)
应用工程和库工程文件的模板文件(*.ewp)以及它们相应的库配置文件。
Avr\doc目录
Avr\doc目录包含AVR工具的最新信息的帮助文档。
我们建议用户先读一下这些文档。
该目录下也包含了本手册和AVR参考手册的在线超文本(PDF格式)文件,还有在线帮助文件(CHM格式)。
Avr\inc目录
Avr\inc子目录包含内部文件,比如标准C或C++库的头文件。
同样,还有定义特定功能寄存器的特殊头文件,而这些文件主要由编译器和汇编器来使用。
Avr\lib目录
Avr\lib子目录包含编译器使用的预先创建的库以及相应的库配置文件。
Avr\src目录
Avr\src子目录包含一些可配置库功能的源文件以及一些应用程序代码示例。
此外还包含库的源代码。
Avr\tutor目录
Avr\tutor子目录包含本文档中的教程的相应文件。
公共目录
公共目录包含所有嵌入式IAREmbeddedWorkbench产品共享的插件所在的子目录。
Common\bin目录
Common\bin子目录包含所有嵌入式IAREmbeddedWorkbench产品共享插件的可执行文件,例如IARXLINKLinker,IARXLIBLibrarian,IARXARLibraryBuilder以及编辑器和图形用户接口插件。
IAREmbeddedWorkbench的可执行文件也放置在这里。
C