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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*** ERROR L107: ADDRESS SPACE OVERFLOW
) a' ?  f3 R7 a: h    SPACE:   XDATA   9 n1 p$ V( L) H6 [
    SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC
% b/ r" ?; @, }9 ~- ?4 L/ ]    LENGTH:  0008H3 t. l. C2 h) ~2 n& J4 M
*** ERROR L107: ADDRESS SPACE OVERFLOW; C- j! r! P" R7 q. Y
    SPACE:   XDATA   
8 d5 p+ j9 a$ Q, Z1 U    SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI0 N5 W7 w3 `4 K: z
    LENGTH:  0007H
0 E5 q+ W# H/ }& ~" n. K*** ERROR L107: ADDRESS SPACE OVERFLOW
/ E# u* l) r! k% B& Z    SPACE:   XDATA   1 I" H% l% ]" _8 W% G) C* f+ H
    SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI
  F) J% J  A4 Q4 i  U! i    LENGTH:  0006H
0 ~9 T. X0 Z+ B) Z
$ @" I7 w5 J% D" o% t5 D..........
1 R" }; Q0 T& q$ w# V' Z( X' f
* I8 e7 n8 b6 pProgram Size: data=18.7 xdata=8244 code=882335 e1 g7 t1 G7 }$ [  g0 x* R$ {
Target not created4 @2 J' t! r5 e+ O+ T7 R8 k! C

( k. B: r/ e. R, g$ K) r5 O" P: m# G! D% ]. v3 R7 u
百度之后发现,并不是溢出的问题
, t9 `; e- V6 j- z6 w' b7 K! T
5 S# v  a% n0 `9 W6 v原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。  % D5 l- G4 t  k4 f: \8 |* k
首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。
& D% f; p( w3 w5 V; z
- b3 ?: R4 C* K0 W- H6 `# M其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?
. f3 }- J& ]8 c5 n1 x. B' X+ ~) P: A
这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:
( }. K7 E% }4 F/ {" `2 P
% `/ g, W7 c9 Z5 F4 p& L1 e! KProgram Size: data=18.7 xdata=8244 code=88233$ `* h! s' s) E) K& Q6 u
就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)3 v' t9 f  J/ Z( U0 A

) y- b3 o  N: _' Z/ a: T最后找到,我宏定义了一个参数6 c8 {" `* h. p) G
: P% U4 g. H" V) Y! q4 @( U  y9 U( X
#define    USER_SIZE_NWK_RRECT                    2 5 F3 B0 a0 v( [/ }! d. V3 h1 e
6 c; P5 d2 I8 p/ Q: u
跟踪它, r9 e  D3 s5 z
& M# {1 }0 ~! J5 z7 V4 `/ _
    #if (USER_SIZE_NWK_RRECT)3 V7 D' @+ B2 X4 U
        NS_RRECT     MEMORY_RRECT[USER_SIZE_NWK_RRECT];2 ?- r, f5 C: Z3 n& v
然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示8 z0 H4 k4 d5 p1 z5 x' N+ N
& s3 }; ]9 z) b) q4 Q
结论就出来了:
+ o4 \- \) [+ }9 \8 E9 J0 }, y/ U4 Y4 R
1、Keil的错误报告不完整。3 i( G9 q' J* F1 P

+ L# h' j" ^6 `: Y& }( w: t' C2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。8 @0 D, x8 p/ b1 F8 g+ W6 [
: s0 X* j: l2 {

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2013-9-22 10:20 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:00
) K" C8 q1 c1 e9 f' U( \3 {% J你确定你的keil是破解的不是试用版的?
0 C/ l9 }/ R$ n% O6 g. k) q3 {+ F
破解的,用了挺长时间了,哈哈

该用户从未签到

4#
发表于 2013-9-22 10:57 | 只看该作者
myl593799546 发表于 2013-9-22 10:20+ d/ K/ O+ L/ @9 r4 I) {
破解的,用了挺长时间了,哈哈
. o% O! w: I( d. u
开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪!{:soso_e121:}

该用户从未签到

5#
 楼主| 发表于 2013-9-22 11:26 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:57- T( x( t2 L5 @# G& |$ `6 z- ]
开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪 ...

5 g9 a+ ?  ?( ~+ F  O哈哈,没有没有,互相学习,{:soso_e144:}

该用户从未签到

6#
发表于 2013-11-15 01:33 | 只看该作者
像这样问题,没有调用到的函数,你可以用一个; Z, L2 o8 K% k, V1 @: y
if(0)1 J! p- Y. h2 Y$ L
{
( q" {9 O, `' _2 \' B   放没有调用到函数;! V$ q3 [1 O9 }- O% w6 T6 M
}

该用户从未签到

7#
 楼主| 发表于 2013-11-15 09:20 | 只看该作者
天才小痴 发表于 2013-11-15 01:333 s2 M# u, ~0 Z6 \$ P9 j2 U: V% w
像这样问题,没有调用到的函数,你可以用一个
) f# u  Q9 C/ A; eif(0)
% p$ r2 E6 e$ j3 [) M: t: B{

9 _+ `0 Y" `2 w0 e" K恩,你这个方法很好,不过用#if 0应该更好吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-10 17:06 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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