嵌入式 > 嵌入式开发 > 详情

把keilC51中不使用的代码禁止分配空间,为程序瘦身

发布时间:2020-09-29 发布时间:
|

最近在用51单片机SD卡+VS1003来做MP3
可是在调试的时候遇到一个很郁闷的问题,我在main函数里只是调用了一个简短的函数,还有好多函数只是定义了调试过了,还没使用到,但是我这些都放在一个工程里编译就会报错,说是
ADDRESS SPACE OVERFLOW
SPACE: DATA
...
郁闷了,我的main函数里只调用了一个简单的函数啊为什么没调用的函数KEIL也把它给塞进HEX文件里去。。。
请大虾们解决一下小弟这个问题...
(我试过把Memory Model设置为Large (我的STC12C5A60S2内部有1280的XDATA), 可以用,但是考虑到队友那里这样设置的时候不能使用红外的功能了,不知道是为什么。。。,所以不想改Memory Model。更不想手动注释这些没调用的函数,那样太麻烦了。。。)

==============================

解决方法:

把target options中的device页中选上"Use LX51 ...",然后在LX51 Misc页中的Misc Control中填入"REMOVEUNUSED",确认后重新编译即可自动去掉未调用的函数。
如下图:

(原文件名:0.jpg)

说实话Keil这一点真的挺烂的,请看证据:

(原文件名:1.png)


首先我一开始照你的意思设置了以后遇到了错误,说要我升级到PK51,我用的是KEIL uvision 4,可能是因为当初没破_解好,去网上找个注_册机就解决了
然后我发现原来这个指令在KEIL的帮助文档里有的,所以说一定要学会看帮助文档才行啊。。。

(原文件名:a.png)

(原文件名:b.png)


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
定时器CTC模式的测试