scatter文件的写法

scatter文件的写法

ID:15405828

大小:853.50 KB

页数:79页

时间:2018-08-03

scatter文件的写法_第1页
scatter文件的写法_第2页
scatter文件的写法_第3页
scatter文件的写法_第4页
scatter文件的写法_第5页
资源描述:

《scatter文件的写法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、scatter文件的写法  程序总有两种状态:运行态和静止态。当系统掉电的时候程序需要被保存在非易失性的存储器中,且这个时候程序的排放是按照地址依次放的,换句话说:我才懒得管它怎么放,只要不掉就行。当系统上电后,CPU就要跑起来了,CPU属于高速器件,存储器总是不怎么能跟得上,既然跟不上那么我们就尽量缩短它们之间的差距,那留下一条路,那就是尽量提高存储器的读取速度,存储器类型决定其速度的水平,那么尽量放在速度高的存储器就成为首选解决方案。那么我们就把要执行的程序暂时拿到速度较快的RAM中。那么拿的过程就牵涉到程序的加载了。这就是要解决的问题。  一个映像文件由域(region

2、)、输出段(outputsections)和输入段(inputsections)组成。不要想得太复杂,其实他们之间就是包含与被包好的关系。具体关系是这样的:  映像文件>  域> 输出段> 输入段  输入段:  输入段就是我们写的代码+初始化的数据+应该被初始化为0的数据+没有初始化的数据,用英文表示一下就是:RO(ReadOnly),RW(ReadWrite),ZI(ZeroInitialized),NOINIT(NotInitialized)。ARM连接器根据各个输入段不同的属性把相同的拿再一起组合一下就成为了输出段。  请看看平时写的东东:  AREA   RESET,

3、CODE,READONLY  AREA   DSEG1,DATA,READWRITE  AREA   HEAP,NOINIT,READWRITE  看出其属性没?  输出段:  为了简化编译过程和更容易取得各种段的地址,那么把多个同属性的输入段按照一定的规律组合在一起,当然这个输出段的属性就和它包含的输入段的属性一样咯。输入段的排放规律就是:最先排放RO属性的输入段,然后是RW属性段,最后是ZI或NOINIT段。  域:         为什么还要加一层域,我的理解是由于代码的功能不同,那么我们有必要把不同功能的代码分类放。我们可以把需要高速执行的代码放在一起、把对速度要求不

4、高的放在一起、把执行频率高的放在一起,把执行频率低的放在一起...那么按照这种方式放的代码就可以根据其具体需要放在不同的存储器中了。这样可以提高程序执行速度。一个域中包含1~3个输出段。  映像文件:  我暂时把映像文件理解成烧到存储器中的文件,由N个域组成。这些域其实可以看做是独立的模块,只是他们按照一定的顺序(这个顺序还是:RO+RW+ZI)被捆绑在一起,这样才方便烧写到非易失存储器中去。  好了,了解了映像文件的组成,那么来看看映像文件是怎么跑起来的。  映像文件就是有N节车厢的火车,车厢(域)里装着要送到不同站(不同类型的存储器)的货物。到相应的站了,那么就把相应的车

5、厢拿下来。指挥拿这个的就是scatter文件。拿下货物车厢后,我们就解开它,把里面的品牌为RO的货物提取出来,按照scatter的指示发给某个地址,然后再先后把品牌为RW和ZI的货物发到scatter指定的地址。  看看这个加深理解:  LOAD_ROM1    0X00000000   ;从火车上取出来时的地址(如:成都站)  {             EXEC_ROM1      0x40000000                 {                    PROGRAM.O(+RO) ;把品牌RO的货物发给0x40000000去           

6、          RAM1         0x80000000                     {                     PROGRAM.O(+RW,+ZI);把品牌RW,ZI的货物依次发给0x80000000                      }                                 }              ......  }  其他的段也可以这样依葫芦画瓢。scatter的原理就介绍这样,其中的语法和规则要多写多把代码的地址拖出来看才能体会。不过都是很简单的,生活中的小常识就能解决这些问题。为什么?因为

7、设计这些规则的工程师的灵感就是源自生活。嘿嘿...享受把代码随处放的乐趣吧,...enjoy... scatterloading实际的嵌入式系统中,ADS提供的缺省存储器映射是不能满足要求的。用户的目标硬件通常有多个存储器设备位于不同的位置,并且这些存储器设备在程序装载和运行时可能还有不同的配置。     Scatterloading可以通过一个文本文件来指定一段代码或数据在加载和运行时在存储器中的不同位置。这个文本文件scatterfile在命令行中由-scatter开关指定,例如:     arml

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。