当前位置:首页 >> 信息与通信 >>

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 不支持十六进制浮点数操作。选择 Full 表 示链接完整运行库,其中包含 locale 接口,C locale,支持文件描述符,printf and scanf 支持多字节操作, strtod 支持十六进制浮点数操作。选择 Custom 表示链接用户自定义库,此时应在 Configuration 文本框内 指定用户自己的库配置文件。 若选择 Library low-level interface implementaion 选项区域中的 None 复选框, 则在应用程序调试过程中不使用 DLIB 库提供的底层调试接口; 若选择 Semihosted 或 IAR breakpoint 复选 框,则在应用程序调试过程中使用 DLIB 库提供的底层调试接口,如通过 Terminal I/O 窗口实现输入输出 等。 图 5.4 所示为基本选项配置中的 Library Options 选项卡。 通过 Printf formatter 和 Scanf formatter 选项区域 中的下拉列表框,可以分别设置 Printf 和 scanf 函数支持的输出和输入格式,可用格式包括 Full、Large、 Small 和 Tiny。

图 5.4 基本选项配置中的 Library Options 选项卡 图 5.5 所示为基本选项配置中的 MISRA C 选项卡。选择 Enable MISRA C 复选框后,点击 All 按钮选择所 有 MISRA C 规则校验模块,点击 Required 按钮选择必须的 MISRA C 规则校验模块,点击 None 按钮将 不选择 MISRA C 规则校验模块。用户还可以通过 Set Active MISRA C Rules 选项区域内的复选框增选或 删除 MISRA C 规则校验模块。

图 5.5 基本选项配置中的 MISRA C 选项卡

5.1.2 C/C++编译器选项配置 点击选项配置窗口左边 Category 列表框内的 C/C++ Compiler 选项,进入 C/C++编译器选项配置,对应有 多个选项卡,用于设定不同的配置选项。每个编译器选项卡的右上角都有一个 Factory Settings 按钮,单 击该按钮将自动设置默认选项。每个编译器选项卡中还都有一个 Multi-file Compilation 复选框,选择该复 选框,允许编译器将多个文件作为一个编译单元进行编译,从而实现各程序文件之间的交互优化,例如内 联、交叉调用、交叉跳转等,若同时选择下面的 Discard Unused Publics 选项,则将丢弃未使用的公共变 量及公共函数。 图 5.6 所示为编译器选项配置中的 Language 选项卡,其中各选项的含义及用法如下: ? Language 选项区域用于设置希望采用的编程语言,默认为 C。如果选择 Automatic 复选框,则根据源 程序文件的扩展名自动选择,扩展名为“.C”时作为 C 源程序进行编译,扩展名为“.CPP”时作为扩展嵌入式 C++源程序进行编译。? ? Require Prototypes 复选框用于强制编译器检查所有函数是否具有合适的原型。调用未声明过的函数、 定义未声明原型的公共函数、采用未包含原型的函数指针进行直接函数调用等都将导致编译出错。 ? Language Conformance 选项区域用于设置是否允许 IAR C/C++语言扩展,默认为允许。选择 Relaxed ISO/ANSI 复选框将禁止 IAR C/C++语言扩展, 但并不要求严格符合 ISO/ANSI 标准。 选择 Strict ISO/ANSI 将禁止 IAR C/C++语言扩展,且要求严格符合 ISO/ANSI 标准。 ? Plain ‘char’ is 选项区域用于设置 char 类型数据的符号。通常编译器将 char 作为无符号类型对待,若选

择 Signed 复选框则作为带符号类型对待。 需要注意的是运行库是按无符号类型编译的, 因此链接运行库时 选择 Signed 复选框可能导致类型不匹配错误。 ? 选择 Enable multibyte surport 复选框允许在 C 或 C++源程序文件中使用多字节字符,默认状态下不允 许在 C 或 C++源程序文件中使用多字节字符。

图 5.6 编译器选项配置中的 Language 选项卡 图 5.7 所示为编译器选项配置中的 Code 选项卡,选择 Generate interwork code 复选框可在编译时生成 ARM 及 Thumb 混合代码,并且可以调用混合库函数。Processor mode 选项区域用于选择处理器模式,默 认为 Thumb 模式。

图 5.7 编译器选项配置中的 Code 选项卡 图 5.8 所示为编译器选项配置中的 Optimization 选项卡, 用于设置编译器的优化方法和优化级别。 通过 Level 选项区域可选择不同的优化级别:None(不优化,对调试支持最好)、Low(低级优化)、Medium(中级优化) 和 High(高级优化); 若选择的优化级别为 High, 还可通过下拉列表框选择 Balanced(平衡)、 Size(代码大小) 或 Speed(运行速度),来决定高级优化方法。根据所选择的优化级别,Enabled 选项框内将自动选择不同 的优化项目。

