草稿,用例和内容编辑以后有空完善吧
通过编辑scatter file即可划分出相应Section和分配逻辑。
当然首要的条件是你在利用ADS进行项目开发,下面我们看看更具体的一些情况。
1 存在复杂的地址映射:例如代码和数据需要分开放在在多个区域。
2 存在多种存储器类型:例如包含 Flash,ROM,SDRAM,快速SRAM。我们根据代码与数据的特性把他们放在不同的存储器中,比如中断处理部分放在快速SRAM内部来提高响应速度,而把不常用到的代码放到速度比较慢的Flash内。
3 函数的地址固定定位:可以利用Scatter file实现把某个函数放在固定地址,而不管其应用程序是否已经改变或重新编译。
4 利用符号确定堆与堆栈:
5 内存映射的IO:采用scatter file可以实现把某个数据段放在精确的地指处。
因此对于嵌入式系统来说scatter file是必不可少的,因为嵌入式系统采用了ROM,RAM,和内存映射的IO。
个人的实际应用:
1.复杂内存映射,电路板有多个ram和sram,根据散列加载可方便指定执行控件
2.片内单独扇区划分,只用来存储一些可能修改但又不经常修改的配置数据而无RO-CODE,应为为flash擦写机制,若不作处理当你修改的配置数据同时和当前你执行的代码恰好处于一个扇区,擦除秒死机。
attribute ((section(“ROM2”))) 可指定Section
而scatter文件,可根据编译文件名匹配,根据(RW,RO-code,RO-DATA,ZI)等类型匹配
keil uVision help中 ”Scatter-Loading“章节有非常详尽的介绍
相关博客 https://www.cnblogs.com/qiyuexin/p/9026365.html