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中。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401248.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS/CSS3语法新特性笔记

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 CSS层叠样式表 三大特性 层叠性:相同的样式会覆盖 继承性:属性可向下继承 优先级:范…

C# winform 自定义皮肤制作

最近要做个软件正在做技术准备,由于WINFORM生成的窗体很丑陋,一个好的软件除了功能性很重要外,UI的体验也是不容忽视的。习惯性的在网上搜素了下,换肤控件也有好几款,但是有些用起来不是很好用,好点的也要花…

蓝牙PROFILE

Bluetooth的一个很重要特性,就是所有的Bluetooth产品都无须实现全部 的Bluetooth规范。为了更容易的保持Bluetooth设备之间的兼容,Bluetooth规范中定义了Profile。Profile定义了设备如何实现一种连接或者应用,你可以把Profile理解为连接层或者…

netty系列之:EventLoop,EventLoopGroup和netty的默认实现

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 目录* 简介 EventLoopGroup和EventLoopEventLoopGroup在netty中的默认实现EventLoop在netty中的默认实现总结 简介 在net…

Oracle安装部署之RedHat安装Oracle11g_R2

硬件配置 内存 :≥1G 硬盘空间:≥10G 上传oracle11g安装包: putty上用wcw用户登录,通过ftp服务上传oracle安装文件到/home/wcw目录下解压 #unzip linux_11gR2_database_1of2.zip #unzip linux_11gR2_database_2of2.zip 检查和安装…

Fans没信心,回家继续修行

今天在CSDN上看了一篇的文章,感觉自己实在是太菜了,以至于对毕业之后从事IT行业没有了任何信心。现在也不清楚,自己能否在it行业混下去。自己的技术实在是一个水啊。8号就要回家了,兄弟姐妹们如果有事情,请发短信至 15…

基于SqlSugar的数据库访问处理的封装,支持多数据库并使之适应于实际业务开发中

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 在我的各种开发框架中,数据访问有的基于微软企业库,有的基于EFCore的实体框架,两者各有其…

Unity 实现物体破碎效果(转)

感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In this tutorial I will show you how to create a simple shattering ef…

CC254x--OSAL

OSAL运行原理 蓝牙协议栈PROFILE、所有的应用程序、驱动等都是围绕着OSAL组织运行的。OSAL(Operating System Abstraction Layer)操作系统抽象层,它不是一个真正的操作系统(它没有 Context Switch 上下文切换功能)&am…

mysql跨节点join——federated引擎

一、 什么是federated引擎 mysql中的federated类似于oracle中的dblink。 federated是一个专门针对远程数据库的实现,一般情况下在本地数据库中建表会在数据库目录中生成相对应的表定义文件,并同时生成相对应的数据文件。 [图] 但是通过federated引擎创建…

【阅读SpringMVC源码】手把手带你debug验证SpringMVC执行流程

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 ✿ 阅读源码思路: 先跳过非重点,深入每个方法,进入的时候可以把整个可以理一下方法的执…

Zabbix监控(十六):分布式监控-Zabbix Proxy

说明:Zabbix支持分布式监控,利用Proxy代理功能,在其他网络环境中部署代理服务器,将监控数据汇总到Zabbix主服务器,实现多网络的分布式监控,集中监控。1、分布式监控原理Zabbix proxy和Zabbix server一样&am…

CC254x--BLE

BLE协议栈 BLE体系结构,着重了解GAP和GATT。 PHY物理层在2.4GHz的ISM频段中跳频识别。LL连接层:控制设备的状态。设备可能有5中状态:就绪standby,广播advertising,搜索scanning,初始化initiating和连接con…

Azure Container App(一)应用介绍

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 一,引言 容器技术正日益成为打包、部署应用程序的第一选择。Azure 提供了许多使用容器的选项。例如&#xff0…

怎样配置键盘最方便,以及一些设计的思考

使用Emacs的人,如果肯折腾,肯定有重新映射键盘的经历。我原来经常看到的是把Ctrl和Capslock交换,但是我感觉没什么道理,因为Ctrl已经用的很熟练了,换了反而不方便,而且对其他程序影响太大。那么我们就要使用…

profile、服务、特征、属性之间的关系

一个profile有很多的服务,一个服务又有很多的特性,一个特性中又有几种属性条目组成。 profile(数据配置文件) 一个profile文件可以包含一个或者多个服务,一个profile文件包含需要的服务的信息或者为对等设备如何交互的…

机器学习实战 | SKLearn最全应用指南

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 作者:韩信子ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/41 本文地址:http…

Scheme语言入门

2019独角兽企业重金招聘Python工程师标准>>> Scheme语言入门 最早听说 LISP,是 Stallman 的 GNU Emacs 中将 LISP 作为嵌入语言,定制和增强 Emacs。GNU Emacs 是一个文本编辑器,文本就是一种符号,而 Lisp 正好就是针对…

如何将docker 镜像上传到docker hub仓库

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 如何将docker 镜像上传到docker hub仓库 目录* 如何将docker 镜像上传到docker hub仓库 背景 1.注册docker hub账号 2.…