新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 把keilC51中不使用的代碼禁止分配空間,為程序瘦身

把keilC51中不使用的代碼禁止分配空間,為程序瘦身

作者: 時間:2016-12-03 來源:網(wǎng)絡(luò) 收藏

最近在用51單片機(jī)SD卡+VS1003來做MP3
可是在調(diào)試的時候遇到一個很郁悶的問題,我在main函數(shù)里只是調(diào)用了一個簡短的函數(shù),還有好多函數(shù)只是定義了調(diào)試過了,還沒使用到,但是我這些都放在一個工程里編譯就會報錯,說是
ADDRESS SPACE OVERFLOW
SPACE: DATA
...
郁悶了,我的main函數(shù)里只調(diào)用了一個簡單的函數(shù)啊為什么沒調(diào)用的函數(shù)KEIL也把它給塞進(jìn)HEX文件里去。。。
請大蝦們解決一下小弟這個問題...
(我試過把Memory Model設(shè)置為Large (我的STC12C5A60S2內(nèi)部有1280的XDATA), 可以用,但是考慮到隊友那里這樣設(shè)置的時候不能使用紅外的功能了,不知道是為什么。。。,所以不想改Memory Model。更不想手動注釋這些沒調(diào)用的函數(shù),那樣太麻煩了。。。)

本文引用地址:http://m.butianyuan.cn/article/201612/325162.htm

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

解決方法:

把target options中的device頁中選上"Use LX51 ...",然后在LX51 Misc頁中的Misc Control中填入"REMOVEUNUSED",確認(rèn)后重新編譯即可自動去掉未調(diào)用的函數(shù)。
如下圖:

(原文件名:0.jpg)

說實話Keil這一點真的挺爛的,請看證據(jù):

(原文件名:1.png)


首先我一開始照你的意思設(shè)置了以后遇到了錯誤,說要我升級到PK51,我用的是KEIL uvision 4,可能是因為當(dāng)初沒破_解好,去網(wǎng)上找個注_冊機(jī)就解決了
然后我發(fā)現(xiàn)原來這個指令在KEIL的幫助文檔里有的,所以說一定要學(xué)會看幫助文檔才行啊。。。

(原文件名:a.png)

(原文件名:b.png)


評論


技術(shù)專區(qū)

關(guān)閉