微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式软件开发之: 映像文件存储器映射调整

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

时间:08-30 来源:3721RD 点击:

program2.o(+RO)

}

DRAM 0x18000 ;运行时域的起始地址

{

program2.o(+RW,+ZI)

}

}

上面两个例子中,简单存储器映射可以使用命令行选项实现,但第二个复杂存储器映射的例子却只能使用Scatter文件实现。

13.4.2 Scatter文件语法

分散载入描述文件是一个文本文件,它向 armlink 描述目标系统的存储器映射。如果从命令行加载Scatter文件,可以使用任意类型的文件扩展名。

在Scatter文件中,用户可以指定以下存储器映像内容:

· 每个载入区的载入地址和最大尺寸;

· 每个载入区的属性;

· 从每个载入区派生的执行区;

· 每个执行区的执行地址和最大尺寸;

· 每个执行区的输入节。

描述文件的格式反映出载入区、执行区和输入节的层次结构。

1.BNF的表示法和语法

所谓BNF(Backus Naur Format)即Scatter文件所用的形式语言。表13.3概括了其所用的符号和语法规则。

表13.3 BNF语法

符 号

说 明

"

引号用于表示BNF语法中的字符被用作普通字符。

例如,定义B"+"C,它只能替换为模式B+C。而定义B+C可以替换为模式BC、BBC或BBBC

A ::= B

将A定义为B。例如,A::= B"+" | C 表示A相当于B+或C。

在其组件方面,::=表示法用于定义高级结构。每个组件可能还有一个::=定义,对更简单的组件进行定义。

例如,A::=B以及B::= C | D表示定义A相当于模式C或D

续表

符 号

说 明

[A]

可选元素A。例如,A::= B[C]D 表示定义A可以扩展为BD或BCD

A+

元素A可以出现一次或多次。例如,A::= B+表示定义A可以扩展为B、BB或BBB等

A*

元素A可以不出现或多次出现

A|B

出现元素A或B,但不能同时出现

(A|B)

元素A和B组合在一起。

这在使用 | 操作符时,或重复复杂模式时尤其适用。

例如,A::=(B C)+ (D | E) 表示定义A可以扩展为BCD、BCE、BCBCD、BCBCE、BCBCBCD或BCBCBCE

2.Scatter文件语法概述

分散加载描述scatter_description被定义为一个或多个load_region_description模式:

Scatter_description ::=

load_region_description+

加载域描述load_region_description 被定义为载入区名称,可以选择性地在其后跟随属性、尺寸说明符以及一个或多个执行区描述:

load_region_description ::=

load_region_name (base_address | ("+" offset)) [attributes] [max_size]

"{"

execution_region_description+

"}"

执行域描述execution_region_description 被定义为执行区名称,是一种基址规范,可以选择性地在其后跟随属性、尺寸说明符以及一个或多个输入段描述:

execution_region_description ::=

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

length]

"{"

input_section_description*

"}"

输入段描述input_section_description被定义为源模块选择程序模式,可以在其后选择性地跟随输入节选择程序:

input_section_description ::=

module_select_pattern

[ "("

("+" input_section_attr | input_section_pattern)

([","] "+" input_section_attr | "," input_section_pattern))*

")" ]

图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个字符有效。该名称仅

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top