IAR切BANK--程序中的使用
一、在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--程序中的使用相关推荐
- IAR切BANK--BANK说明
一.为什么要用到BANK? C51单片机的最大寻址范围为2^16=64K,为了突破64K代码的限制,就需要采用C51的切BANK. 二.切BANK的原理 代码地址空间的上半部 ,以重叠BANK0的物理 ...
- C程序中main函数参数调用[个人学习简记]
文章申明见后. main函数提供的含参原型如: int _tmain(int argc, _TCHAR* argv[]) { for(int i=0;i<argc;i++) _tprint ...
- STM8学习笔记---如何在程序中确定寄存器名称
在刚开始写程序的时候,在程序中需要设置寄存器的时候,往往不知道寄存器名称怎么写才是对的,这时候可以通过头文件来查看寄存器是如何调用的.在打开一个IAR工程文件,打开main.c文件,然后再引用的头文件 ...
- 让你提前认识软件开发(14):程序中的算法
第1部分 又一次认识C语言 程序中的算法 [文章摘要] 算法(Algorithm),是程序的灵魂.著名计算机科学家.图灵奖获得者沃思曾提出过一个公式:数据结构+算法=程序. 可见,算法 ...
- 了解微信小程序、掌握微信小程序开发工具的使用、了解小程序的目录以及文件结构、掌握小程序中常用的组件、掌握WXML、WXSS、WXS的基本使用
1 微信小程序介绍以及开发准备 1.1 了解微信小程序 百度百科: 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及&quo ...
- 小程序中所有组件学习
视图容器 view 视图容器 属性名 类型 默认值 说明 最低版本 hover-class String none 指定按下去的样式类.当 hover-class="none" 时 ...
- 《八》微信小程序中的 Page
注册页面: Page(): 用来创建小程序中的一个页面.接受一个 Object 类型参数,其指定页面的初始数据.生命周期函数.事件处理函数等. Object 参数: data:页面第一次渲染使用的初始 ...
- 微信小程序中的tabBar设置
我们先来看一份图,这个设置在官方文档中已经写得很清楚了,我只是做一个总结 注:我写注释是为了方便说明,在小程序中的json文件中是不能用注释的 这个tabBar属于全局属性,因此就在全局配置文件app ...
- C#中Winform程序中如何实现多维表头【不通过第三方报表程序】
问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...
最新文章
- STM8单片机串口驱动的深度解析
- 为什么要用TypeScript - 肉猪 - 博客园
- 你的护城河在哪?老程序员的一些2016感悟
- B - 小希的迷宫 (并查集判断是否存在环)
- django 使用新的虚拟环境
- Netty集成WebSocket实现客户端、服务端长连接
- 基于用户 的协同过滤算法
- 存储基础(SATA、SCSI、RAID、SAN、SAS、FC)
- iOS开发:对于动态库共享缓存(dyld)的了解
- 数据库:试图删除被依赖对象
- 全网最好的子网划分方法与例题解析
- 标签条码打印软件如何创建连续数据变量
- 用devc++表白_「你表白,我宠你」520—实验猿的表白日,小析姐的“宠粉”节
- C语言中extern用法详解
- 将字符串中的大写字母转化为小写字母
- java 双屏_java – 双屏应用程序
- Flutter 如何监听页面在前台还是后台
- 【Mycat】Mycat主从复制,垂直分库
- 台达服务器显示b,台达变频器VFD-B系列故障代码详表
- 五、降维——从SNE到t-SNE再到LargeVis