找回密码
 注册
关于网站域名变更的通知
查看: 6134|回复: 6
打印 上一主题 下一主题

KEIL编译提示OVERFLOWED溢出的解决方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-9-7 14:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
*** ERROR L107: ADDRESS SPACE OVERFLOW
  a4 ?/ E) I- J. ^& i$ P    SPACE:   XDATA   
! |3 [, q; o& x8 I' i/ J    SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC
& D. Z6 Y* i+ q- u+ a- g/ k    LENGTH:  0008H
. i# Z; P+ d( R" P+ P*** ERROR L107: ADDRESS SPACE OVERFLOW& f  `) v2 z# H& I
    SPACE:   XDATA   
: u/ e2 t# {* k1 H    SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI3 w/ e2 P- l7 i, K0 g6 X
    LENGTH:  0007H) D  v. k; J8 N9 Z- ?
*** ERROR L107: ADDRESS SPACE OVERFLOW9 h' e% ?+ `* T0 I! w$ z
    SPACE:   XDATA   
/ H6 o# @9 n, B, i) k  p4 j    SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI
( t' r5 q+ Y. [) t! x    LENGTH:  0006H
8 R) H) J2 ^( j+ M# a/ T6 s3 _% G0 Y: P2 y* w5 X: r& h& ]
........... B# w$ O, n$ _
6 z! ]& J) M* {" N  @# y) e9 A
Program Size: data=18.7 xdata=8244 code=88233
! A  C6 Y8 b' A6 M! \) t+ ~Target not created7 D+ x, L) M1 R( @3 r

5 ]& l1 A' Q0 f( s  ~+ Q
* s% Z( O7 x5 O1 L3 P& |! Y. [8 M百度之后发现,并不是溢出的问题0 [  A& G/ ~4 ?  J+ p
+ o+ M% }6 z+ Q2 P, C
原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。  , L4 t- p" E, H
首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。
. g+ S7 R8 ]* w" h8 K
8 \9 t* @" {( c/ b其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?
+ o& J. K; ^3 V" s2 d8 y. C8 c: r0 l" X% _" z0 z
这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:
2 d: S" D% C4 s
" U$ V7 b' [4 X6 {$ HProgram Size: data=18.7 xdata=8244 code=88233
5 J; D# U0 g- e就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)8 H& |" w! p7 h8 c0 L0 H( C* A- Y

! l& ]. E/ a8 K5 j$ O" C5 e' N5 c) K7 W最后找到,我宏定义了一个参数5 e( O* s/ j0 t; o! v

- K4 T. R& D5 Q% ~6 v+ e6 q# _3 H#define    USER_SIZE_NWK_RRECT                    2 ( c) h9 m$ j: m, B- m* r

" K  d6 q; Q6 C# r0 f# w: ~跟踪它
6 V: _- ~8 k! _( N* l
- o8 G% o5 {0 u! c4 V    #if (USER_SIZE_NWK_RRECT)# ?4 ?5 K* O/ |0 a2 D  w5 c
        NS_RRECT     MEMORY_RRECT[USER_SIZE_NWK_RRECT];
5 D( ^3 Y0 x2 u( s  V' A7 _然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示( Q" P" N: W, ~* q! C! ]

2 N& I" g" K7 m' M/ G结论就出来了:- h6 `! E0 q) o# |: n5 Z; ~% h: S

) Y  ^" }* {( |6 e4 U$ |1、Keil的错误报告不完整。
9 R9 f+ D: W+ z& h* ^9 i8 ^7 @1 _' }
2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。) w* r: O4 e6 H( T& ?1 t

/ w4 v/ Y, O0 o' Y

该用户从未签到

7#
 楼主| 发表于 2013-11-15 09:20 | 只看该作者
天才小痴 发表于 2013-11-15 01:33& f* N$ R/ U/ D3 n0 A$ P
像这样问题,没有调用到的函数,你可以用一个
& S4 K' z, _( k& D( |, wif(0)! W2 B# @' u/ a( \8 g- Q4 g0 G
{

/ ~( [8 N' ]- e4 |3 Y恩,你这个方法很好,不过用#if 0应该更好吧

该用户从未签到

6#
发表于 2013-11-15 01:33 | 只看该作者
像这样问题,没有调用到的函数,你可以用一个' k. v4 r& P7 P5 M% D, X
if(0)
' ~9 n/ p4 J8 h% Q5 J( N{
& M. C2 ?, G; K+ ~9 M; A7 M   放没有调用到函数;# p+ s, b% x0 `* {& u" }3 z
}

该用户从未签到

5#
 楼主| 发表于 2013-9-22 11:26 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:57
2 h8 `: n* ]% H* b) i开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪 ...
  ]# Q5 n* {, k% j3 t. X
哈哈,没有没有,互相学习,{:soso_e144:}

该用户从未签到

4#
发表于 2013-9-22 10:57 | 只看该作者
myl593799546 发表于 2013-9-22 10:203 `5 s/ E9 v& ~
破解的,用了挺长时间了,哈哈
! `$ o4 X. Z% t1 C8 J0 K2 Q( @
开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪!{:soso_e121:}

该用户从未签到

3#
 楼主| 发表于 2013-9-22 10:20 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:00! l. ]7 U  g1 l( J2 q- g
你确定你的keil是破解的不是试用版的?

3 r' ]0 M. `( p, H8 f破解的,用了挺长时间了,哈哈

该用户从未签到

2#
发表于 2013-9-22 10:00 | 只看该作者
你确定你的keil是破解的不是试用版的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 15:42 , Processed in 0.171875 second(s), 25 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表