ARM IAR如何生成hex.docx

上传人:b****5 文档编号:7670255 上传时间:2023-01-25 格式:DOCX 页数:13 大小:733.29KB
下载 相关 举报
ARM IAR如何生成hex.docx_第1页
第1页 / 共13页
ARM IAR如何生成hex.docx_第2页
第2页 / 共13页
ARM IAR如何生成hex.docx_第3页
第3页 / 共13页
ARM IAR如何生成hex.docx_第4页
第4页 / 共13页
ARM IAR如何生成hex.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

ARM IAR如何生成hex.docx

《ARM IAR如何生成hex.docx》由会员分享,可在线阅读,更多相关《ARM IAR如何生成hex.docx(13页珍藏版)》请在冰豆网上搜索。

ARM IAR如何生成hex.docx

ARMIAR如何生成hex

IAREWARM5.20学习笔记(基于LPC2132)---从零起步

--在proteus中仿真运行

(幻磁帝国原创)

一:

创建一个最简洁的工程模板

目的:

IARMEWARM5.20编程入门,学会怎么用EWARM5.20版来创建自己的工程。

1.1新建一个空的工程文件夹,这里起名为MyEWARMstartup

1.2新建EWARM工程

创建一个空的EWARM工程:

点击OK,选择刚才新建的文件夹,工程取名为MyEWARMsartatup,保存。

这样一个空的新的工程文件就建好了。

1.3拷贝IAREWARM安装目录下例程中的启动文件

本例用的是LPC2132,顾找到软件安装目录下的LPC213x的例程

进去找到config文件夹,这个文件夹中装的就是LPC2132的启动文件

可以看到这个文件加下面有四个文件Flash.icfFlash.macRAM.icf和ram.mac。

暂且不用理会这几个文件的具体内容,只要知道它是启动文件就可以了。

拷贝config文件夹,复制到先前建立的工程文件夹MyEWARMstartup中。

到此,准备工作基本完成。

1.4工程设置

右键点击workspace中的工程名,选择Options,对工程进行相关设置。

再Generraloptions中选择具体的ARM型号,这里选择LPC2132

第二个要设置的选项是OutputConverter,即输出文件的设置,这里设置如下,生成hex文件,文件的目录可以直接加到hex文件名前面的。

如:

D:

\MyEWARMsartatup.hex

接下来就是至关重要的启动代码的链接设置了,打开Linker选项如下,congfig选项卡中默认是没有勾选Overridedefault的。

这时候就要用到先前我们拷贝的config文件夹中的东东了,也就是启动文件了。

勾选Overridedefault,点击后面的选择链接,

将路径选择到:

C:

\DocumentsandSettings\Administrator\桌面\MyEWARMstartup\config\RAM.icf如果想在Flash中运行就选择FLASH.icf

最后一个设置:

本人是在proteus中仿真调试的,所以这里选择的是simulator方式,启动后运行到main函数。

点击OK完成设置。

1.5创建自己的main.c文件

然后将文件添加到工程当中(在MyEWARMstartup-Debug处点击右键--Add—Add“main.c”)

点mack,OK,没有错误,大功告成!

OK,在proteus中仿真运行,你就会看到你的劳动成果了—一个闪烁的LED!

呵呵简单吧!

赶快自己动手试试吧。

如果需要下载到目标板中,则将1.4中的Linker中的连接选择到FLASH.icf(或者修改RAM.icf的起始终止地址也可以)。

否则用Isp下载时会出现如下错误:

IAREWARMv5.20下从零开始创建工程(总结+探索)

下面开始对IAREmbeddedWrokbenchv5.20进行设置,打开Project>Options选项,开始设置:

下载(17.79KB)

2008-11-2317:

03

设置目标板类型:

 

设置C/C++编译器:

特别需要注意,在“Additonalincludedirectories:

”一项里,要填写头文件的路径,“$PROJ_DIR$\..\APPLICATION”表示头文件存放在当前工程文件上一级目录的APPLICATION文件夹下,另外一个同理。

如果使用ISP方式,需要.HEX文件,在IAR520下,非常容易获得.HEX文件,设置如下:

设置Linker:

就是前面提到的stm32f10x_flash.icf文件,注意,当整个文件夹路径发生变化时,需要重新设定stm32f10x_flash.icf,否则,LED.HEX文件将无法下载到豆皮开发板上。

Make

然后大家就会在C:

\STM32_Demo\LED\EWARM\Debug\Exe目录下看到LED.hex文件了,至此,LED跑马灯工程就算告一段落了,(*^__^*)。

将LED.hex文件用ISP方式下载到STM32F103VB6的Flash里面就程序就可以跑起来了。

ISP的具体设置请参考帖子《豆皮-STM32开发板入门教程(十二)-STM32ISP下载(原创)》帖子出处

 

"Code in Hex file exceeds Flash Limitation!

"问题的解决

我使用周立功公司的EasyARM开发试验板,芯片是lpc2114,有128kb的flash,但是当要使用LPC210xFlashISPUtility下载只有4K代码的程序时,却出现“codeinhexfileexceedsflashlimitations”错误。

  因为平常使用ADS调试都是用的DebugInARM设置,所以在用LPC210xFlashISPUtility下载程序时也是使用这个设置。

