找回密码
 注册
查看: 6004|回复: 6
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*** ERROR L107: ADDRESS SPACE OVERFLOW" {# P- I: U7 }1 l% C* B! g  v
    SPACE:   XDATA   
' |3 f2 N$ c6 c0 f7 z. t    SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC
" B* B6 q! z5 h/ d( Z% Z6 c    LENGTH:  0008H
4 l! S4 ?6 E! Y6 Y3 p/ }*** ERROR L107: ADDRESS SPACE OVERFLOW
  C& t# @5 J% R2 n    SPACE:   XDATA   
' b0 B2 Y. @' b7 |1 N" c4 {+ P' I8 f' R    SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI
5 J. J; _4 K  C5 p8 \8 d) i- S8 h    LENGTH:  0007H
  ~4 s4 u# w, |; q*** ERROR L107: ADDRESS SPACE OVERFLOW
' T. w( `8 {7 Y; H" e. N    SPACE:   XDATA   
: e8 @1 e6 D2 a5 J! e2 S    SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI
6 `' Q) T3 V. v( b! R, O    LENGTH:  0006H
6 G2 g) M8 Z" A  C6 P) W- n* a
# r6 F1 W% s* p.........." h  Q1 l9 ~8 H3 ], [

1 \0 d0 M  b2 z/ G; K+ IProgram Size: data=18.7 xdata=8244 code=88233: H% c& ?  G4 h
Target not created6 S- v% O0 V3 V# H6 g7 n0 ?+ l  w
, d: z+ P5 v. a3 _

0 c, s1 l& @) L9 {6 _7 C2 ]7 U百度之后发现,并不是溢出的问题0 i4 W' V3 B; M
3 b8 T7 Z- s! B9 _% R5 V# N
原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。  
2 w  }7 s1 l" K+ Q* [首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。( G( e0 K/ q  l" `1 S5 C2 a! |6 G! B
, P$ Q6 O0 Z! e& [/ ~
其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?
( o1 n. `# A* n/ x+ L* ~
* u" u+ e3 x- I& _7 ^' V2 _! U; p这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:% q1 a7 }7 r* z! y5 s( a3 u
9 x! \' v! N* h& R5 `% }- Z
Program Size: data=18.7 xdata=8244 code=88233# `' o. `! Q6 i' u
就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)& _( e% k, ?. Z. \
4 M$ v! ?9 L6 I! G1 @* X
最后找到,我宏定义了一个参数
+ L* X3 f& g$ v$ ]8 J6 i
9 L; e# D* ], U8 J' h#define    USER_SIZE_NWK_RRECT                    2 : s. ?4 w% u: U9 {

+ B7 a2 U& n3 w9 c! H* D跟踪它7 ~. @# E# d' G
- {! K& F- s0 Z; L/ S; i' u! {
    #if (USER_SIZE_NWK_RRECT)( i. N& z  q) Q8 D8 P
        NS_RRECT     MEMORY_RRECT[USER_SIZE_NWK_RRECT];
1 ?1 T5 A# ~  N$ d然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示
! h- E; \8 k, `4 _2 U- p
* n8 K2 f, p/ o3 u结论就出来了:% @7 G. C- ~" f) K$ v

9 b- |, t$ @& m) t6 I6 p" P1、Keil的错误报告不完整。
2 P0 o. S) n0 u/ G
* [1 X, A/ U& H7 V. [- G9 T" E2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。3 G* R- e/ K: y4 n  g8 ~

- L$ U1 p! _. e7 f6 {

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2013-9-22 10:20 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:00  U8 k* B/ O: D# U! c" t
你确定你的keil是破解的不是试用版的?

$ [6 `0 g" `$ I3 ~1 ~$ H0 X破解的,用了挺长时间了,哈哈

该用户从未签到

4#
发表于 2013-9-22 10:57 | 只看该作者
myl593799546 发表于 2013-9-22 10:20
( p# m( K; `8 F0 f6 J$ C% f破解的,用了挺长时间了,哈哈

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

该用户从未签到

5#
 楼主| 发表于 2013-9-22 11:26 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:57
: K. r6 o+ ]/ Y& l开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪 ...
# Z! C. @/ X* R
哈哈,没有没有,互相学习,{:soso_e144:}

该用户从未签到

6#
发表于 2013-11-15 01:33 | 只看该作者
像这样问题,没有调用到的函数,你可以用一个8 q/ L( \# l! j& t' |: B
if(0)
4 I. k* f: U3 T0 o: a{
" w9 R# K, ?4 `0 Y   放没有调用到函数;
( O# T( Z  M+ V8 A) z/ d. E}

该用户从未签到

7#
 楼主| 发表于 2013-11-15 09:20 | 只看该作者
天才小痴 发表于 2013-11-15 01:33& q, ~% x# H8 q5 i
像这样问题,没有调用到的函数,你可以用一个6 L$ g- j0 W) n1 j2 N0 ^
if(0)) v, K/ F: @5 ]& D0 c; j. N
{

" m' R/ ?- F- b) i- H& V恩,你这个方法很好,不过用#if 0应该更好吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-3 09:02 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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