音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請問KEIL里存儲模式compact與small模式編譯結(jié)果有不同嗎?

作者:alphal 欄目:單片機
請問KEIL里存儲模式compact與small模式編譯結(jié)果有不同嗎?
我們這個程序有30多K ,使用的是WB77E58,在XDATA區(qū)定義的變量空間大概有4K,開始的時候momery MODEL 選擇small沒有問題,后來我加了一個字節(jié)的變量,就顯示錯誤,地址空間溢出,該momery MODEL 模式選擇為compact模式后就ok了。

可是我不知道這樣編譯出的代碼是否可用,這兩個模式編譯出的代碼在哪兒會有不同?
這兩個模式在編譯的時候有什么不同?

謝謝!

2樓: >>參與討論
alphal
沒人知道?
 
3樓: >>參與討論
computer00
放心用吧,只要編譯通過,就可以用的(當(dāng)然你的程序和器件要正確
 
4樓: >>參與討論
alphal
呵呵,謝謝00同志,但是我還是想明白這兩個會有什么不同
 
5樓: >>參與討論
computer00
你試試將某些data區(qū)的變量,改成pdata或xdata試試。
應(yīng)該是內(nèi)部data區(qū)的數(shù)據(jù)用光了。如果你選擇compact的話,就會將臨時變量分配在pdata區(qū),這樣就可以編譯通過了。
但這樣會降低程序運行的速度,因為訪問變量時要通過MOVX指令間接尋址。


你可以將幾個對速度影響不大的變量,聲明為pdata或xdata,使用small模式應(yīng)該就可以編譯通過了。




順便問下,你的系統(tǒng)應(yīng)該擴展了外部RAM吧?77E58內(nèi)部只有1K XRAM。

6樓: >>參與討論
alphal
to00:系統(tǒng)擴展了64M的外部RAM,
  系統(tǒng)擴展了64M的外部RAM(DS1270),定義的外部變量占到了3-4K的空間,
開始的時候是使用的small模式編譯沒有問題,后來定義了一個指向外部RAM空間的指針變量,編譯就出現(xiàn)“地址空間溢出”的錯誤。
   將MEMORY MODEL改為compact模式后就通過了,那是不是如果定義了指向外部空間的指針就得使用compact模式?
   謝謝00。

7樓: >>參與討論
computer00
不是的,因為你的內(nèi)部RAM用光了,所以會報警。
“定義了指向外部空間的指針”,那是因為雖然指針指向的是外部RAM,但存儲這個地址的那個變量,還是被放在內(nèi)部RAM中的。


可以將這個變量加xdata來修飾,把存儲地址的變量,放在外部RAM中。如:

unsigned CHAR xdata * xdata p;

或者,將部分(至少2個字節(jié))其它原來聲明在內(nèi)部RAM中的變量,改到XRAM中。

例如,原來有unsigned CHAR x,y; 改成 unsigned CHAR xdata x,y;


一句話:就是減少內(nèi)部256字節(jié)RAM的使用,將部分放到XRAM中。
另外,我擔(dān)心你的堆?赡軙粔蛴玫模@么大的程序量,并且內(nèi)部RAM都被使用光了。

所以,應(yīng)該要將一些原來沒有加xdata的變量,加上xdata修飾,以減少內(nèi)部RAM的使用,
留給堆棧使用。


* - 本貼最后修改時間:2006-1-18 19:24:27 修改者:computer00

8樓: >>參與討論
qinxg
顯然是data(低128字節(jié))溢出了
把一些全局變量定義成idata即可.idata=data+高128字節(jié),keil會自己分配的.
一定用small模式,這樣局部變量都在低128字節(jié)里,速度最快!
把變量分類: 常用的用idata定義,不常用的用xdata定義

9樓: >>參與討論
RobertJ
只是執(zhí)行時間稍有不同罷了
可以將高頻率使用的變量定在bdata,idata,data,使用頻率不高的定在xdata

10樓: >>參與討論
northerns
冒個泡泡
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
前輩們,請指教一下!
關(guān)于指針和數(shù)組請教大家,幫我一下,急死我了,謝謝!
at89c51復(fù)位引腳直接接地可以嗎?
在校大專生的困惑!
提供嵌入式以太網(wǎng)開發(fā)套件,支持DHCP/UDP/ICMP/IP/ARP/ET....
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號