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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*** ERROR L107: ADDRESS SPACE OVERFLOW
$ A0 c0 ]3 c, Z    SPACE:   XDATA   9 ^5 L! t: l$ ]; Z2 j( V2 t
    SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC
& M+ R( f) S, F    LENGTH:  0008H
; f" X2 A- O$ m% q+ }2 d3 m9 z8 b*** ERROR L107: ADDRESS SPACE OVERFLOW+ `$ q$ q1 S" {# Y
    SPACE:   XDATA   
  L) p, |( ^% l/ C- w6 t8 O    SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI* {4 K3 Q* y- i( ~
    LENGTH:  0007H
' j- W8 ^9 K4 [: [( X*** ERROR L107: ADDRESS SPACE OVERFLOW+ P7 Y6 P2 m* N/ x
    SPACE:   XDATA     P2 S( i" F2 W! w
    SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI6 u0 f8 B& `. Z$ W9 o2 q+ @) o  `
    LENGTH:  0006H
* K2 B9 z9 d# y: o2 `- a1 J
4 z' `; d6 v2 }; m..........
7 X9 R* ]5 }( S
$ S( E( f* z7 u4 C- `Program Size: data=18.7 xdata=8244 code=88233
; l4 |9 \; e! A9 W. Q9 W: vTarget not created
) `8 ]/ d! o8 R, G. b& a
, O: }6 p& b% i  U( P$ E" o' r  N
# N& {; {8 J9 T* z, j百度之后发现,并不是溢出的问题
3 O" y3 d2 k$ s% T/ b& R+ N0 e) u- T  U- e0 c" i
原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。  
+ i% I5 I- K' ?! }首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。
( ~$ p) `7 ~0 ?% Q1 l! X7 q
! D; V8 p- u& |4 W2 h1 H3 b" g其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?% g& J4 r' w$ t1 w5 w. \% F- P1 A+ j5 I
- M% m9 T; x. ?9 A
这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:
( K  G$ v6 H7 _5 U( g% x) o0 ~
" g( W4 U4 F% w  [& S* w# i1 W/ |Program Size: data=18.7 xdata=8244 code=88233
- R+ |3 F% g5 T& z! b就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)
' s2 q9 a# ]  _" F2 \' y* {' w& j  Z7 ]8 ?+ B8 [. z: {% Y: d
最后找到,我宏定义了一个参数) {, b; n: h  d
9 h1 D7 S* h  |' ?5 G9 u
#define    USER_SIZE_NWK_RRECT                    2 ' L8 N0 @7 E0 Y% d) w: Q0 e1 E3 I
/ O0 M* h3 @1 Q) j3 `
跟踪它; V' K2 R2 d+ v$ ~0 H0 U* B
/ H0 V2 c8 E7 y/ L
    #if (USER_SIZE_NWK_RRECT)
0 J- r: [" p$ u6 x% v, `        NS_RRECT     MEMORY_RRECT[USER_SIZE_NWK_RRECT];9 c) D% G4 O) z7 x: e5 L
然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示
% ^9 F: s% A! c( B
) w- D+ K4 {. s; |结论就出来了:( H5 y: ~2 T; O6 d0 H

* `5 a: u3 j* c8 {9 G( H1、Keil的错误报告不完整。
3 i5 D* j) I9 H3 y: t5 ?0 B
3 {2 w/ ]; B/ ?9 q" F2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。7 B1 F0 A, r: _6 `3 ?& B6 O
6 G# O3 H/ ^* W) p1 s1 c5 F

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2013-9-22 10:20 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:007 Q% ^; |) p4 g0 z- b$ @! R0 o# C8 X
你确定你的keil是破解的不是试用版的?

5 z3 Q% `1 x$ [* B7 h8 @破解的,用了挺长时间了,哈哈

该用户从未签到

4#
发表于 2013-9-22 10:57 | 只看该作者
myl593799546 发表于 2013-9-22 10:20
, e7 \: S1 C! i破解的,用了挺长时间了,哈哈

$ y# d" `* j0 Z" r开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪!{:soso_e121:}

该用户从未签到

5#
 楼主| 发表于 2013-9-22 11:26 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:57
+ S; A! r  i' v开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪 ...
, T' ^9 o. c2 Z0 A, ~$ R
哈哈,没有没有,互相学习,{:soso_e144:}

该用户从未签到

6#
发表于 2013-11-15 01:33 | 只看该作者
像这样问题,没有调用到的函数,你可以用一个
6 w& @3 G4 B7 Q$ J3 V$ ^: ^" I" Xif(0)6 I) s. i: ?3 A4 M3 D
{
9 A/ X  u( Q8 ~   放没有调用到函数;
/ A- b3 L6 ?. B  ]* w% b}

该用户从未签到

7#
 楼主| 发表于 2013-11-15 09:20 | 只看该作者
天才小痴 发表于 2013-11-15 01:33
- A! ], a& u4 H8 b! N( {8 [7 j$ I9 o像这样问题,没有调用到的函数,你可以用一个
2 H6 V4 p4 ^, `9 bif(0)( s0 }" S; @8 ?. b
{

3 r  ^/ e* _) K% x恩,你这个方法很好,不过用#if 0应该更好吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-16 09:06 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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