打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
分散加载文件的应用

简单应用时可以不写.scf文件。而在"Output"页中选择"Simple".然后填写"RO Base""RW Base"的起始地址。在"Lay Out"页中,填写Object/Symble: Startup.o, Section: Start.编写启动文件:Startup.s.

 

"Option"页里的"Image Entry Point"填入起始地址。

--------------------------------------------------------------------------------

 

Scatter-Load Description File的结构:

 

".scf"文件中的"+RW"对应".s"源文件中的"READWRITE".

".scf"文件中的"+ZI"对应".s"源文件中的"NOINIT".

".scf"文件中的"+RO"对应".s"源文件中的"READONLY".

 

".s"源文件中有:

AREA area_name CODE/DATA,READONLY/NOINIT/READWRITE

END

 

 

".scf"的例子

 

内容   注解

ROM_LOAD 0x80000000

{   Name of Load Region, Start Address for Load Region and Maximum size of Load Region(省略了)

  ROM_EXEC 0x80000000 0x20000

{ 片外存储区,从0x80000000开始,最多0x20000字节。

  Startup.o(Vector,+First) Startup模块的Vector段放在最前面。注1

  *(+RO) 其他所有模块中的所有代码和只读的数据放在这里。

  }  

  IRAM 0x40000000 0x00004000

{ 片内RAM区,从0x40000000开始,最多0x4000字节

  Startup.o(MyStacks,+first) 指定Startup.oMyStacks放在最前面。

  Startup.o(+RW,+ZI) Startup.o中的其他+RW/+ZI段。注1

  os_cpu_a.o(+RW,+ZI)  

  }  

  STACKS 0x40004000 UNINIT

{ 片内16K RAM的顶端,存放不需要被"C library"初始化的段。

  Stack.o(+ZI) 2

  }  

  ERAM 0x80040000

{  

  *(+RW,+ZI)  

  }  

  HEAP +0 UNINIT

{ "+0"表示接着上一段"ERAM"的结尾,继续安排存储区。

  Heap.o(+ZI) 3

  }  

}    

 

 

 

下面是在scf文件中引用过的源文件示意: "Startup.s"

code 32

area Vectors,CODE,READONLY

entry

...

end 1:在"Startup.o"里面会生成名为"Vectors"的段,段的属性为"READONLY"

"Stack.s"

area Stacks, DATA, NOINIT

export StackUsr

StackUsr SPACE 1

end 2: "Stack.o"里面会生成名为"Stacks"的段,段的属性为"NOINIT",该属性对应scf文件中的"+ZI". 该段不需要初始化或者可以被初始化为"0".

"Heap.s"

area Heap,DATA,NOINIT

export bottom_of_heap

bottom_of_heap SPACE 1

end 3: "Heap.o"里面名为"Heap"的段。

 

 

Scatter文件中最好每一个Region都加一个Maximum参数,这样当编译时如果实际使用的空间大于Maximum Size,会有Error:16220E: Excution region xxx size (xxx bytes) exceeds limit (xx bytes)。如果地址有重复,会有Error: 16221E: Excution region xxx overlaps with excution region xxx。前一个Region的首地址 + Maximum > 后一个Region的首地址时不一定有Error。只有当一分配的内存出现覆盖时才会有Error

 

Region"UNINIT"之类的参数要放在"Maximum size"参数之前。

 

本文来自:我爱研发网(52RD.com) - R&D大本营

详细出处:http://www.52rd.com/bbs/dispbbs.asp?boardid=118&id=70812&replyID=68709

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ads1.2 scatter文件分析
分散加载文件
分散加载描述文件(转载)
scf
【进阶】详解KEIL的分散加载文件
stm32堆栈如何设置,地址如何分配
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服