【MSP430 编译器使用经验】+ IAR 环境下的函数定位加载(分散加载)方法
2015-10-26 12:09
239 查看
以MSP430AFE253为例分享IAR(5.5)环境下的函数定位方法
1、修改XCL配置文件
在IAR的安装目录 Tools\430\config下找到lnk430afe253.xcl文件,将其拷贝到当前工程目录下;
设置项目中链接文件的位置(将默认位置改为修改后lnk430afe253.xcl文件的存放位置),如下图所示:
打开 lnk430afe253.xcl 文件,找到 CODE 字段的定义,在其中添加以下语句:
// 在我的项目中需要将一段代码放置在地址 0xF000 起始位置处,故定义 MYCODE 代码段如下
-P(CODE)MYCODE=F000-F1FF
如下图示:
2、在代码中指定下载位置
共有两种写法可以实现函数的定位:
1)、void fun(void) @ "MYCODE"
{}
2)、
#pragma location = "MYCODE"
void fun(void)
{
}
另外,结束后要回复编译器默认的定位
#pragma location = "CODE"
3、下载后查看FLASH内容
代码示例:
#pragma location = "MYCODE"
void DefaultIO(void)
{
P1DIR = 0xFF;
P1OUT = BIT3;
P2SEL &= ~(BIT6 | BIT7);
P2DIR = 0xFF;
P2OUT = BIT0;
}
#pragma location = "CODE"
下载后memory内容截图:
IAR开发环境中的数据、函数定位方法
一、在IAR的集成开发环境中实现数据变量定位方法如下三种 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;
二、如何实现函数定位
在IAR中函数定位有两种写法
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
1、修改XCL配置文件
在IAR的安装目录 Tools\430\config下找到lnk430afe253.xcl文件,将其拷贝到当前工程目录下;
设置项目中链接文件的位置(将默认位置改为修改后lnk430afe253.xcl文件的存放位置),如下图所示:
打开 lnk430afe253.xcl 文件,找到 CODE 字段的定义,在其中添加以下语句:
// 在我的项目中需要将一段代码放置在地址 0xF000 起始位置处,故定义 MYCODE 代码段如下
-P(CODE)MYCODE=F000-F1FF
如下图示:
2、在代码中指定下载位置
共有两种写法可以实现函数的定位:
1)、void fun(void) @ "MYCODE"
{}
2)、
#pragma location = "MYCODE"
void fun(void)
{
}
另外,结束后要回复编译器默认的定位
#pragma location = "CODE"
3、下载后查看FLASH内容
代码示例:
#pragma location = "MYCODE"
void DefaultIO(void)
{
P1DIR = 0xFF;
P1OUT = BIT3;
P2SEL &= ~(BIT6 | BIT7);
P2DIR = 0xFF;
P2OUT = BIT0;
}
#pragma location = "CODE"
下载后memory内容截图:
IAR开发环境中的数据、函数定位方法
一、在IAR的集成开发环境中实现数据变量定位方法如下三种 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;
二、如何实现函数定位
在IAR中函数定位有两种写法
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
相关文章推荐
- TEMP_FAILURE_RETRY,__extension,MSG_NOSIGNAL
- 观察者设计模式
- Cryengine 3新的全局光照算法简介
- SLAM: 基于运动和视觉里程方法的实时三维构建:Map-Management/坐标系转换
- 如何把sqlserver数据迁移到mysql数据库及需要注意事项
- Unity 5 中的全局光照技术详解
- sql查询含有关键字的坑
- Python点点滴滴积累---getopt使用(详解)
- 为HTML添加图片登录按钮
- CAS的配置,登录界面的更改以及数据库的连接--Java(Eclipse,非Maven)
- PHP于DIRECTORY_SEPARATOR任务
- 读书笔记cocos2d-x之概念介绍
- mysql更新查新乱码问题
- 关于Spring的RowMapper
- Spring自定义标签的原理
- 软件性能测试的基本概念和计算公式
- 移动互联网的架构设计浅谈一
- 文件流
- 使用openssl创建自签名证书及部署到IIS教程
- jQuery中的HTML操作