> 文章列表 > 分散加载(3)---sct文件说明

分散加载(3)---sct文件说明

分散加载(3)---sct文件说明

一、分散加载文件的结构

1)分散加载文件由加载域Load region和执行域Execution region组成,一个分散加载文件中可以定义多个加载域Load region,一个加载域Load region中可以定义多个执行域Execution region,一个执行域Execution region可以定义多个输入节input section。如图:

2)区域单位名称: 域region,节section。分散加载文件中有两种域---Load region 和 Execution region,一种节---输入节input section。在Execution region中可以定义多个输入节input section。

3)输入节input section由模块匹配符Module selector pattern 和 输入节字符input section symbol,输入节属性input section attribute组成;

二、加载域描述Load region description

  2.1)加载域的构成:定义一个加载域,由以下几个部分组成:加载域名称,基地址,属性,最大内存空间,至少一个执行域。如图:

 

2.2)加载域的语法:

load_region_description ::=

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

       "{"

          execution_region_description+

       "}"

其中:

2.2.1 加载域名称load_region_name:用于区分不同的加载域。

2.2.2 基地址base_address: 指定加载域的开始地址。可以直接用绝对地址表示,比如0x08000000, 或者用+offset表示,比如 +0,表示在上一个加载域结束地址基础上 +0.

2.2.3 属性列表attribute_list: 指定加载域的属性,可选项,默认是ABSOLUTE. 如果不填属性列表,那么默认使用的就是ABSOLUTE,表示加载域的内容放在固定的位置,连接后不改变。

2.2.4 最大内存空间max_size: 加载域的最大内存空间,如果加载域的内容超过这个值,连接器就会报警。

2.2.5 执行域,用大括号{ }包起来,在加载域中,必须包含至少一个执行域。

2.3)加载域举例:

 

三、执行域描述Execution region description

 3.1)执行域的构成:定义一个执行域,由以下几个部分组成:执行域名称,基地址,属性,最大内存空间,至少一个输入节input section。如图:

3.2)执行域的语法:

execution_region_description ::=

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

        "{"

            input_section_description*

        "}"

其中:

3.2.1 执行域名称exec_region_name:用于区分不同的执行域。

3.2.2 基地址base_address: 指定执行域的开始地址。可以直接用绝对地址表示,比如0x08000000, 或者用+offset表示,比如 +0,表示在上一个加载域/执行域结束地址基础上 +0.

3.2.3 属性列表attribute_list: 指定执行域的属性,可选项,默认是ABSOLUTE. 如果不填属性列表,那么默认使用的就是ABSOLUTE,表示执行域的内容放在固定的位置,连接后不改变。

3.2.4 最大内存空间max_size: 执行域的最大内存空间,如果执行域的内容超过这个值,连接器就会报警。

3.2.5 执行域,用大括号{ }包起来,在执行域中,必须包含至少一个输入节input section。

3.3)执行域举例:

四、输入节描述input section description

    1)输入节构成

  

  1. 输入节语法:

  input_section_description ::=

        module_select_pattern [ "(" input_section_selector ( "," input_section_selector )* ")" ]

input_section_selector ::= "+" input_section_attr

        | input_section_pattern

        | input_section_type

        | input_symbol_pattern

        | section_properties

说明:输入节构成比较复杂,将单独一章来记录。