|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
Keil問題求助!? |
| 作者:meng730507 欄目:單片機(jī) |
這個(gè)空間是根據(jù)你的程序執(zhí)行過程中的最大堆棧深度來定的。 |
| 2樓: | >>參與討論 |
| 作者: qinyp 于 2005/4/25 17:44:00 發(fā)布:
把一些變量定義到XDATA中 |
|
| 3樓: | >>參與討論 |
| 作者: sz338 于 2005/4/25 17:50:00 發(fā)布:
謝謝,那我嘗試將IDATA數(shù)據(jù)變量再減小看看。 |
|
| 4樓: | >>參與討論 |
| 作者: sz338 于 2005/4/27 17:42:00 發(fā)布:
沒轍了。 *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GROUP_ LENGTH: 005FH Program Size: data=227.5 xdata=109 code=10580 Target not created 減到227.5byte了,還是不行!keil編譯后如何查看堆棧分配情況? |
|
| 5樓: | >>參與討論 |
| 作者: sz338 于 2005/4/27 17:43:00 發(fā)布:
是不是還要再減少? |
|
| 6樓: | >>參與討論 |
| 作者: sz338 于 2005/4/28 11:17:00 發(fā)布:
先謝謝啦!! 1. 項(xiàng)目編譯結(jié)果NG. 系統(tǒng)設(shè)置: MCU:W78E516B MEMORY MODEL:Small:variables in DATA LINK MAP OF MODULE: lv51.omf (DGTPARSER) TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" DATA 0008H 0010H UNIT ?DT?DGTPARSER DATA 0018H 0008H UNIT ?DT?LV24001 BIT 0020H.0 0001H.1 UNIT _BIT_GROUP_ BIT 0021H.1 0000H.3 UNIT ?BI?KEY BIT 0021H.4 0000H.1 UNIT ?BI?MAIN 0021H.5 0000H.3 *** GAP *** DATA 0022H 0001H UNIT ?DT?KEY IDATA 0023H 001EH UNIT ?ID?LV24001 IDATA 0041H 0001H UNIT ?STACK * * * * * * * X D A T A M E M O R Y * * * * * * * XDATA 0000H 0056H UNIT ?XD?LV24001 XDATA 0056H 003AH UNIT _XDATA_GROUP_ *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GROUP_ LENGTH: 005FH Program Size: data=160.5 xdata=176 code=10620 Target not created 2. 項(xiàng)目編譯結(jié)果OK. 系統(tǒng)設(shè)置: MCU:LPC935 MEMORY MODEL:Large:variables in XDATA LINK MAP OF MODULE: lv51 (DGTPARSER) TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" REG 0008H 0008H ABSOLUTE "REG BANK 1" DATA 0010H 0005H UNIT _DATA_GROUP_ 0015H 000BH *** GAP *** BIT 0020H.0 0001H.1 UNIT _BIT_GROUP_ BIT 0021H.1 0000H.2 UNIT ?BI?LPC900 0021H.3 0000H.5 *** GAP *** IDATA 0022H 001EH UNIT ?ID?LV24001 IDATA 0040H 0001H UNIT ?STACK * * * * * * * X D A T A M E M O R Y * * * * * * * XDATA 0000H 008AH UNIT _XDATA_GROUP_ XDATA 008AH 0060H UNIT ?XD?LV24001  |
|
| 7樓: | >>參與討論 |
| 作者: ybl2008 于 2005/4/28 14:31:00 發(fā)布:
對不起,現(xiàn)在我水平還有限,想幫沒辦法,只有以后看了 |
|
| 8樓: | >>參與討論 |
| 作者: readheart 于 2005/4/28 21:01:00 發(fā)布:
好像你第二個(gè)工程是分成兩個(gè)BANK的吧 對付這種情況我一般是吧聲明成data的改成idata,一般都可以過,如果還不行只好改成xdata了。 |
|
| 9樓: | >>參與討論 |
| 作者: sz338 于 2005/4/29 10:38:00 發(fā)布:
好像你第二個(gè)工程是分成兩個(gè)BANK的吧! 沒有吧!?其實(shí)我的源文件幾乎是一樣的.只是在對項(xiàng)目編譯時(shí)進(jìn)行了一些不同的設(shè)置!我只是將第二個(gè)項(xiàng)目文件(使用MCU:LPC935編譯OK的)更換成W78E516, 區(qū)別是:1.MCU:W78E516 MEMORY MODEL:Small:variables in DATA 2.MCU:LPC935 MEMORY MODEL:Large:variables in XDATA;因?yàn)?a target="_blank" href="http://m.58mhw.cn/stock-ic/W78E516.html">W78E516的AUX-RAM(即存儲(chǔ)XDATA數(shù)據(jù)類型的存儲(chǔ)器)只有256-byte,而MCU:LPC935(AUX-RAM:512-byte),所以我就將MEMORY MODEL設(shè)置成Small:variables in DATA,并且修改了項(xiàng)目中部分變量存儲(chǔ)類型的聲明(由DATA-->XDATA),結(jié)果就出現(xiàn)編譯不能通過的情況!DATA超出地址存儲(chǔ)空間. |
|
| 10樓: | >>參與討論 |
| 作者: sz338 于 2005/4/29 10:57:00 發(fā)布:
Keil Technical SUPPORT網(wǎng)站介紹! Keil Technical SUPPORT網(wǎng)站介紹,出現(xiàn)下列錯(cuò)誤的分析和解決方法: BL51: ERROR 107 (ADDRESS SPACE OVERFLOW) -------------------------------------------------------------------------------- Information in this SUPPORT solution applies to: C51 Version 5.50 C51 Version 6.00 Beta C51 Version 6.00 -------------------------------------------------------------------------------- SYMPTOMS I receive the following LINK.html">LINKer error when I compile and LINK.html">LINK my program: *** ERROR 107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GROUP_ LENGTH: 0014H CAUSE This error message is generated when there isn't enough MEMORY available for all the code and/or data segments in your program. The following SAMPLE program generates this error (when compiled and LINK.html">LINKed). unsigned CHAR data buffer2 [101]; void main (void) { LONG a, b, c, d, f; a = b = c = d = f = 0; // Avoid Compiler Warnings } RESOLUTION The best way to resolve this type of problem is to find out what's consuming all the MEMORY. Look in the map (*.M51) file and locate the LINK.html">LINK map. It appears as follows: LINK MAP OF MODULE: C:\TEMP\ASDF (ASDFASDF) TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" DATA 0008H 0065H UNIT ?DT?ASDFASDF IDATA 006DH 0001H UNIT ?STACK The error message... *** ERROR 107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GROUP_ LENGTH: 0014H specifies that a 14h byte LONG segment named _DATA_GROUP_ can't fit in the remaining DATA space. Referring to the LINK.html">LINK map, the DATA space starts at 8h and has a SINGLE segment ?DT?ASDFASDF that occupies 65h bytes. Since the DATA space is 80h bytes max., we can calculate the space remaining as 80h - (8h+65h) = 80h - 6Eh = 12h. So, there are ONLY 12h bytes left in the DATA space. Since the _DATA_GROUP_ is 14h bytes LONG, it can't fit in the remaining 12h bytes. If the MEMORY space is DATA, you should look for the largest DATA segments. If they are static or GLOBAL buffers, you may want to consider moving them to XDATA MEMORY to conserve the DATA space. 通過計(jì)算式80h - (8h+65h) = 80h - 6Eh = 12h(剩余有效空間).不能容納14-bytes LONG的數(shù)據(jù),所以就出現(xiàn)上面的錯(cuò)誤警告! 而看我的項(xiàng)目map文件(如下表).倒像是XDATA超出了?? 其中: 1.DATA SIZE:10H(DGTPARSER)+08H(LV24001)+01H(KEY)+1EH(LV24001)=37H 2.XDARA SIZE:起始地址00H;大。56H(LV24001),不過 XDATA 0056H 003AH UNIT _XDATA_GROUP_代表的意思是什么就沒太弄明白!? LINK MAP OF MODULE: lv51.omf (DGTPARSER) TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" DATA 0008H 0010H UNIT ?DT?DGTPARSER DATA 0018H 0008H UNIT ?DT?LV24001 BIT 0020H.0 0001H.1 UNIT _BIT_GROUP_ BIT 0021H.1 0000H.3 UNIT ?BI?KEY BIT 0021H.4 0000H.1 UNIT ?BI?MAIN 0021H.5 0000H.3 *** GAP *** DATA 0022H 0001H UNIT ?DT?KEY IDATA 0023H 001EH UNIT ?ID?LV24001 IDATA 0041H 0001H UNIT ?STACK * * * * * * * X D A T A M E M O R Y * * * * * * * XDATA 0000H 0056H UNIT ?XD?LV24001 XDATA 0056H 003AH UNIT _XDATA_GROUP_ |
|
| 11樓: | >>參與討論 |
| 作者: mabaoqiu 于 2005/4/29 11:56:00 發(fā)布:
用compact模式,試一試 |
|
| 12樓: | >>參與討論 |
| 作者: sz338 于 2005/4/30 11:58:00 發(fā)布:
用compact模式試一試!! 用compact模式: 編譯結(jié)果如下: Program Size: data=45.5 xdata=285 code=11606 creating hex file from "lv51.omf"... "lv51.omf" - 0 Error(s), 0 Warning(s). 用Large模式: 編譯結(jié)果如下: Program Size: data=45.5 xdata=281 code=12233 creating hex file from "lv51.omf"... "lv51.omf" - 0 Error(s), 0 Warning(s). 編譯算通過了,不過 兩種模式編譯,其中的XDATA都大于256byte,而W78E516的XDATA大小才256byte.怎么編譯結(jié)果沒提示錯(cuò)誤!? |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |