[ZLG-ARM] 请教:在ADS下,程序已使用的RAM资源怎么统计?

[复制链接]
3197|5
 楼主| fywx 发表于 2008-10-14 16:13 | 显示全部楼层 |阅读模式
gavin_he 发表于 2008-10-14 16:40 | 显示全部楼层

看编译信息!

  
王凌 发表于 2008-10-14 16:55 | 显示全部楼层

说的不一定对,供参考,可信度:85%

这是Make后的统计表,那个RW&nbsp;Size就是RAM资源(片内片外都可能)的使用情况(29.52kB)<br />&nbsp;<br />&nbsp;&nbsp;Total&nbsp;RO&nbsp;&nbsp;Size(Code&nbsp;+&nbsp;RO&nbsp;Data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;36334&nbsp;(&nbsp;&nbsp;35.48kB)<br />&nbsp;&nbsp;Total&nbsp;RW&nbsp;&nbsp;Size(RW&nbsp;Data&nbsp;+&nbsp;ZI&nbsp;Data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30226&nbsp;(&nbsp;&nbsp;29.52kB)<br />&nbsp;&nbsp;Total&nbsp;ROM&nbsp;Size(Code&nbsp;+&nbsp;RO&nbsp;Data&nbsp;+&nbsp;RW&nbsp;Data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;37446&nbsp;(&nbsp;&nbsp;36.57kB)<br /><br />因为全部的堆(heap)和栈(stack)都包括在RW和ZI段里了,RAM基本就是用来存两个东西:一个是需要快速执行的程序代码,一个是堆和栈。<br />你只要不刻意在分散加载里把部分代码的执行区放到RAM去,链接器会默认把C语言写的代码都放在低地址的只读存储器中。而且除了一些中断服务程序,没有必要把代码放到RAM里去,现在的FLASH读取速度已经很快了。<br /><br />结论就是:这句话指示的大小<br />Total&nbsp;RW&nbsp;&nbsp;Size(RW&nbsp;Data&nbsp;+&nbsp;ZI&nbsp;Data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30226&nbsp;(&nbsp;&nbsp;29.52kB)<br />RAM实际占用的只会比这多,不会比这少,但多也只会多一点点而已。<br />说的不一定对,欢迎批评指正。
 楼主| fywx 发表于 2008-10-15 12:25 | 显示全部楼层

谢谢!

  
pwch 发表于 2008-10-18 20:22 | 显示全部楼层

可是LPC2214片内才16kRAM啊

可是LPC2214片内才16kRAM啊,当然你片外可能扩展了RAM,但ADS知道你片外扩展了多少吗?
王凌 发表于 2008-10-20 08:47 | 显示全部楼层

不知道

ADS当然不知道,所以这就是RW和ZI统计数据的意义。如果RW和ZI资源超出内外RAM总和,外部存储器控制器EMC将无法访问相应地址空间,将发生“数据终止”。<br />这种错误需要人工根据ADS是用的链接器armlink的统计数据检查出来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

59

帖子

1

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