IAR EWARM软件软件配置

上传人:jiups****uk12 文档编号:38434435 上传时间:2018-05-01 格式:DOC 页数:14 大小:245.50KB
返回 下载 相关 举报
IAR EWARM软件软件配置_第1页
第1页 / 共14页
IAR EWARM软件软件配置_第2页
第2页 / 共14页
IAR EWARM软件软件配置_第3页
第3页 / 共14页
IAR EWARM软件软件配置_第4页
第4页 / 共14页
IAR EWARM软件软件配置_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《IAR EWARM软件软件配置》由会员分享,可在线阅读,更多相关《IAR EWARM软件软件配置(14页珍藏版)》请在金锄头文库上搜索。

1、IAR EWARM 软件软件配置软件软件配置编译链接编译链接1.问:同一问:同一 Workspace 下的多个下的多个 Project 之间有无关系?之间有无关系? 答:没有。在同一 Workspace 下可以放置多个 Project,但每个 Project 都是 独立被 Build 的,在编译链接的时候没有相互影响。2.问:如何生成其它格式的输出文件?问:如何生成其它格式的输出文件? 答:IAR EW 的链接器(IXLINK)缺省情况下输出的文件格式是 ELF/DWARF,这种格式与其他的支持 ELF/DWARF 的开发工具兼容。如果同 时还想得到其它格式的输出文件(Motorola, In

2、tel extended,binary, simple),可 以通过 Output Converter 进行设置:3.问:如何生成问:如何生成 Linker List 文件?文件? 答:Option-Category-Linker 下,选中 Generate Linker map file 选项。4.问:如何处理多字节字符?问:如何处理多字节字符? 答:在配置窗口中 Option-Category-C/C+ Compiler 下,选中“Enable multibyte support”,允许目标程序使用与主机相一致的多字节编码:5.问:如何在编译生成的目标文件中包含调试信息?问:如何在编译生成

3、的目标文件中包含调试信息? 答:如果在调试时只能看见反汇编代码,而看不到 C/C+或汇编源代码,可能是因为在 编译时未包含调试信息。6.问:如何添加头文件的搜索路径?问:如何添加头文件的搜索路径? 答:$PROJ_DIR$ 工程文件所在的目录,$TOOLKIT_DIR$ IAR EW 软件安装到的目 录。7.问:如何平衡速度优化和尺寸优化?问:如何平衡速度优化和尺寸优化? 答:使用编译器优化选项可以设置整个项目的优化级别(例如:minimal code)。也可以为不同的文件或者文件组设置优化级别(例如:对 time-critical 的代码设 置优化级别为 maximum speed)。使用“

4、#pragma optimize”指令可以为特定的函 数设置优化级别。请参考 EWARM_DevelopmentGuide.pdf。8.问:如何定义问:如何定义 inline 函数?函数? 答:inline 函数传统上只有 C+支持,但 IAR EW 也支持在 C 代码中使用 inline。#pragma inline 建议编译器对紧随其后的函数进行 inline 处理 #pragma inline=forced 强制编译器对紧随其后的函数进行 inline 处理。9.问:如何使一部份代码在问:如何使一部份代码在 RAM 中运行?中运行? 答:对于绝大多数单片机,包括单片 ARM,由于片内 R

5、AM 容量有限,一般 不足以运行整个程序,因此缺省情况下 EW 把代码段放在 Flash 中,并自动复 制数据段到 RAM。鉴于某些代码必须在 RAM 中运行(例如烧写 Flash 的例程),因此 EW 提供了关键字_ramfunc。使用关键字_ramfunc 定义的函数,将存 放在 Flash 中,但在系统启动阶段被自动复制到 RAM 中运行:_ramfunc void WriteToFlash (void) . 该复制过程是系统 Run-Time Library 的一部份。调试仿真下载调试仿真下载1.问:问:Flash 中没有代码时,如何初始化中没有代码时,如何初始化 RAM?答:如果 F

6、lash 中已经有代码,则在上电的瞬间,这些代码可以完成必要的硬 件初始化(PLL/Clock/Memory Controller/), 然后 C-SPY 通过 JTAG 接口将程 序(应用程序或 Flash Loader)下载到 RAM。 如果 Flash 中没有任何代码,则上电之后所有硬件寄存器都保持 Reset 之后的 缺省值。对于某些板子,有可能在这种情况下 RAM 无法正常访问,因此也就 下载不了任何程序。EWARM 通过宏文件(macro file)解决这个问题。a. 创建扩展名为*.mac 的文本文件; b. 在该文件中定义宏函数 execUserPreload(针对应用程序)或

