一、在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段中

原来的MSP430F149XCL文件如下:

// 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

#pragma constseg="TASK_BT_SEG_CONST"

IAR_CONST char str_show_taskbt[] = "task_bt\n";//常量字符串

#pragma constseg=default

#pragma dataseg = IXRAM // use external RAM

__no_init unsigned char teat[10]; // __no_init不能少

#pragma dataseg = default

四、其它说明

代码

Linker已经为每一个bank定义了一个代码空间。对于banked的函数,不需要每次都定义,Linker会自动分配代码空间。

f()和g()将会放在BANK1代码段中,主函数会默认也放在BANK1的代码段中。如果想让主函数放在BANK0中,要使用关键字__near_func

变量

PM0_XDATA定义在linker文件中。这个地址的范围为0xE000到0xEFFF。有必要明确的定义变量存在这个区域。如果变量按照默认的方式,他们将会存在放在F000到0xFD57中。

IAR切BANK--程序中的使用相关推荐

  1. IAR切BANK--BANK说明

    一.为什么要用到BANK? C51单片机的最大寻址范围为2^16=64K,为了突破64K代码的限制,就需要采用C51的切BANK. 二.切BANK的原理 代码地址空间的上半部 ,以重叠BANK0的物理 ...

  2. C程序中main函数参数调用[个人学习简记]

    文章申明见后. main函数提供的含参原型如: int _tmain(int argc, _TCHAR* argv[]) {  for(int i=0;i<argc;i++)   _tprint ...

  3. STM8学习笔记---如何在程序中确定寄存器名称

    在刚开始写程序的时候,在程序中需要设置寄存器的时候,往往不知道寄存器名称怎么写才是对的,这时候可以通过头文件来查看寄存器是如何调用的.在打开一个IAR工程文件,打开main.c文件,然后再引用的头文件 ...

  4. 让你提前认识软件开发(14):程序中的算法

    第1部分 又一次认识C语言 程序中的算法 [文章摘要]         算法(Algorithm),是程序的灵魂.著名计算机科学家.图灵奖获得者沃思曾提出过一个公式:数据结构+算法=程序. 可见,算法 ...

  5. 了解微信小程序、掌握微信小程序开发工具的使用、了解小程序的目录以及文件结构、掌握小程序中常用的组件、掌握WXML、WXSS、WXS的基本使用

    1 微信小程序介绍以及开发准备 1.1 了解微信小程序 百度百科: 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及&quo ...

  6. 小程序中所有组件学习

    视图容器 view 视图容器 属性名 类型 默认值 说明 最低版本 hover-class String none 指定按下去的样式类.当 hover-class="none" 时 ...

  7. 《八》微信小程序中的 Page

    注册页面: Page(): 用来创建小程序中的一个页面.接受一个 Object 类型参数,其指定页面的初始数据.生命周期函数.事件处理函数等. Object 参数: data:页面第一次渲染使用的初始 ...

  8. 微信小程序中的tabBar设置

    我们先来看一份图,这个设置在官方文档中已经写得很清楚了,我只是做一个总结 注:我写注释是为了方便说明,在小程序中的json文件中是不能用注释的 这个tabBar属于全局属性,因此就在全局配置文件app ...

  9. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】

    问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...

最新文章

  1. STM8单片机串口驱动的深度解析
  2. 为什么要用TypeScript - 肉猪 - 博客园
  3. 你的护城河在哪?老程序员的一些2016感悟
  4. B - 小希的迷宫 (并查集判断是否存在环)
  5. django 使用新的虚拟环境
  6. Netty集成WebSocket实现客户端、服务端长连接
  7. 基于用户 的协同过滤算法
  8. 存储基础(SATA、SCSI、RAID、SAN、SAS、FC)
  9. iOS开发:对于动态库共享缓存(dyld)的了解
  10. 数据库:试图删除被依赖对象
  11. 全网最好的子网划分方法与例题解析
  12. 标签条码打印软件如何创建连续数据变量
  13. 用devc++表白_「你表白,我宠你」520—实验猿的表白日,小析姐的“宠粉”节
  14. C语言中extern用法详解
  15. 将字符串中的大写字母转化为小写字母
  16. java 双屏_java – 双屏应用程序
  17. Flutter 如何监听页面在前台还是后台
  18. 【Mycat】Mycat主从复制,垂直分库
  19. 台达服务器显示b,台达变频器VFD-B系列故障代码详表
  20. 五、降维——从SNE到t-SNE再到LargeVis

热门文章

  1. 天津海运[600751]股票
  2. Anton Chuvakin:关于日志管理产品的十个注意事项
  3. 流式数据分析_流式大数据分析
  4. 案例与案例之间的非常规排版
  5. Pytorch高阶API示范——DNN二分类模型
  6. 5888. 网络空闲的时刻
  7. leetcode 148. 排序链表(归并排序)
  8. git push命令_Git Push命令解释
  9. 初级开发人员的缺点_在您作为初级开发人员的第一年获得此建议
  10. knn 机器学习_机器学习:通过预测意大利葡萄酒的品种来观察KNN的工作方式