上网查资料,找到了解决的办法:

inRAM里调试并生成。

生成的Hex文件不对,请注意在DebuginRAM里调试并生成的文件他将从40000000开始,这样软件当然会提示“codeinhexfileexceedsflashlimitations”。

 所以我的解决办法是先使用DebugInFLASH设置,然后再用LPC210xFlashISPUtility下载时即可成功!

 

ARM初体验—搞出来从片内RAM或片外flash启动了

(来自网络)

板子的硬件调试通过后,用了一周的时间才把一个简单的LED测试程序分别在片内RAM和片外flash调试通过,中间那个叫痛苦啊,首先记住一个教训:

以后开发一种新的CPU,一定要在原理设计阶段就开始考虑程序设计,考虑玩玩开发板,熟悉新的开发软件,不至于到硬件调试完后匆忙上阵,前面对CPU的认识又忘记的差不多了。

另外软件不一定用最新的,这次用IAR5.20,结果跟4.X有很多不一样的地方,与别人交流都很困难。

这次吃了大亏,年前这个程序不知道能不能完成,这可关系俺的饭碗啊。

ARM:

AT91SAM9260开发环境:

IAR5.20+H-JTAG(H-Flash)+wiggler

主程序就是一个简单的点亮LED测试程序就不说了,关键是IAR的设置方面:

首先是在片内RAM调试,关键在于IAR5.20的链接配置文件.icf文件(对应IAR4.X的XCL文件),开始时根据ATMEL的库文件Sdram.icf修改了一个icf文件,怎么都不行,IAR5.20的icf格式又与4.X的XCL格式有很大的不同,没办法就死啃IAR的帮助文件,EWARM_DevelopmentGuide.ENU.pdf,这个文档的73页有一个ICF的范例,ASimpleExampleofAConfigurationFile,自己照葫芦画瓢写了一个简单的ICF文件,写多了,逐渐发现其中的猫腻了,这个文件无非包括三个内容:

定义存储区域;初始化堆栈;放置代码和数据。

定义存储区域就是声明你的硬件系统上的ROM和RAM地址范围,初始化堆栈就是定义堆栈大小并将其放到一个特定区域,放置代码和数据一般就是将readonly就是代码放置到ROM或FLASH,将readwrite就是数据变量啥的放置到RAM,并且将中断向量放置到ROM或FLASH的起始位置。

这个文件很熟了以后,万里长征就走了一大步了,片内RAM调试的话,就直接在ICF文件中将片内ROM的地址和片内RAM的地址都指向片内RAM的地址就可以了。

就是这样子:

9260的片内RAM起始地址为0x200000,片内ROM实际地址为0x100000,再此将其指向片内RAM。

definesymbol__ICFEDIT_region_ROM_start__=0x200000;

definesymbol__ICFEDIT_region_ROM_end__  =0x207FFF;

definesymbol__ICFEDIT_region_RAM_start__=0x200000;

definesymbol__ICFEDIT_region_RAM_end__  =0x200FFF;

然后就是片外norflash启动,首先直接将BMS引脚接地,H-JTAG和banyan都是找不到芯片的,正确的做法是,将BMS接高,片内启动,将IAR生成的Binary文件烧进flash然后在BMS接地,程序从norflash启动。

说到烧flash自然想起H-JTAG的小弟H-FLASH,可是这个H-FLASH不是那么好用的,用过的都知道,里面要用到一个初始化脚本,开始我不懂这个东东是干啥用的,随便下载了一个脚本就用上了,其实这个初始化脚本与前面说到的icf文件一样都是与自己的硬件系统息息相关的,这个初始化脚本重要的有两处:

制定合法的RAM和片外flash地址和初始化片外存储器。

为什么要合法的RAM地址,因为H-JTAG的下载机制是先将一个程序A下载到RAM,然后这个程序A再将你真正要下载的程序B下载到flash。

所以要一个合法的RAM地址,片内RAM足够了,不知道为啥我的片外RAM就不行(后面也初始化了)?

flash地址一定是真正的地址,比如说0x10000000。

另外就是初始化你的片外flash,不初始化,照样找不到。

同样此时,在IAR的icf文件中,你要声明你的片外flash地址。

并将中断向量存放到片外flasha起始地址。

至于MAC文件,这里只要的作用好像与H-flash的初始化脚本重复了,都是初始化片外存储器的作用,好像不要也可以,具体还没有试。

这样就可以在IAR中编译生成Binary文件然后在BMS接高的情况下,下载到片外flash中,然后断电,将BMS接地,程序将从norflash启动运行。

接下来就是试验Remap到RAM,好像有点难,一直没能成功,先不搞了,先把我的应用程序写出来,马上过年了,我可不想年前就失业。

前面的过程,我自己搞了好久,一度很郁闷,但最后还是走出来了,也请教了很多朋友,有公司的同事SYD,ouravr的bozai,小马哈等网友,向他们表示感谢。

也希望陷在ARM魅力下的朋友能够越学越好。

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

当前位置:首页 > 职业教育 > 其它

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

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