图 5.8 编译器选项配置中的 Optimizations 选项卡 图 5.9 所示为编译器选项配置中的 Output 选项卡。选择 Generate debug information 复选框,将使编译器 在生成的目标代码中包含适用于 C-SPY 和其它调试器所需要的附加信息,这会使目标代码的长度增加,若 不想要这些附加信息,请不要选中该复选框。

图 5.9 编译器选项配置中的 Output 选项卡 IAR C/C++编译器将函数代码放入指定的存储器段中,供 ILINK 链接器使用。默认情况下函数代码被放置 在名为“.text”的存储器段中。如果不想使用默认的存储器段,可在 Code section name 文本框内输入以点 号“.”开头的其它存储器段名,这对于希望将应用程序代码放置在不同地址范围时特别有用。采用非默认存 储器段名时应特别小心,避免与编译器或链接器的默认设置发生冲突而产生错误,通常修改存储器段名之 后还需要修改相应的链接器配置文件。

图 5.10 编译器选项配置中的 List 选项卡 图 5.10 所示为编译器选项配置中的 List 选项卡, 用于设置是否生成列表文件, 以及列表文件所包含的信息。 编译器默认为不生成列表文件。选择 Output list file 方形复选框将生成输出列表文件,Assembler mnemonics 圆形复选框规定列表文件中包含汇编指令助记符,Diagnostics 圆形复选框规定列表文件中包 含诊断信息。 选择 Output assembler file 方形复选框将生成输出汇编文件,Include source 圆形复选框规定汇编文件中 包含源代码,Include call information 圆形复选框规定汇编文件中包含编译器生成的运行模块属性、调用帧 以及帧大小等信息。 列表文件以“.lst”作为扩展名,存放在 List 目录下。用户可以通过工作区窗口的 Output 目录打开列表文件。 图 5.11 所示为编译器选项配置中的 Preprocessor 选项卡,用于符号定义以及规定包含文件所在的目录路 径。选项卡中各项的含义及用法如下: ? 若选择 Ignore standard include directory 复选框,在对项目进行创建时将不使用标准包含文件。 ? Additional include directories 文本框用于添加包含文件路径。添加时应输入包含文件所在的完整路径 名,可以采用参数变量,当前项目所在路径为“$PROJ_DIR$”,IAR EWARM 软件的安装目录路径为 “$TOOLKIT_DIR$”。 ? Preinclude 文本框用于指定编译器读入源文件之前的包含文件, 这对于源代码中某处的整体修改特别有 用,如定义某个新符号等。

? Defined symbols 文本框用于指定原本应在源程序文件中定义的符号,直接在文本框内输入希望定义的 符号即可,该选项的作用与在源程序文件开始处使用#define 语句相同。 默认状态下编译器不生成预处理器输出文件,若希望生成预处理器输出文件可以选择 Preprocessor output to file 复选框,同时可通过其下面的 preserve comments 复选框和 generate #line directives 复选框,决定 是否在生成的预处理器输出文件中保留注释或产生行号。

图 5.11 编译器选项配置中的 Preprocessor 选项卡

图 5.12 编译器选项配置中的 Diagnostics 选项卡 图 5.12 所示为编译器选项配置中的 Diagnostics 选项卡,用于规定诊断信息的分类和显示。编译过程中可 能产生三种错误诊断信息:remark(注意)、waining(警告)和 error(错误)。remark 是一种次要的诊断信息, 表明按源程序结构生成的代码可能出现不正常。warning 表示源程序中存在错误,但编译过程不会停止。 error 表示源程序中存在违反 C/C++语言规则的现象,将导致无法生成目标代码。error 信息不能被禁止, 也不能重新分类。Diagnostics 选项卡中各项的含义及用法如下: ? 编译器在默认状态不产生 remark 诊断信息,若选择 Enable remarks 复选框则允许编译器产生 remark 诊断信息。 ? Suppress these diagnostics 文本框用于设定禁止输出诊断信息的标签记号,例如希望禁止 waining 信 息 Pe117 和 Pe177,直接在文本框内输入“Pe117,Pe177”即可。 ? Treat these as remarks 文本框用于将一些诊断信息作为 remark 处理, 例如希望将 waining 信息 Pe177 作为 remark 处理,直接在文本框内输入“Pe177”即可。 ? Treat these as wainings 文本框用于将一些诊断信息作为 waining 处理, 例如希望将 remark 信息 Pe826 作为 waining 处理,直接在文本框内输入 Pe826 即可。 ? Treat these as errors 文本框用于将一些诊断信息作为 error 处理,例如希望将 waining 信息 Pe117 作 为 error 处理,直接在文本框内输入 Pe117 即可。 ? 若选中 Treat all warnings as errors 复选框,编译器将所有 waining 都作为 error 处理。

图 5.13 编译器选项配置中的 Extra Options 选项卡

