打印
[技术问答]

如何减小代码运行时RAM的大小

[复制链接]
2493|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
thammer|  楼主 | 2015-1-27 18:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     我选的型号是N79E815, 128片内直接RAM,128片内间接RAM,256扩展RAM。编译之后的代码data有1K左右,有什么办法缩小RAM的消耗?据我所查:
1.去掉不用的全局变量。
2.减少函数的嵌套层数。
3.函数内少用较大的局部变量。

请问还有什么方法?

还有一个问题就是关于单片机栈的问题,栈只能存在于同一种类型的RAM中吗?可否限定将某个函数的栈限定在指定的RAM中?我这个问题主要是想充分用完所有的RAM。比如如果我编译的程序data消耗了500Byte,那么我现在这块芯片只要合理分配就可以编译通过,那么如何设定可以充分利用所有的RAM,我使用的编译器是Keil4
沙发
quray1985| | 2015-1-28 20:36 | 只看该作者
勾选keil中的设置的microlib也能减少代码运行时ram的大小

使用特权

评论回复
板凳
gaoyang9992006| | 2015-1-28 21:03 | 只看该作者
这个看你程序设计的紧凑度了。

使用特权

评论回复
地板
lovecat2015| | 2015-1-29 12:30 | 只看该作者
利用keil里的设置,microlib勾选上

使用特权

评论回复
5
thammer|  楼主 | 2015-1-29 14:43 | 只看该作者
quray1985 发表于 2015-1-28 20:36
勾选keil中的设置的microlib也能减少代码运行时ram的大小

我用的是C51,C51中没找到此项,在MDK里面是有的。

使用特权

评论回复
6
thammer|  楼主 | 2015-1-29 14:43 | 只看该作者
lovecat2015 发表于 2015-1-29 12:30
利用keil里的设置,microlib勾选上

我用的是C51,C51中没找到此项,在MDK里面是有的

使用特权

评论回复
7
thammer|  楼主 | 2015-1-29 14:44 | 只看该作者
gaoyang9992006 发表于 2015-1-28 21:03
这个看你程序设计的紧凑度了。

看来我只能优化程序的嵌套层数了。

使用特权

评论回复
8
戈卫东| | 2015-1-29 15:14 | 只看该作者
其实找个RAM够大的MCU最简单。。。。。

使用特权

评论回复
9
gaoyang9992006| | 2015-1-29 17:47 | 只看该作者
thammer 发表于 2015-1-29 14:44
看来我只能优化程序的嵌套层数了。

能不嵌套就别嵌套,还有变量使用上要节约,另外能用指针就指针操作。别定义太多全局变量,可以多用局部变量,或者共用变量。

使用特权

评论回复
10
gaoyang9992006| | 2015-1-29 17:47 | 只看该作者
戈卫东 发表于 2015-1-29 15:14
其实找个RAM够大的MCU最简单。。。。。

楼主的目的在于学习如何优化程序,我猜。

使用特权

评论回复
11
quray1985| | 2015-1-29 19:40 | 只看该作者
thammer 发表于 2015-1-29 14:43
我用的是C51,C51中没找到此项,在MDK里面是有的。

那只能从优化代码入手了,全局变量少用。

使用特权

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

本版积分规则

13

主题

34

帖子

0

粉丝