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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*** ERROR L107: ADDRESS SPACE OVERFLOW$ G# V5 R4 ?' p6 p: S) K
    SPACE:   XDATA   
8 M: H3 s# a! \+ w' C2 M' a7 \    SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC( n; _& b+ U, z
    LENGTH:  0008H. q5 A  K9 X% K; N0 K# _# |; v
*** ERROR L107: ADDRESS SPACE OVERFLOW
6 `" ?6 R0 i: H' W3 |    SPACE:   XDATA   
3 ]8 M3 @0 l0 k+ [( g, o  C8 S5 M    SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI6 b8 B' A% r+ V' A6 }. G! k) ?& q% T% |
    LENGTH:  0007H
4 J# Z8 t4 P+ |" Q+ t+ T& H*** ERROR L107: ADDRESS SPACE OVERFLOW
) l4 r/ @$ Z* m# g9 {5 j) t3 @5 F    SPACE:   XDATA   & e+ J) @% o9 v3 I* M& v0 q
    SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI2 M' b7 O  C7 N# S9 }
    LENGTH:  0006H
4 j/ [+ K6 L) V: ~. T' C9 K" F+ Q8 G; _
..........
7 D4 Y4 G$ Y& t/ {4 U% q/ K3 c0 `+ {  j, Z: A
Program Size: data=18.7 xdata=8244 code=88233
7 N5 G, [, j2 [9 m3 XTarget not created
* y2 y2 i" t2 N. a7 B& c" H
) h6 w6 W; M/ G5 Y$ ]$ ?
4 W; @0 c. L" l* R; ^$ U  j百度之后发现,并不是溢出的问题+ C- B" U; G  }  o7 Z

4 |" |. E5 \' [) C原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。  / o/ ?+ L( S/ K$ a6 e5 ]
首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。
$ Z9 {' g6 i2 i" c/ x# [
( ]# _# H* m( I- o其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?6 ^+ }8 v- \' K

  g2 k% o. W: {7 Y+ b: e这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:! ^6 n, k4 ]" s! A7 b

+ T* W( z3 W. c7 ^' iProgram Size: data=18.7 xdata=8244 code=882339 u1 h2 r7 ~, t% U1 t# J
就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)
0 x% ]! O4 E3 ]( c. c+ s. j) |3 o2 U4 @7 C6 ^! U" u
最后找到,我宏定义了一个参数9 C( z+ r& c0 n6 v

+ s9 n! x! _- d#define    USER_SIZE_NWK_RRECT                    2 ( z# l1 e$ K3 r3 V' r

- D+ P; p5 `+ R$ p+ ~跟踪它) v( a* N$ p  W  `) X: x
$ m& I' c) G' o7 v/ N% V
    #if (USER_SIZE_NWK_RRECT)% H5 N  @+ D  S4 c! @/ t! K$ K. k
        NS_RRECT     MEMORY_RRECT[USER_SIZE_NWK_RRECT];; s# k4 z- V3 j* F( D
然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示
5 S1 g" g4 Q# f4 J" K* |+ Y$ b7 {0 X* Y" e
结论就出来了:' ^* ~, R1 P) p- O; @
' B8 V' C; S; `$ ?, x
1、Keil的错误报告不完整。( Q* p/ W' q5 E, b0 O- `. t* A5 j+ ^  e

0 ~5 _6 O7 I# c- P* Y5 Q2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。8 B! Z5 }3 n; f
/ d  g7 Y0 [! E3 X, i; m

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2013-9-22 10:20 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:00# n; J* P' ]# b& ^9 B+ u! @
你确定你的keil是破解的不是试用版的?
. ?8 k7 D% R# e! p% t' N
破解的,用了挺长时间了,哈哈

该用户从未签到

4#
发表于 2013-9-22 10:57 | 只看该作者
myl593799546 发表于 2013-9-22 10:20% g' g8 k0 F' ^/ t/ ^$ B# i
破解的,用了挺长时间了,哈哈

, U, _9 M/ }* Q; m: e% X) A开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪!{:soso_e121:}

该用户从未签到

5#
 楼主| 发表于 2013-9-22 11:26 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:57" H9 ?0 p' D* }
开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪 ...
- g* J$ ]4 w! K& N6 ~& {
哈哈,没有没有,互相学习,{:soso_e144:}

该用户从未签到

6#
发表于 2013-11-15 01:33 | 只看该作者
像这样问题,没有调用到的函数,你可以用一个
( m: A: `% _# Nif(0)
* q1 B3 V+ o. X. L4 G1 S4 E1 w{# F% J+ \# y+ l
   放没有调用到函数;$ c* Y1 K# {$ e& K" E
}

该用户从未签到

7#
 楼主| 发表于 2013-11-15 09:20 | 只看该作者
天才小痴 发表于 2013-11-15 01:33$ d3 a! O# A+ g3 ?
像这样问题,没有调用到的函数,你可以用一个
; z& T- J# C' {# Zif(0)2 \( E4 q$ p) [4 c$ k! [& v
{
4 c1 f" D- ]( s: \" \  t
恩,你这个方法很好,不过用#if 0应该更好吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-20 14:08 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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