[ZLG-ARM] 存储空间散转的问题

[复制链接]
2652|3
 楼主| 云痕 发表于 2008-3-24 22:54 | 显示全部楼层 |阅读模式
1,我用的是ARM&nbsp;Executable&nbsp;Image&nbsp;for&nbsp;LPC2200模板,未添加任何代码时,ARM&nbsp;Linker里的Scatter选mem_c.scf,编译显示&nbsp;Error:L6203E:Entry&nbsp;point<br />(0x80000000)lie&nbsp;within&nbsp;non-root&nbsp;region&nbsp;ERAM<br />这是什么原因啊?加另外2个*.scf都是可以正常编译的<br /><br />2,Startup.s中<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;HeapTop,&nbsp;DATA,&nbsp;NOINIT<br />top_of_heap<br />&nbsp;&nbsp;&nbsp;这段代码,声明了一个DATA,&nbsp;NOINIT的区域HeapTop,可似乎没分配空间给它,top_of_heap后面没跟&nbsp;SPACE&nbsp;**,<br />能理解成HeapTop不占用任何空间,top_of_heap仅指向大小为0的HeapTop区域首地址么?<br /><br />3,mem_c.scf中,<br />ROM_LOAD&nbsp;0x0<br />{<br />//将vectors放在以0x00000000&nbsp;为首地址的区域,<br />//此区域类型为ROM_EXEC(执行ROM?),作为RO段?<br />&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC&nbsp;0x00000000&nbsp;&nbsp;//ROM_EXEC,IMAR都是ADS关键字?<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(vectors,&nbsp;+First)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IRAM&nbsp;0x40000000&nbsp;&nbsp;//“IRAM”说明之后的地址是片内的RAM?此段是将MyStacks区域放在以0x40000000为首的区域?<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(MyStacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />//STACKS_BOTTOM&nbsp;+0&nbsp;如何理解?是从上面的0x40000000开始,便宜MyStacks<br />//大小,然后再偏移+0,作为StackBottom区域的首地址?<br />//MyStacks区域占20字节,StackBottom从0x40000014开始?<br />&nbsp;&nbsp;&nbsp;STACKS_BOTTOM&nbsp;+0&nbsp;UNINIT&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(StackBottom)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;STACKS&nbsp;0x40004000&nbsp;UNINIT&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(Stacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ERAM&nbsp;0x80000000&nbsp;//ERAM表明后面是外扩RAM起始地址?并将以此地址为首的区域作为RW和ZI段?<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP&nbsp;+0&nbsp;UNINIT&nbsp;//Heap区域从0x80000000开始?占1字节?<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(Heap)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;Heap,&nbsp;DATA,&nbsp;NOINIT<br />//&nbsp;bottom_of_heap&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP_BOTTOM&nbsp;0x80080000&nbsp;UNINIT&nbsp;//将0x80080000作为HeapTop区域的首地址么?<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(HeapTop)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />准备换2214芯片了,这样理解.scf文件是否有问题?有人能讲解下么?论坛上没找到相关的说明
zlgarm 发表于 2008-3-25 10:07 | 显示全部楼层

回复如下

云痕,您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;对于您的问题作如下回答:<br />&nbsp;&nbsp;&nbsp;&nbsp;1、ROM_EXEC,IMAR不是ADS的关键字,是用户自定义的名称;<br />&nbsp;&nbsp;&nbsp;&nbsp;2、对于分散加载文件的资料您可以参考《ARM开发工具ADS原理及应用》一书,该书有详细说明分散加载的原理。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;duty:zlgarm_wuzhijian
huangbingg 发表于 2008-3-25 20:21 | 显示全部楼层

问下周工:

arm里面,我们一般指定:栈是向下生长,堆是向上生长的吧???
huangbingg 发表于 2008-3-26 11:43 | 显示全部楼层

顶下,嘿嘿

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

75

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部