IAR切BANK--命令连接器文件xcl格式说明

IAREWARM中段后缀含义

后缀

段类型

含义

AC

CONST

绝对地址定位常数

AN

DATA

用关键字__no_init声明的绝对地址定位数据

C

CONST

常数

I

DATA

初始化值为非0的数据

ID

CONST

上述数据的初始式

N

DATA

未初始化的数据

Z

DATA

初始化值为0的数据


ROM用于保存CONST和CODE段,而RAM用于保存DATAS段。

CODE段类型:ROM 中的执行代码

CONST段类型:ROM中的数据

DATA段类型:RAM 中的数据

 

常用的段说明:

段名

功 能说 明

段类型

属性

INTVEC

保存Reset 和异常向量,含跳转到cstartup 或中断服务程序的指令。必须在0x00-0x3F 地址范围内

CODE

只读

ICODE

保存启动代码,位于能被INTVEC 中的转移指令达到的前32MB 字节内。

CODE

只读

DIFUNCT

包含指向C++建构模块的指针。该模块在调用main 之前由cstartup 执行。

CODE

只读

SWITAB

保存软件中断向量表

CODE

只读

CODE

保存程序代码,可以在ROM 中执行。

CODE

只读

CODE_ID

永久性保存声明为_ramfunc 的程序代码。这些代码初始化时从CODE_ID拷贝到CODE_I 中(RAM),然后在RAM 中执行。

CONST

只读

INITTAB

保存需要在启动时初始化的段地址和段长度表格。

CONST

只读

DATA_ID

保存DATA_I 段中变量的初值,这些值在系统初始化时由cstartup 从DATA_ID 拷贝到DATA_I。

CONST

只读

DATA_C

保存常数数据,包括文字字符串

CONST

只读

CHECKSUM

保存段的校验和

CONST

只读

CODE_I

上电后保存声明为_ramfunc的程序代码,掉电后丢失。初始化时从CODE_ID(ROM)拷贝到CODE_I中,然后在RAM中执行。

DATA

读/写

DATA_I

 

保存声明为非零初值的静态全局变量,其初值开始在DATA_ID中,系统初始化时由cstartup从DATA_ID 拷贝到DATA_I。

DATA

读/写

DATA_Z

保存声明初值为零或没有声明初值的静态全局变量

DATA

读/写

DATA_N

保存非易失存储器中,用_no_init 关键字声明的静态全局变量

DATA

读/写

CSTACK

C/C++内部数据堆栈(用户模式)

DATA

读/写

SVC_STACK

操作系统堆栈(管理模式,用于具有特权的操作系统任务)

DATA

读/写

ABT_STACK

数据访问中止模式堆栈(用于虚拟存储器及存储器保护)

DATA

读/写

UND_STACK

未定义指令中止模式堆栈(支持硬件协处理器软件仿真)

DATA

读/写

FIQ_STACK

快中断模式堆栈(用于高速数据传输或通道处理)

DATA

读/写

IRQ_STACK

中断模式堆栈(用于通用中断处理)

DATA

读/写

HEAP

堆(Heap)是C\C++中为malloc 和 free 或new 和delete 保留的动态分配存储空间。

DATA

读/写

 

IAR EWARM中段定位参数

参数

含义

c

CPU类型

D

定义文件后面要使用的参数,例如说明始末地址或段大小

Z

以连续方式定位段

P

以压缩方式定位段

Q

自动完成段初始化复制



-D 

-Dsymbol=value

作用:

使用-D选项可以定义一些纯粹的符号,一般用于声明常数。

参数:

symbol是未在其它地方定义过的外部符号,value是symbol所代表的值。例如:

-D_BANK_LEN=0x800

-D_BANK_START=0x1800

-D_BANK_STEP=0x10000

-D_BANK_NUM=0x40

就定义了2个标识了ROM起始和结束地址的符号,这样以后关于ROM地址的配置都可以直接使用这2个符号,使得配置文件的可读性增强。

在//前面必需有空格

