Scatter file

来源:互联网 发布:windows 漏洞扫描 编辑:程序博客网 时间:2024/04/29 16:02

参考:http://www.cnblogs.com/khldragon/archive/2011/09/02/2164124.html

一 概述

Scatter file (分散加载描述文件)用于armlink的输入参数,他指定映像文件内部各区域的download与运行时位置。Armlink将会根据scatter file生成一些区域相关的符号,他们是全局的供用户建立运行时环境时使用。(注意:当使用了scatter file 时将不会生成以下符号 Image$$RW$$Base, Image$$RW$$Limit, Image$$RO$$Base, Image$$RO$$Limit, Image$$ZI$$Base, and Image$$ZI$$Limit)


二 什么时候使用scatter file

       当然首要的条件是你在利用ADS进行项目开发,下面我们看看更具体的一些情况。

1 存在复杂的地址映射:例如代码和数据需要分开放在在多个区域。

2 存在多种存储器类型:例如包含 Flash,ROM,SDRAM,快速SRAM。我们根据代码与数据的特性把他们放在不同的存储器中,比如中断处理部分放在快速SRAM内部来提高响应速度,而把不常用到的代码放到速度比较慢的Flash内。

3 函数的地址固定定位:可以利用Scatter file实现把某个函数放在固定地址,而不管其应用程序是否已经改变或重新编译。

4 利用符号确定堆与堆栈:

5 内存映射的IO:采用scatter file可以实现把某个数据段放在精确的地指处。

因此对于嵌入式系统来说scatter file是必不可少的,因为嵌入式系统采用了ROM,RAM,和内存映射的IO。


三 scatter file 实例

1 简单的内存映射

LOAD_ROM 0x0000 0x8000

{

       EXEC_ROM 0x0000 0x8000

       {

       *( RO)

       }

      RAM 0x10000 0x6000

      {

       *( RW, ZI)

      }

}

LOAD_ROM(下载区域名称) 0x0000(下载区域起始地址) 0x8000(下载区域最大字节数)

{

        EXEC_ROM(第一执行区域名称) 0x0000(第一执行区域起始地址) 0x8000(第一执行区域最大字节数)

       {

       *( RO(代码与只读数据))

       }

      RAM(第二执行区域名称) 0x10000(第二执行区域起始地址) 0x6000(第二执行区域最大字节数)

      {

       *( RW(读写变量), ZI(未初始化变量))

      }

}


0 0