新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式软件开发之: 映像文件存储器映射调整

嵌入式软件开发之: 映像文件存储器映射调整

作者:时间:2013-09-30来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/257027.htm

图13.10显示一个典型的分散载入描述文件的内容和组织结构。

图13.10 典型的分散载入描述文件的内容和组织结构

3.加载域描述

一个加载域具有以下属性:

· 名称:链接程序使用它识别不同的加载域;

· 基址:载入视图中的代码和数据的起始地址;

· 属性:可选;

· 最大尺寸:可选;

· 执行区列表:这些执行区标识执行视图中模块的类型和位置。

图13.11显示了加载域的描述。

BNF语法为:

load_region_description ::=

load_region_name (base_address | (+ offset)) [attribute_list] [ max_size

]

{

execution_region_description+

}

语法说明如下。

① load_region_name为加载域的名称。只有前31个字符有效。该名称仅用于识别每个域。

注意

load_region_name与执行域exec_region_name不同,load_region_name不用于生成Load$$region_
name符号。

② base_address是区中对象的链接地址。base_address必须是一个字对齐数值。

③ +offset描述基址,它从前一个加载域的末尾偏移offset个字节。offset的值必须能被4整除。如果是第一个加载域,则+offset表示该域的基地址是从0之后的offset字节开始。

④ attribute_list指定加载域内容的属性:

· PI:位置独立;

· RELOC:可重定位;

· OVERLAY:重叠;

· ABSOLUTE:绝对地址;

· NOCOMPRESS:代码不被压缩。

可以指定这些属性中的一项(除NOCOMPRESS外,其他4项属性为互斥关系)。默认的加载域属性是ABSOLUTE。具有PI、RELOC或OVERLAY属性之一的加载域可以有重叠的地址范围。对于ABSOLUTE加载域,armlink不允许重叠的地址范围。OVERLAY关键字允许在同一个地址有多个执行区。

注意

ARM在RVCT中不提供重叠机制。要在同一个地址使用多个执行区,必须提供自己的重叠管理程序。

⑤ max_size:它指定加载域的最大尺寸。(如果指定了可选的max_size值,但分配给该区的字节超过max_size字节,armlink将生成错误。)

⑥ execution_region_description:它指定执行区名称、地址和内容。

4.执行域描述符

执行域具有以下一些属性:

·

域名称;

· 执行域基地址(支持绝对地址的或相对地址的);

· 执行域的最大尺寸(可选);

· 指定执行域属性;

· 一个或多个输入段描述(放在本执行区中的模块)。

图13.12显示了一个典型的执行域描述。

执行域描述符中的BNF语法为:

execution_region_description ::=

exec_region_name (base_address | + offset) [attribute_list] [max_size | –

length]

{

input_section_description+

}

其语法说明如下。

① exec_region_name 为执行域命名。(只有前31个字符有效。)

② base_address是域中对象的链接地址。base_address必须是字对齐的。

③ +offset是描述基址,它从前一个执行区的末尾偏移offset个字节。offset的值必须能被4整除。如果前面没有执行区(即,这是载入区中的第一个执行区),则+offset表示基址从它所在的载入区的基址之后offset个字节开始。如果使用+offset格式并且所在的加载域具有RELOC属性,则执行区继承该RELOC属性。但是,如果使用固定的base_address,则随后出现的offset不继承RELOC属性。

④ attribute_list指定执行区内容的属性:

· PI:位置独立。

· OVERLAY:重叠。

· ABSOLUTE:绝对地址。域的执行地址由base_designator指定。

· FIXED:固定地址。执行域的加载地址和执行地址都由base_designator指定。base_designator必须是绝对基址,或者偏移量为+0。

· EMPTY:它在执行区中保留一个已知长度的空白存储器块,通常用作堆或栈。

· PADVALUE:指定填充字的默认值,如果在域定义中指定了该属性,则必须为该属性赋值。使用该属性的例子如下。

EXEC 0x10000 PADVALUE 0xffffffff EMPTY ZEROPAD 0x2000

存储器相关文章:存储器原理




评论


相关推荐

技术专区

关闭