IAR EWARM软件软件配置.docx

上传人:b****6 文档编号:7529452 上传时间:2023-01-24 格式:DOCX 页数:10 大小:206.85KB
下载 相关 举报
IAR EWARM软件软件配置.docx_第1页
第1页 / 共10页
IAR EWARM软件软件配置.docx_第2页
第2页 / 共10页
IAR EWARM软件软件配置.docx_第3页
第3页 / 共10页
IAR EWARM软件软件配置.docx_第4页
第4页 / 共10页
IAR EWARM软件软件配置.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

IAR EWARM软件软件配置.docx

《IAR EWARM软件软件配置.docx》由会员分享,可在线阅读,更多相关《IAR EWARM软件软件配置.docx(10页珍藏版)》请在冰豆网上搜索。

IAR EWARM软件软件配置.docx

IAREWARM软件软件配置

IAREWARM软件软件配置

编译链接

1.问:

同一Workspace下的多个Project之间有无关系?

 

  答:

没有。

在同一Workspace下可以放置多个Project,但每个Project都是独立被Build的,在编译链接的时候没有相互影响。

2.问:

如何生成其它格式的输出文件?

 

  答:

IAREW的链接器(IXLINK)缺省情况下输出的文件格式是ELF/DWARF,这种格式与其他的支持ELF/DWARF的开发工具兼容。

如果同时还想得到其它格式的输出文件(Motorola,Intelextended,binary,simple),可以通过OutputConverter进行设置:

3.问:

如何生成LinkerList文件?

 

   答:

Option->Category->Linker下,选中GenerateLinkermapfile选项。

4.问:

如何处理多字节字符?

 

  答:

在配置窗口中Option->Category->C/C++Compiler下,选中“Enablemultibytesupport”,允许目标程序使用与主机相一致的多字节编码:

5.问:

如何在编译生成的目标文件中包含调试信息?

 

  答:

如果在调试时只能看见反汇编代码,而看不到C/C++或汇编源代码,可能是因为在编译时未包含调试信息。

6.问:

如何添加头文件的搜索路径?

 

  答:

$PROJ_DIR$ 工程文件所在的目录,$TOOLKIT_DIR$IAREW软件安装到的目录。

7.问:

如何平衡速度优化和尺寸优化?

 

  答:

使用编译器优化选项可以设置整个项目的优化级别(例如:

minimalcode)。

也可以为不同的文件或者文件组设置优化级别(例如:

对time-critical的代码设置优化级别为maximumspeed)。

使用“#pragmaoptimize”指令可以为特定的函数设置优化级别。

请参考EWARM_DevelopmentGuide.pdf。

8.问:

如何定义inline函数?

 

  答:

inline函数传统上只有C++支持,但IAREW也支持在C代码中使用inline。

#pragmainline  建议编译器对紧随其后的函数进行inline处理#pragmainline=forced 强制编译器对紧随其后的函数进行inline处理。

9.问:

如何使一部份代码在RAM中运行?

 

  答:

对于绝大多数单片机,包括单片ARM,由于片内RAM容量有限,一般不足以运行整个程序,因此缺省情况下EW把代码段放在Flash中,并自动复制数据段到RAM。

鉴于某些代码必须在RAM中运行(例如烧写Flash的例程),因此EW提供了关键字__ramfunc。

使用关键字__ramfunc定义的函数,将存放在Flash中,但在系统启动阶段被自动复制到RAM中运行:

 __ramfuncvoidWriteToFlash(void)

{

......

}

该复制过程是系统Run-TimeLibrary的一部份。

调试仿真下载

1.问:

Flash中没有代码时,如何初始化RAM?

答:

如果Flash中已经有代码,则在上电的瞬间,这些代码可以完成必要的硬件初始化(PLL/Clock/MemoryController/…),然后C-SPY通过JTAG接口将程序(应用程序或FlashLoader)下载到RAM。

如果Flash中没有任何代码,则上电之后所有硬件寄存器都保持Reset之后的缺省值。

对于某些板子,有可能在这种情况下RAM无法正常访问,因此也就下载不了任何程序。

EWARM通过宏文件(macrofile)解决这个问题。

a. 创建扩展名为*.mac的文本文件;

b. 在该文件中定义宏函数execUserPreload(针对应用程序)或execUserFlashInit(针对FlashLoader);