/*前面可有可无空格

=前后都不能有空格在

_BANK_STEP紧挨着-D

 

-

-Z[@][(SPLIT-)type]segments[=|#]range[, range]…

作用:

使用-Z命令的目的是规定segments在存储空间中占据的位置和区间。如果链接器发现某个segment没有使用-Z,-b或者-P中的任何一个命令进行定义,则会报错。

参数:

@ 使用@参数,表示为segments分配空间时不考虑任何已经被使用的地址空间。这适用于当某些segments的地址空间需要发生重叠的情形。【可选】

type 参数type规定了segments的存储类型,默认为UNTYPED。表1列举了IAR的ARM C/C++编译器所支持的segments类型。【可选】


segments:参数segments列出了参与链接的一个或多个segment,中间可用逗号分隔。,这些segments在存储空间中的顺序和被列出的先后顺序一致。在segment名后面添加‘+nnnn’,可以让XLINK为该segment所分配的空间增加nnnn字节。

= | #;规定了segments在存储空间中如何分配,其中”=“从指定范围的起始处开始为segments分配空间,而”#“从指定范围的结尾处开始为segments分配空间。如果这两个参数都没有出现,则segments会被分配在当前最后一个有确定链接地址的segment后面;如果当前没有任何segment被链接,则被分配在0地址。

-Z(CODE)MAKECODE_CONST=0xFF0000-0xFF00FF

-Z(XDATA)ECHO_BUF=0xa4400:+0x2000

 

-P

-P(CODE)BT_ON_SEG,BT_ON_CONST,RF_SEG=[_BANK_START:+_BANK_LEN]*_BANK_NUM+_BANK_STEP

用,分割相同的段

 

-Q 

-Qsegment=initializer_segment

作用:

自动设置segment的拷贝初始化。链接器会产生一个新的initializer_segment(如CODE_ID),其内容与segment(如CODE_I)完全一致。相关的符号表和调试信息都会和segment相关联(如CODE_I)。initializer_segment的内容(通常在ROM中)必须在初始化阶段被复制到segment(通常在RAM中)。

 

-c 

-cprocessor

作用:

规定目标处理器的类型。如-carm。

 

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

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

相关文章

ARM系列处理器的分类

1.ARM ARM即以英国ARM(Advanced RISC Machines)公司的内核芯片作为CPU,同时附加其他外围功能的嵌入式开发板,用以评估内核芯片的功能和研发各科技类企业的产品. ARM 微处理器目前包括下面几个系列,以及其它厂商基于 AR…

DBA_Oracle Table Partition表分区概念汇总(概念)

2014-06-20 Created By BaoXinjian 一、摘要 有关表分区的一些维护性操作: 注:分区根据具体情况选择。 表分区有以下优点: 1、数据查询:数据被存储到多个文件上,减少了I/O负载,查询速度提高。 2、数据修剪&…

electron打包vue项目

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 创建项目 点击这里 添加electron-builder 1、在项目目录下运行命令:vue add electron-builder 2、electron-…

Hdu 4293 DP

题意: n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路: 如果已经知道了其中一组的人数~ 就往前找..找在这一组之前与这一组的话不矛盾的最多人数 Ti…

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段可在…

你需要知道的vue2 jsx render函数

通常开发vue我们使用的是模板语法,其实还有和react相同的语法,那就是render函数,同样支持jsx语法。 Vue 的模板实际是编译成了 render 函数。 0 传统的createElement方法 createElement(anchored-heading, {props: {level: 1}}, [createEleme…

|与||的区别

在众多编程语言中,|与||代表了不同的运算。其中|是按位或运算,||是逻辑或运算。从字面意思来理解,|常可以用于具体数值的计算,结果为数值,而||是用来逻辑运算的没结果只有False或者True。例如int a 2; int b 3; int …

CSS/CSS3语法新特性笔记

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

vb 坐标点击

引用 :http://www.vbgood.com/thread-113934-1-1.html 第一步在窗体的通用栏写如下代码:Private Type pointapiX As LongY As LongEnd TypePrivate Declare Function GetCursorPos Lib "user32" (lpPoint As pointapi) As Long第二步在窗体上放…

开始写技术博客

2012年年底掏钱参加的java的培训,13年初找JAVA工作,发现很难找,公司需要的都是有工作经验的,刚刚从培训机构出来的学生不受欢迎,工作很难找,一个月之后打算退而求其次,找了份PHP的工作(那时对ph…

C# winform 自定义皮肤制作

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

Vue 源码解读(10)—— 编译器 之 生成渲染函数

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 前言 这篇文章是 Vue 编译器的最后一部分,前两部分分别是:Vue 源码解读(8)…

蓝牙PROFILE

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

Laravel Session 遇到的坑

这两天遇到了一个很奇怪的问题,更新session ,session的值不变。经过一番追查,终于找到问题,并搞明白了原理。写这篇博客记录下。 框架版本 Laravel 5.4 问题 先来描述下问题,我在我们项目基础的Middleware中&#xff0…

bootstrap 中这段代码 使bundles 失败

bootstrap 中这段代码 使bundles 失败 _:-ms-fullscreen, :root input[type"date"], _:-ms-fullscreen, :root input[type"time"], _:-ms-fullscreen, :root input[type"datetime-local"], _:-ms-fullscreen, :root input[type"month"…

敏捷结果30天之第十二天:效率角色-你是启动者还是完成者

一.学习1.启动者:善于思考新想法,有太多想法还未开始,喜欢启动一些新事物,但是当事物成型之后就会离开去寻找下一个创新点。2.完成者:喜欢通过从头到尾的做完一件完整的事情来获得成就满足感。知道自己属于那种效率角色…

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…

BZOJ 1444: [Jsoi2009]有趣的游戏 [AC自动机 高斯消元]

1444: [Jsoi2009]有趣的游戏 题意:每种字母出现概率\(p_i\),有一些长度len的字符串,求他们出现的概率 套路DP的话,\(f[i][j]\) i个字符走到节点j的概率,建出转移矩阵来矩乘几十次可以认为是无穷个字符,就得…

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…