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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*** ERROR L107: ADDRESS SPACE OVERFLOW
+ ^& y- U5 ]8 \' N    SPACE:   XDATA   5 P- D8 n' N' i/ E
    SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC
3 V; T' _4 Y. @# q* J# Z    LENGTH:  0008H' X7 v0 f2 Z; E6 C0 s3 ~9 K- r
*** ERROR L107: ADDRESS SPACE OVERFLOW6 S: |: j$ C# E8 a3 s* @8 b9 G% N. E
    SPACE:   XDATA   
3 g; T5 w: `* ]5 _$ W/ C    SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI, G  G5 D' ]# \" ~' Z
    LENGTH:  0007H- Y+ |3 }( d+ S# T
*** ERROR L107: ADDRESS SPACE OVERFLOW
& K; L% N3 L1 |, r5 z6 n    SPACE:   XDATA   : }7 F" v  n. @$ U
    SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI
  V( L* }) e7 \    LENGTH:  0006H
" O0 x, ^& Z) G1 T( j4 N8 M: O
' L5 z$ M  T# o/ S2 p% D..........
, P4 `4 r- `8 I; E, r
* `+ ^7 V- J* r7 o8 `Program Size: data=18.7 xdata=8244 code=88233( V; e: ~7 I3 u
Target not created
/ H9 Q# t- E- ]: a4 \! i0 O! D% Y8 L# ?, m+ F7 ^) X6 k0 q
4 I5 ~- b  Y. j8 L# T4 C
百度之后发现,并不是溢出的问题
" b4 `: Q/ [3 c$ _  c
2 Q+ b! [2 ?$ U- j原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。  : ~, T; J% O7 {' F# j( I% V
首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。6 B% O* ^. {- v

0 Q' f+ x+ Y4 |- n" t0 ~其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?: N" r2 b! b+ b( }- y
3 T6 H. g  Z0 E. y6 }
这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:  |/ ?  M7 }$ j  t* ~" D

2 Q) R) H( f! C; a) ~7 L) L" M6 ~Program Size: data=18.7 xdata=8244 code=88233
( k0 _6 z1 A6 y) {9 `5 k就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)4 D" e; |* ~. U2 L( Z

- t. p8 c4 L* d, R最后找到,我宏定义了一个参数
6 B/ J0 n' Z- b7 m! [, z9 z) U2 Z! E  L5 y# e; I6 w3 ]$ |, ?
#define    USER_SIZE_NWK_RRECT                    2
, i- `  U8 p5 l
/ p" V6 o) j+ I跟踪它- B% H" s/ I- }/ F5 f; v, Y- Z

% @8 r, F7 p7 R0 {* J2 p8 ]3 z    #if (USER_SIZE_NWK_RRECT)
, M" q+ |. J! l: \. o! j        NS_RRECT     MEMORY_RRECT[USER_SIZE_NWK_RRECT];1 e2 y1 b# c8 o9 E1 i; i4 }( r. r
然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示/ \/ a) x% F  V3 V6 D0 o
& n8 b) G& g8 E7 R) K
结论就出来了:
! e/ b) @& M: V2 X) x0 ^$ n' w* E
1、Keil的错误报告不完整。, o, m. V7 y5 `6 \
9 V; |6 _5 L, T7 B: |
2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。5 p( Q8 a' w7 e# e4 M

9 V- Q) k7 B8 B. Q

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2013-9-22 10:20 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:00
" |2 a; m+ m- [你确定你的keil是破解的不是试用版的?
* T, H( i, N( v( B0 E4 S
破解的,用了挺长时间了,哈哈

该用户从未签到

4#
发表于 2013-9-22 10:57 | 只看该作者
myl593799546 发表于 2013-9-22 10:20; W2 X: O$ @0 b, x; L
破解的,用了挺长时间了,哈哈
, L/ {* `6 h  H) w5 k& l: d! \7 p
开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪!{:soso_e121:}

该用户从未签到

5#
 楼主| 发表于 2013-9-22 11:26 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:57
" D" J6 f, D# s0 j2 ]/ Y开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪 ...
- q3 v2 P1 w, u  [2 `
哈哈,没有没有,互相学习,{:soso_e144:}

该用户从未签到

6#
发表于 2013-11-15 01:33 | 只看该作者
像这样问题,没有调用到的函数,你可以用一个- J6 p1 k" w! X% L6 V. E
if(0)
! ?: e1 Z7 d1 a+ X) S{" Y8 u, k& V  n" n4 ~% r
   放没有调用到函数;
4 k0 y- t/ \. e( j. Q}

该用户从未签到

7#
 楼主| 发表于 2013-11-15 09:20 | 只看该作者
天才小痴 发表于 2013-11-15 01:33
; f! k% Z+ {4 [像这样问题,没有调用到的函数,你可以用一个
. E: s% S. m' J6 A, v0 l! T7 M# Jif(0)
9 ]7 Z! b! N5 z8 A; ?6 e) N& [{

. r! R9 G5 F4 l  f: h" t0 U, Q" m9 V( d恩,你这个方法很好,不过用#if 0应该更好吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 17:41 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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