EFM32在使用IAR开发环境配置ICf文件以及指定程序存储地址空间

原创 2013年12月02日 23:34:50

EFM32在IAR开发环境下指定代码,数据的存储空间

为了便于后续的项目升级,管理,需要对代码,数据的存储空间加以设定,也在网上找下相关的资料,笔者水平有限,

如下内容不一定完全正确,如有错误之后,还望帮忙纠正.首先,有必要了解一下IAR开发环境的ILINK,IAR的版本要

在IAR5.xx以后,本人是在IAR6.21版本之上调试,目前我也将版本更新到6.50了,推荐使用IAR更新版本的.

下载地址:http://pan.baidu.com/share/link?shareid=328871&uk=3842212607

破解补丁下载地址:http://download.csdn.net/detail/fzhiping2435118a/6644531

安装好IAR开发环境之后,我们可以打开IAR的帮助文档,查看关于ILINK的使用说明.打开help的下拉菜单,打开C/C++ Development Guide选项。

第一部分有详细讲述关于ILINK

其实,刚开始我们建立工程的时候也有使用到这个,可能没有引起关注,在Project->Options选项中,我们可以根据

实际MCU的memory和堆栈的大小在这里进行配置.我们打开这个*.icf文件看看具体的内容.*号是通配符,名称可以用

户自定义更改,下面是EFM32TG110F32时使用的ICF文件:EFM32TG110F32.icf这里其实主要定义了ROM,RAM和

堆栈的起始地址,结束地址.

/*###ICF### Section handledby ICF editor, don't touch! ****/

/*-Editor annotation file-*/

/*IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */

/*-Specials-*/

define symbol__ICFEDIT_intvec_start__ = 0x00000000;

/*-Memory Regions-*/

define symbol__ICFEDIT_region_ROM_start__ = 0x00000000;

define symbol__ICFEDIT_region_ROM_end__   =(0x00000000+0x00020000-1);

define symbol__ICFEDIT_region_RAM_start__ = 0x20000000;

define symbol__ICFEDIT_region_RAM_end__   =(0x20000000+0x00004000-1);

/*-Sizes-*/

define symbol__ICFEDIT_size_cstack__ = 0x400;

define symbol__ICFEDIT_size_heap__   = 0x800;

/**** End of ICF editorsection. ###ICF###*/

 

define memory mem with size =4G;

define region ROM_region   = mem:[from__ICFEDIT_region_ROM_start__   to__ICFEDIT_region_ROM_end__];

define region RAM_region   = mem:[from__ICFEDIT_region_RAM_start__   to__ICFEDIT_region_RAM_end__];

 

define block CSTACK    with alignment = 8, size =__ICFEDIT_size_cstack__   { };

define block HEAP      with alignment = 8, size =__ICFEDIT_size_heap__     { };

 

initialize by copy {readwrite };

do not initialize  { section .noinit };

 

keep { section .intvec };

place at addressmem:__ICFEDIT_intvec_start__ { readonly section .intvec };

 

place in ROM_region   { readonly };

place in RAM_region   { readwrite,

                        block CSTACK,

                        block HEAP };

 

我们可以在C程序当中的代码前使用,获取当前代码的位置.

#pragma location = ".xxx"       这里没有结束分号,xxx为自定义的变量.

 

然后就可以在icf文件中加上:

define symbol__ICFEDIT_region_DATRAM_start__ = 0x20000500;

place at addressmem:__ICFEDIT_region_DATRAM_start__ {section .xxx };

 

 

__ICFEDIT_region_DATRAM_start__是符号的名称,用户可自行定义.

这里的地址也需要根据自己的MCU定义.

 

这里需要注意的是:如果是定义的ROM的空间里面,那么ROM里面只能是readonly的属性,因此,

假如一个数组char array[10];那么它必须是char const array[10]; 这样才能正确的指定到具体地址去.

 

例如:

C程序:

#pragma location = ".test"

Char const array[10];

Icf文件:

place in ROM_region   { readonly  .test};/* ROM_region 可以自己定义*/

修改完成之后,我们可以进入DEBUG模式,打开View菜单下的memory选项,查看具体的地址中的内容是否与你需要的内容一致呢。动手看看吧.

相关文章推荐

IAR STM32 函数和变量的绝对地址定位

昨天我突然冒出个想法,能否利用函数和变量的绝对定位,实现程序的模块化更新。   也就是说,如果我要改变某个函数,只需要更新flash里面一个局部,也许只需要更新几百个字节,而无须重新下载整个上百K的...
  • slj_win
  • slj_win
  • 2014年03月19日 10:35
  • 10499

IAR和KEIL中以常量形式存储到ROM或FLASH的指定的位置

【经验分享】KE02在IAR和KEIL中以常量形式初始化EEPROM值 一, 经验分享描述         写这篇经验分享的原因是,之前有一个客户,他希望在KE02的芯片中,不要出现使用EEPROM操...
  • guoggn
  • guoggn
  • 2016年11月09日 10:40
  • 2100

IAR 中 icf 文件详解

EWARM 5.xx的链接器ILINK及其配置文件.icf EWARM 5.xx中的链接器称为ILINK。ILINK可以从ELF/DWARF格式的目标文件中提取代码和数据,并生成可执行映像。在EWA...

菜鸟详解iar的icf文件(链接文件)

一、每个芯片开发商都会针对每款芯片来编写一个.icf文件。对于基本的应用,这个.icf文件足以满足你的工程需要。但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下.icf啦。 1、Icf...

stm32存储器结构、 IAR 开发环境下的.icf 文件、.map文件 解析

新建 IAR环境  STM32工程 ,报错: Error[Lp011]: section placement failed: unable to allocate space for section...

解析IAR的ILINK链接器icf配置文件

一、简单的概括icf的文件,其主要包括以下几个内容,即: (1)可编址的存储空间(memory); (2)不同的存储地址区域(region); (3)不同的地址块(block); (4)section...

IAR中如何定向把数组和函数放在指定的地址单元

应用中我们经常会用到一些应用场景,如使用Const 关键字定义一个数组到Flash地址单元,但是具体该数组放在Flash的那个位置,通常是由编译器自己分配的(和LCF连接配置文件设置有关),以及定义函...

IAR编译环境之:ILINK链接器的.ICF文件编写

【转自】http://blog.sina.com.cn/s/blog_a6f07d7201016swf.html 1.首先说说什么是icf文件(即ILINK链接器的配置文件)的作用,其实在IAR...

IAR 下的ICF文件配置

硬件:STM32F103ZET6 + 512Kbyte 外扩的SRAM  使用原子的内存管理函数给 EMWIN分配内存,分为内部RAM和外部RAM两个内存池 define region RAM_reg...
  • zh9454
  • zh9454
  • 2016年07月22日 15:17
  • 1638

IAR(for EFM32)开发环境配置

  • 2012年03月06日 09:43
  • 233KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EFM32在使用IAR开发环境配置ICf文件以及指定程序存储地址空间
举报原因:
原因补充:

(最多只允许输入30个字)