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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*** ERROR L107: ADDRESS SPACE OVERFLOW
9 D& t! I6 N; `. a# e5 V( n    SPACE:   XDATA   9 r* O5 @3 Y" o/ G6 |# H# W
    SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC
6 a8 |/ x& J% T7 p7 C2 x3 L    LENGTH:  0008H8 ?* `( m! d, C1 q2 a$ f
*** ERROR L107: ADDRESS SPACE OVERFLOW2 {1 I3 M+ P# f" J
    SPACE:   XDATA   1 c- N2 A0 L1 }
    SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI
# c) a* e4 f5 @, Q6 y+ r    LENGTH:  0007H: {( W+ T! }' I, U
*** ERROR L107: ADDRESS SPACE OVERFLOW
- _# y, H' q  U0 r    SPACE:   XDATA   : u  R& i. M$ F& m( ~$ s* [
    SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI" E! m  N8 l& E9 r) O* |8 c! j0 W
    LENGTH:  0006H
1 ^, `& u& R" z4 K" N3 F/ }
# f2 A# _9 M1 Z7 E/ i$ _..........
9 H; ?+ v: g" M! H- x
1 z' t: ]6 c1 h% X0 |7 }0 {Program Size: data=18.7 xdata=8244 code=88233
4 Q& z( Z& C9 {( l' H7 H$ e; jTarget not created5 W5 ~  P0 |5 C( f9 v/ n  W* l
3 _6 p' Z) j$ h2 [* Z3 H, A2 G

2 F7 H9 o) k6 u6 s- j百度之后发现,并不是溢出的问题- X: M: g$ p7 O1 Z
. u1 S( o& \5 [5 N* d: N+ o! }
原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。  % J; ^2 s" u! Y; S, y( t& f* l- G6 M
首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。% W: e7 I5 _- Y" y
1 l' A) p6 X# w
其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?
% R5 a+ T' E) @
& {  s# ?" m/ q% ]9 a7 M. P: E这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:1 {7 _& W6 I2 r% k. Q

4 Z2 u, x7 ~4 S$ U6 c! m& |Program Size: data=18.7 xdata=8244 code=88233* K# P4 I) n+ ]5 g: R4 E
就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)
2 h) D, x% }$ S" d
! y% [+ x  u$ V- W8 f( r最后找到,我宏定义了一个参数
5 Q  M4 {; R$ ?! o+ L% r6 d6 z$ q; n* L9 p2 O' U: s3 _, Y
#define    USER_SIZE_NWK_RRECT                    2 ; g) a+ h7 b7 v

2 M- ?  N9 `  W" ]跟踪它
" J6 D. T( ~  L" O& S& G5 H2 X
7 l1 u* e2 H. v( z+ ?" w    #if (USER_SIZE_NWK_RRECT)9 X  X$ m3 l0 a8 U7 Y
        NS_RRECT     MEMORY_RRECT[USER_SIZE_NWK_RRECT];
" Q: E. b& s7 X5 g9 P% }然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示
& O6 M* C& G# E; ]8 G+ i6 j. i9 b* C) [4 V
结论就出来了:
3 t1 i& `* C+ X( p. w5 f
5 p) n4 L) w& @) L1、Keil的错误报告不完整。
6 g1 |! m0 {& u) F8 q& i/ y; X+ T& x
2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。
! ^9 `! w9 O* J1 p6 c! r) b6 b  u: A" v( L

该用户从未签到

2#
发表于 2013-9-22 10:00 | 只看该作者
你确定你的keil是破解的不是试用版的?

该用户从未签到

3#
 楼主| 发表于 2013-9-22 10:20 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:009 h) K! f4 r! r4 w# i: t! l
你确定你的keil是破解的不是试用版的?
% ?; v, C% @4 w5 y
破解的,用了挺长时间了,哈哈

该用户从未签到

4#
发表于 2013-9-22 10:57 | 只看该作者
myl593799546 发表于 2013-9-22 10:20
& c/ L* H1 F7 J% ?9 H9 J破解的,用了挺长时间了,哈哈
& h  n) f4 v/ `! `+ e  S" T
开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪!{:soso_e121:}

该用户从未签到

5#
 楼主| 发表于 2013-9-22 11:26 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:571 |" u  H( J( `5 p8 g% X2 S) _
开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪 ...

3 D1 X2 K8 H! ]2 {3 c! o! `5 ~哈哈,没有没有,互相学习,{:soso_e144:}

该用户从未签到

6#
发表于 2013-11-15 01:33 | 只看该作者
像这样问题,没有调用到的函数,你可以用一个1 [* Y  s% D% @; D9 r$ l
if(0)7 _  K& b4 s. W
{
6 E) N" c8 N) Z! u  ~# H) _. Q   放没有调用到函数;! o4 Q' u" X; c" l* K
}

该用户从未签到

7#
 楼主| 发表于 2013-11-15 09:20 | 只看该作者
天才小痴 发表于 2013-11-15 01:335 `* B1 V7 Q; K8 {0 ?+ }) Y
像这样问题,没有调用到的函数,你可以用一个
7 P* F9 s! r. F9 Uif(0)
* c4 c. z2 i# s( e9 e1 B9 \- q{
9 O3 g: x0 M. V- N1 l4 t
恩,你这个方法很好,不过用#if 0应该更好吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-28 14:59 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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