打印
[ZLG-ARM]

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

[复制链接]
2228|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fywx|  楼主 | 2008-10-14 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
gavin_he| | 2008-10-14 16:40 | 只看该作者

看编译信息!

使用特权

评论回复
板凳
王凌| | 2008-10-14 16:55 | 只看该作者

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

这是Make后的统计表,那个RW Size就是RAM资源(片内片外都可能)的使用情况(29.52kB)
 
  Total RO  Size(Code + RO Data)                36334 (  35.48kB)
  Total RW  Size(RW Data + ZI Data)             30226 (  29.52kB)
  Total ROM Size(Code + RO Data + RW Data)      37446 (  36.57kB)

因为全部的堆(heap)和栈(stack)都包括在RW和ZI段里了,RAM基本就是用来存两个东西:一个是需要快速执行的程序代码,一个是堆和栈。
你只要不刻意在分散加载里把部分代码的执行区放到RAM去,链接器会默认把C语言写的代码都放在低地址的只读存储器中。而且除了一些中断服务程序,没有必要把代码放到RAM里去,现在的FLASH读取速度已经很快了。

结论就是:这句话指示的大小
Total RW  Size(RW Data + ZI Data)             30226 (  29.52kB)
RAM实际占用的只会比这多,不会比这少,但多也只会多一点点而已。
说的不一定对,欢迎批评指正。

使用特权

评论回复
地板
fywx|  楼主 | 2008-10-15 12:25 | 只看该作者

谢谢!

使用特权

评论回复
5
pwch| | 2008-10-18 20:22 | 只看该作者

可是LPC2214片内才16kRAM啊

可是LPC2214片内才16kRAM啊,当然你片外可能扩展了RAM,但ADS知道你片外扩展了多少吗?

使用特权

评论回复
6
王凌| | 2008-10-20 08:47 | 只看该作者

不知道

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

59

帖子

1

粉丝