ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT

问题:

在利用Keil C51编程时,发现程序逻辑上没有错误,但在连接时却出现了错误,如下:

View Code
  1 *** ERROR L107: ADDRESS SPACE OVERFLOW
  2 
  3     SPACE:   DATA   
  4 
  5     SEGMENT: ?DT?GMNS_3V4
  6 
  7     LENGTH: 0014H
  8 
  9 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 10 
 11     SYMBOL: RECEIVE_TIMER
 12 
 13     SEGMENT: ?DT?GMNS_3V4
 14 
 15 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 16 
 17     SYMBOL: DUAL_REC_BUF
 18 
 19     SEGMENT: ?DT?GMNS_3V4
 20 
 21 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 22 
 23     SYMBOL: LAST_SEND_TIME_COUNT
 24 
 25     SEGMENT: ?DT?GMNS_3V4
 26 
 27 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 28 
 29     SYMBOL: POW_STATUS
 30 
 31     SEGMENT: ?DT?GMNS_3V4
 32 
 33 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 34 
 35     SYMBOL: POW_STATE
 36 
 37     SEGMENT: ?DT?GMNS_3V4
 38 
 39 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 40 
 41     SYMBOL: GROUP_TEST
 42 
 43     SEGMENT: ?DT?GMNS_3V4
 44 
 45 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 46 
 47     SYMBOL: S_COUNT_P
 48 
 49     SEGMENT: ?DT?GMNS_3V4
 50 
 51 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 52 
 53     SYMBOL: R_COUNT_P
 54 
 55     SEGMENT: ?DT?GMNS_3V4
 56 
 57 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 58 
 59     SYMBOL: RING_JUDGE_STATEB1
 60 
 61     SEGMENT: ?DT?GMNS_3V4
 62 
 63 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 64 
 65     SYMBOL: RING_JUDGE_STATEB0
 66 
 67     SEGMENT: ?DT?GMNS_3V4
 68 
 69 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 70 
 71     SYMBOL: YAOXIN_CHECK_STATUS4
 72 
 73     SEGMENT: ?DT?GMNS_3V4
 74 
 75 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 76 
 77     SYMBOL: YAOXIN_CHECK_STATUS3
 78 
 79     SEGMENT: ?DT?GMNS_3V4
 80 
 81 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 82 
 83     SYMBOL: YAOXIN_CHECK_STATUS2
 84 
 85     SEGMENT: ?DT?GMNS_3V4
 86 
 87 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 88 
 89     SYMBOL: YAOXIN_CHECK_STATUS1
 90 
 91     SEGMENT: ?DT?GMNS_3V4
 92 
 93 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
 94 
 95     SYMBOL: YAOXIN_CHECK_STATUS0
 96 
 97     SEGMENT: ?DT?GMNS_3V4
 98 
 99 *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
100 
101     SYMBOL: YAO_XIN_COUNT
102 
103     SEGMENT: ?DT?GMNS_3V4

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

解决办法:

出现以上错误的原因主要是第一个原因,第一个原因导致了它下面所有错误,第一个原因是:

    ERROR L107: ADDRESS SPACE OVERFLOW

    SPACE:   DATA   

    SEGMENT: ?DT?GMNS_3V4

    LENGTH: 0014H

说明data空间已经不够用,原因是你可能有好多函数,而函数内部的局部变量又没有定义其空间,这种情况下,系统会将变量分配到你在Otions for Target 对话框里的设置的空间。如果你在下图所示中的 Memory Model 里设置成 Small:variables in DATA,则DATA空间很快便用完,导致data空间不够用。解决的办法有两种,一是通过更改Memory Model设置,可以设置成pdata或xdata,以便有足够大的空间,但这又带来新的问题,程序运行速度减慢,而且code代码也会加大,因为如果一个局部变量被存放在了xdata空间,汇编语言访问xdata空间的代码大小要比访问data空间的代码大,变量一旦很多,程序的代码也会逐渐增大;二是根据自己的要求设置变量的空间。所以这涉及到代码优化的问题,遇到具体问题时,在运行速度和代码大小之间取得适合自己的情况。

ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT - 匠人 - 匠人的木屋

可以将Memory Model中修改选项为Large。

 

 

原文地址:https://www.cnblogs.com/winnxm/p/2054315.html