Scatter文件编写

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Scatter文件编写
一个映像文件中可以包含多个域(region),在加载和运行映像文件时,每个域可以有不同的地址。

每个域可以包括多达3个输出段,每个输出段是由若干个具有相同属性的输入段组成。

这样在生成映像文件时,ARM链接器就需要知道下述两个信息。

•分组信息决定各域中的输出段是由哪些输入段组织而成;
•定位信息决定各域在存储空间中的起始地址。

根据映像文件中地址映射的复杂程度,有两种方法来告诉ARM链接器这些相关的信息。

对于映像文件中地址映射关系比较简单的情况,可以使用命令行选项;对于映像文件中地址映射关系比较复杂的情况,可以使用一个scatter配置文件。

Scatter文件又称为分散加载文件,将重点讲解如何编写scatter文件。

1、Scatter文件结构
Scatter文件是一个文本文件,使用BNF语法来描述ARM链接器生成映像文件时所需要的信息。

具体来说,在scatter文件中可以指定下列信息:
•各个加载时域的加载时起始地址、最大尺寸和属性;
•每个加载时域包含的输出段;
•各个输出段的运行时起始地址、最大尺寸、存储访问特性和属性;
•各个输出段中包含的输入段。

一个Scatter文件包含若干个加载域,一个加载域包含若干个输出段,一个输出段由若干个具有相同属性的输入段组成,其结构如图1所示。

图1 Scatter 文件结构示意图
①加载时域的描述
加载时域包括名称、起始地址、属性、最大尺寸和一个运行时域的列表。

使用BNF 语法描述,加载时域的格式如下所示:
Load_name base_designator attribute max_size {
……
}
•Load_name 运行时域名称,它除了唯一地标识一个运行时域外,还用来构成链接器生成的链接符号;
•base_designator 用来表示本加载时域的起始地址,它可以有两种格式表示:起始地址或偏移量;
•attribute 本加载时域的属性,其可能的取值为下面之一,默认的取值为ABSOLUTE:• PI 位置无关属性;
• RELOC 重定位;• ABSOLUTE 绝对地址;
按照例 scatter文件的描述,ARM链接器会生成相应的映像文件地址映射关系,如图2所示。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml"
/>
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
图2 程序运行时地址映射关系
图3 ARM系统中的地址空
(注:可编辑下载,若有不当之处,请指正,谢谢!)。

相关文档
最新文档