7、 execUserFlashInit(针对 Flash Loader); c. 在上述宏函数中,调用系统宏_readMemory32 和_writeMemory32, 进行所有必要的寄存器初始化; 例:execUserPreload () _reg_value = _readMemory32 (0xFFFFFC00, “Memory”);_reg_value = _reg_value + 0x100; _writeMemory32 (_reg_value, 0xFFFFFC00, “Memory“); d. 在配置工程时指定该宏文件的路径:C-SPY 在下载程序之前,将调用宏函数 execUs

8、erPreload 或 execUserFlashInit 进行硬件初始化,从而保证在下载程序时系统运行在正常的 时钟频率下,且 RAM 可以正确读写。请参考 IAR Embedded Workbench User Guide。2.问:如何在问:如何在 Flash 中调试代码?中调试代码?答:选择正确的 ARM 处理器型号(以便 EWARM 可以自动选择缺省的 Flash Loader。若使用自行开发的 Flash Loader,可略去此步骤);在 Linker Command File 中,把代码段和数据段的地址指向 Flash 空间;在 Debugger-Download 页面中,使用缺省

9、的 flash loader(s);启动 C-SPY,代码将被自动下载到 Flash 中,并可以开始调试。 若使用自行开发的 Flash Loader,可在 Edit 对话框中指定其路径和参数:3. 问:如何在问:如何在 RAM 中调试代码?中调试代码?答:在 Linker Command File 中,把所有段的地址都指向 RAM 空间;在 Debugger?Download 页面中,不能选 Use flash loader(s)。4.问:如何开发自己的问:如何开发自己的 Flash Loader?答:Flash Loader 是 EWARM 提供的一种机制,能够在 C-SPY 启动的时候自

10、 动将代码下载到 Flash。 目前 EWARM 自带的 Flash Loader 以支持各款 ARM 处理器内置的 Flash 为主。 对于外部 Flash,因为情况过于灵活,所以没有直接支持。用户可以通过自行 定制一个 Flash Loader 来烧写外部 Flash。 Flash Loader 本质上是一段可以独立运行的代码,它由 C-SPY 装载到 RAM 并 启动运行,通过 JTAG 接口读入要下载的程序,并将其烧写到 Flash 中。Flash Loader 本身也是用普通的 EWARM Project 来开发的。 Flash Loader 大致可分为两部份,一是与 Flash 类

11、型无关的 Flash Loader Framework,二是与 Flash 类型有关的 Flash Loader Drivers。用户在定制时只 需修改第二部份。 Flash Loader Framework 的源代码:IAR SystemsEmbedded Workbench 5.0armsrcflashloaderframework Flash Loader Drivers 的源代码,可以任选一个现有的例子作为模版:IAR SystemsEmbedded Workbench 5.0armsrcflashloader. 参考文档:IAR SystemsEmbedded Workbench 5

12、.0armdocFlashLoaderGuide.pdf5.问:问:C-SPY 如何下载代码?如何下载代码?答:缺省情况下,C-SPY 会自动把代码下载到 RAM; 选择 Use flash loader(s),并添加缺省的 flash loader(根据处理器型号),代码 被自动下载到 Flash;如果想调试此前 Flash 中已有的代码,请选择 Suppress download(以免 C- SPY 试图把代码下载到 RAM),此时 C-SPY 将只装入调试信息,不下载代码。无论选择何种下载模式,都必须与 Linker Command File 中所指定的各段地址 相吻合。6.问:问:RO

13、M/Flash 调试时的断点设置?调试时的断点设置?答:在 ROM/Flash 里调试代码时只能使用两个硬件断点;这是 ARM 处理器中 硬件调试资源(EmbeddedICE-RT)的限制。因此,必须时刻注意断点的占用 量。 另外,以下操作本身可能也会消耗一个硬件断点: a. 在 Debugger-Setup 选项里,“Run to“ b. 在 Debugger-Plugins 选项里,“Stack“ c. 在 Linker-Output 选项里,“With runtime control modules“ 一般来说,在 ROM/Flash 里调试代码时,不要在未启动 C-SPY 之前就设置断 点;调试结束后应当先清除所有断点再退出 C-SPY,以免下次启动 C-SPY 时 报错:“没有足够可用的断点”。汇编和汇编和 C/C+相关相关1.问:如何使用 intrinsic 函数?答:需要包含系统头文件:#include 已定义的本征函数:EWARM_DevelopmentGuide.pdf: Part 2. Reference information-Intrinsic functionsIntrinsic function 与 Inline assembler 相比有何好处:a. 方便,象调用普通 C 函数一样使用常见的汇编指令b. 不会影响编译器优化操作

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号