IAR C/C++编译器的大多数命令都可以通过前面介绍的配置选项卡直接设置,还有一些命令则需要通过如 图 5.13 所示的 Extra Options 选项卡进行设置。先在选项卡中选择 Use command line options 复选框,然 后直接在下面文本框内逐行输入命令选项。 命令选项可以使用短名或长名,某些选项同时使用短名和长名。短名选项由 1 个短划线开始,后面跟一个 单字符组成, 如-e、 等。 -z 长名选项由 2 个短划线开始, 后面跟单个字符或多个字符组成, 如--char_is_signed。 命令选项还可以带有参数,如-z3、--diagnostics_tables=文件名 等。 表 5-1 列出了需要通过如图 5.13 所示 Extra Options 选项卡进行设置的 IAR C/C++编译器命令选项。 表 5-1 需要通过 Extra Options 选项卡进行设置的 IAR C/C++编译器命令选项 命令选项 语法 说明 指定调用协议。可用参数如下 CPU 寄存器。 vfp 函数调用时将使用 参数所生成的代码与 --aeabi --aeabi 生成遵从 AEABI

std 函数调用时的浮点参数及返回值将使 --aapcs --aapcs={std|vfp}

生成一个输出文件,其中列出了编译过程 --dependencies --dependencies[=[i|m]] {文件名|目录} 打开的头文件。可用参数如下: i m --diagnostics_tables --enum_is_int --diagnostics_tables {文件名|目录} --enum_is_int 仅列出文件名。 以 makefile 风格列出文件名。

在指定文件中列出所有可能的诊断信息。 能与其它命令一起使用。

该命令强制所有枚举类型至少为 4 字节。 参数如下:

规定在停止编译之前允许的 error 数量。 --error_limit --error_limit=n

n

停止编译之前允许的 error 数量,0 为

限制,默认值为 100。 -f -f 文件名 文件的扩展名为".xcl” 置,以及该位置处的整个包含堆栈信息 与--aeabi 命令一起使用

使编译器从指定文件中读取命令选项,指

为每条诊断信息列出发生问题的源程序位 --header_context --header_context

--legacy

--legacy={RVCT3.0}

生成可用于 RVCT3.0.链接器的目标代码

删除由--aeabi 命令导致编译器生成的为 --no_guard_calls --no_guard_calls AEABI 协议,则不能使用该命令 --no_path_in_file_macros --no_typedefs_in_diagnostics --no_unaligned_access --no_warnings --no_wrap_diagnostics -o --output --only_stdout --predef_macros --no_path_in_file_macros --no_typedefs_in_diagnostics --no_unaligned_access --no_warnings --no_wrap_diagnostics -o {文件名|目录} --output {文件名|目录} --only_stdout --predef_macros {文件名|目录} 号生成的返回值中不包含路径信息

静态变量不被初始化的额外库调用。 若要

在__FILE__及__BASE_FILE__预处理器

该命令禁止在诊断信息中使用 typedef 名

该命令使编译器避免对数据的非对齐访问 (unaligned accesses) 禁止生成 warning 信息 禁止诊断信息自动换行 扩展名 编译器仅采用标准输出流(stdout) 在指定的文件或目录中列出预定义符号 用。可用参数如下: --public_equ --public_equ symbol[=value] symbol 希望定义的汇编符号。 value 汇编符号的定义值。

指定输出代码文件名。默认为源文件名+

该命令与汇编语言中的 EQU 等效,可多

该命令使变量群中的初始化与非初始化变 --separate_cluster_for_initialized_variables --separate_cluster_for_initialized_variables 分开 --silent --silent 绍和统计信息 退出代码

编译器工作时不向标准输出流(屏幕)发送

--warnings_affect_exit_code

--warnings_affect_exit_code

该命令将使得 warnings 也会产生 non-z



相关文章:
IAR软件如何新建工程及配置下载口教程
IAR软件如何新建工程及配置下载口教程 - 一 工程的建立 (1) 选择主菜单的 File >New>Workspace 命令,然后开启一个空 白工作区窗口 (2) 选择主菜单 Proje...
stm8的选项字节设定
但是不知道在 IAR 环境下怎么操作 I 有 2 种方法,第一种可以用代码来设置,...(FLASH_MEMTYPE_DATA);/*要对选项字节写操作,必须要先解锁 FLASH*/ while(!...
iar for msp430 安装调试说明
iar for msp430 安装调试说明 - 1、 安装 IAR 运行安装程序,等待输入序列号的提示。 运行注册码生成软件出现如下窗口,在 product 选项中选择”Embedded Wo...
STM8在IAR环境下的C语言开发
STM8在IAR环境下的C语言开发 - STM8 单片机在 IAR 环境下的 C 语言开发 1、头文件搜索路径设置 在工程管理窗口按右键,选择 option,打开选项设置窗口如下 选择...
更多相关标签: