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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*** ERROR L107: ADDRESS SPACE OVERFLOW
/ Z, @! ^) f9 ]& w; m  Y    SPACE:   XDATA   
- Z$ J4 o0 Y, j* p5 s7 r    SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC) W  B3 @+ N6 s5 r& T5 y4 P8 T3 j7 g
    LENGTH:  0008H. h$ G0 H, Y* B/ ]
*** ERROR L107: ADDRESS SPACE OVERFLOW9 ^; B* U# X7 ~" N; O
    SPACE:   XDATA   
, C) m0 p! h8 u  g    SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI
2 c% r) c, G6 A; N& z, r% S    LENGTH:  0007H- }6 |- x% D1 A& r' U# ^. a
*** ERROR L107: ADDRESS SPACE OVERFLOW
: B) E2 M$ ^! l+ f    SPACE:   XDATA   / \  Q) B' K1 H, s, V
    SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI3 i( B  p2 I) V- j* s
    LENGTH:  0006H
+ P& h) q! K  L/ s6 K5 @
" x0 y& p# F$ A  U& H' x& I/ d..........9 R, G4 {! N% b5 y" K

" o% V2 K* T) I& iProgram Size: data=18.7 xdata=8244 code=882335 u0 ?& _8 c/ |$ H/ Y0 X! L1 q
Target not created3 q" u- O6 U- d" B5 g
8 I1 F) P) k& p& j. X8 K

. b: C- i" G% |" @" G$ L百度之后发现,并不是溢出的问题
% G4 C6 o9 @+ [
2 [! i4 f/ X8 M4 R6 j原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。  3 v8 Y& l& t$ |! t5 v2 M
首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。
7 S" X1 ^# G$ T0 B+ u* X  w4 c" p7 J1 Y3 o8 J4 p2 }* t
其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?; |1 g$ {: P! l( I, ^, L$ A, k$ O
4 k) n3 W% D6 _
这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:$ j1 u* Y  x% W' h

' ]$ z: L4 L/ J1 G+ sProgram Size: data=18.7 xdata=8244 code=88233
2 P2 x8 M- d8 y  i' a+ j就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)6 z2 ~* Q! r% O1 `8 z
1 b0 t: [1 U: w' g$ B( ]6 ^
最后找到,我宏定义了一个参数
; q# S) K! s7 v* k* c. g1 {3 n; i+ A, x9 g% N
#define    USER_SIZE_NWK_RRECT                    2 ! ]( B2 J$ c3 }8 R" j: P: P  y
  U& k. v; C$ Y  h% g# q
跟踪它
& b4 d  f' Z, S/ d  k$ O- M& T
3 W" z7 d: [6 E  L( Q    #if (USER_SIZE_NWK_RRECT)
0 F% k9 J7 a/ h# O        NS_RRECT     MEMORY_RRECT[USER_SIZE_NWK_RRECT];
" ]0 i3 {& V  }: d; R* k然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示% r' P; g+ u- t

$ I- r' \) |7 g% g/ i6 p结论就出来了:- O- k3 f3 I* D& ^  M& g
" h5 v8 z& Y- L8 K
1、Keil的错误报告不完整。! f$ x) a: k' N' a' G4 N
( V  t. h3 J# M4 ~( q- H* X" _  s
2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。
& M; H0 j- H2 L$ z5 H1 S) a
9 {4 D& l; A- b6 ~; v" r8 v

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2013-9-22 10:20 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:00
% Q+ r4 N5 h, c/ ^/ e' R# }你确定你的keil是破解的不是试用版的?

  x4 y* M/ Q9 h: j+ D+ a' _/ p! I; }  x破解的,用了挺长时间了,哈哈

该用户从未签到

4#
发表于 2013-9-22 10:57 | 只看该作者
myl593799546 发表于 2013-9-22 10:20) E/ g" C) r0 W! L
破解的,用了挺长时间了,哈哈

, `) N: O; F/ |* P开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪!{:soso_e121:}

该用户从未签到

5#
 楼主| 发表于 2013-9-22 11:26 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:578 u. z0 M: U! S4 S# K: f- _
开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪 ...
. ?% e- X- ?3 g7 W+ t- ^! `0 @; p
哈哈,没有没有,互相学习,{:soso_e144:}

该用户从未签到

6#
发表于 2013-11-15 01:33 | 只看该作者
像这样问题,没有调用到的函数,你可以用一个6 R7 h- z5 Z9 v  s" Z
if(0)
7 S7 K, @0 k" a4 }{, n% Z" k7 j8 |6 l2 C1 Z) m
   放没有调用到函数;5 @# ^4 o1 a: J. v/ i2 q
}

该用户从未签到

7#
 楼主| 发表于 2013-11-15 09:20 | 只看该作者
天才小痴 发表于 2013-11-15 01:33
% Z0 d. X; y" D2 `! s) O) e像这样问题,没有调用到的函数,你可以用一个; M. Q# L0 u+ Z5 b$ e
if(0)/ |7 |0 }% h+ g, ~4 D
{

8 w, k$ L" {5 z$ w3 A# }恩,你这个方法很好,不过用#if 0应该更好吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-4 11:43 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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