米尔科技提醒您:您的浏览器版本过低或者使用了兼容模式,为了获得更好的浏览体验,建议使用IE10以上的浏览器或使用极速模式。 请升级浏览器以获得更好的体验!

分散加载文件(链接脚本文件)的格式

问题类别: > 浏览次数:4130
发布日期:2012/4/23 14:51:53 文章来源:米尔科技
回复日期:2020/12/20 10:24:20

环境说明

RealView MDK中国版3.05以上

分析描述

在链接的时候,要在不同的地址处添加链接文件,即分散加载文件,这个分散加载文件有什么样的格式呢?

问题解答

问题分析:

分散加载描述文件是一个文本文件,它向链接器描述目标系统的存储器映射。如果通过命令行使用链接器,则描述文件的扩展名并不重要。分散加载文件指定:

1)每个加载区的加载地址和最大尺寸;

2)每个加载区的属性;

3)从每个加载区派生的执行区;

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

5)每个执行区的输入节。

从描述文件的格式中就可以看出加载区、执行区和输入节的层次关系。

问题解答:

        程序正确编译生成目标文件以后, 就会链接成可执行的文件, 这个过程中要用到分散加载文件, 它决定可执行的代码在存储器中存放的位置, 这在复杂的程序(例如VIVI对Linux内核的引导)中是很重要的. 下面是一个简单的分散加载文件的例子:

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
;Run in Flash
 
LR_ROM1 0x00000000         {    ; load region
  ER_ROM1 0x00000000 0x0200000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_RAM1 0x30000000 0x4000000  {  ; RW data
   .ANY (+RW +ZI)
  }
   RW_IRAM1 0x40000000 0x00001000  {
   .ANY (+RW +ZI)
  }
}
        在上面的例程中, 代码从地址0x00000000处开始存放,并且将RESET程序段放在最开始处, 而可读写的数据从地址0x30000000处开始存放. 分散加载文件的段的名字(例如LR_ROM1, ER_ROM1等)可以是任意的名字。