现在的位置: 首页 > 综合 > 正文

IAR环境中实现数据或函数的定位

2014年01月23日 ⁄ 综合 ⁄ 共 954字 ⁄ 字号 评论关闭

定位方法如下三种

1、__no_init char alpha @ 0x0200;

2、#pragma location=0x0202
const int beta;

3、const int gamma @ 0x0204 = 3;

或;

1、__no_init int alpha @ "MYSEGMENT"; //MYSEGMENT段可在XCL中开辟

2、#pragma location="MYSEGMENT"
const int beta;

3、const int gamma @ "MYSEGMENT" = 3;

函数定位如下面两种写法
1、
void g(void) @ "MYSEGMENT" //MYSEGMENT段可在XCL中开辟
{
}

2、
#pragma location="MYSEGMENT"
void h(void)
{
}

更改XCL文件

注意:在实现过程中可能涉及到.XCL连接文件的更改,请保存好原来的.XCL文件!

1.打开相应的*c.xcl文件,用"-Z(CONST)段名=程序定位的目标段-FFDF"定义段的起始地址.
2.在自己的C程序中用#pragma constseg(段名)定位自己的程序
3.结束后恢复编译器的默认定位#pragma default

IAR 1.26b环境下:
1、将常量数组放在FLASH段自定议的MYSEG段中

原来的MSP430F149 XCL文件如下:

// Constant data

-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=1100-FFDF

如果想从中分出一部分做数据存储区,做如下修改:

-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=1500-FFDF //将1100-14FF从ROM中分出存储arry数

-Z(CONST)MYSEG=1100-14FF
区间大小可自行决定

在程序中描写如下即可:
#pragma memory = constseg(MYSEG) //在.XCL文件中修改
char arry[]={1,2,3,4,5,6,7};
#pragma memory = default

2、将变量放入所命名的段

在XCL文件中开辟一段MYSEG段,如上所述
#pragma memory = dataseg(MYSEG)
char i;
char j;
int k;
#pragma memory = default

抱歉!评论已关闭.