c. 在上述宏函数中,调用系统宏__readMemory32和__writeMemory32,进行所有必要的寄存器初始化;

例:

execUserPreload()

{

 __reg_value=__readMemory32(0xFFFFFC00,“Memory”);

 __reg_value=__reg_value+0x100;

__writeMemory32(__reg_value,0xFFFFFC00,"Memory");

}

d. 在配置工程时指定该宏文件的路径:

C-SPY在下载程序之前,将调用宏函数execUserPreload或execUserFlashInit进行硬件初始化,从而保证在下载程序时系统运行在正常的时钟频率下,且RAM可以正确读写。

请参考IAREmbeddedWorkbenchUserGuide。

2.问:

如何在Flash中调试代码?

答:

选择正确的ARM处理器型号(以便EWARM可以自动选择缺省的FlashLoader。

若使用自行开发的FlashLoader,可略去此步骤);

在LinkerCommandFile中,把代码段和数据段的地址指向Flash空间;

在Debugger->Download页面中,使用缺省的flashloader(s);

启动C-SPY,代码将被自动下载到Flash中,并可以开始调试。

若使用自行开发的FlashLoader,可在Edit对话框中指定其路径和参数:

3.问:

如何在RAM中调试代码?

答:

在LinkerCommandFile中,把所有段的地址都指向RAM空间;

在Debugger?

Download页面中,不能选Useflashloader(s)。

4.问:

如何开发自己的FlashLoader?

答:

FlashLoader是EWARM提供的一种机制,能够在C-SPY启动的时候自动将代码下载到Flash。

目前EWARM自带的FlashLoader以支持各款ARM处理器内置的Flash为主。

对于外部Flash,因为情况过于灵活,所以没有直接支持。

用户可以通过自行定制一个FlashLoader来烧写外部Flash。

FlashLoader本质上是一段可以独立运行的代码,它由C-SPY装载到RAM并启动运行,通过JTAG接口读入要下载的程序,并将其烧写到Flash中。

FlashLoader本身也是用普通的EWARMProject来开发的。

FlashLoader大致可分为两部份,一是与Flash类型无关的FlashLoaderFramework,二是与Flash类型有关的FlashLoaderDrivers。

用户在定制时只需修改第二部份。

FlashLoaderFramework的源代码:

IARSystems\EmbeddedWorkbench5.0\arm\src\flashloader\framework

FlashLoaderDrivers的源代码,可以任选一个现有的例子作为模版:

IARSystems\EmbeddedWorkbench5.0\arm\src\flashloader\......

参考文档:

IARSystems\EmbeddedWorkbench5.0\arm\doc\FlashLoaderGuide.pdf

5.问:

C-SPY如何下载代码?

答:

缺省情况下,C-SPY会自动把代码下载到RAM;

选择Useflashloader(s),并添加缺省的flashloader(根据处理器型号),代码被自动下载到Flash;

如果想调试此前Flash中已有的代码,请选择Suppressdownload(以免C-SPY试图把代码下载到RAM),此时C-SPY将只装入调试信息,不下载代码。

 

无论选择何种下载模式,都必须与LinkerCommandFile中所指定的各段地址相吻合。

6.问:

ROM/Flash调试时的断点设置?

答:

在ROM/Flash里调试代码时只能使用两个硬件断点;这是ARM处理器中硬件调试资源(EmbeddedICE-RT)的限制。

因此,必须时刻注意断点的占用量。

另外,以下操作本身可能也会消耗一个硬件断点:

a.在Debugger->Setup选项里,"Runto"

b.在Debugger->Plugins选项里,"Stack"

c.在Linker->Output选项里,"Withruntimecontrolmodules"

一般来说,在ROM/Flash里调试代码时,不要在未启动C-SPY之前就设置断点;调试结束后应当先清除所有断点再退出C-SPY,以免下次启动C-SPY时报错:

“没有足够可用的断点”。

汇编和C/C++相关

1.问:

如何使用intrinsic函数?

答:

需要包含系统头文件:

#include

已定义的本征函数:

EWARM_DevelopmentGuide.pdf:

Part2.Referenceinformation->Intrinsicfunctions

Intrinsicfunction与Inlineassembler相比有何好处:

 a. 方便,象调用普通C函数一样使用常见的汇编指令

 b.不会影响编译器优化操作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1