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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
*** ERROR L107: ADDRESS SPACE OVERFLOW
/ i2 b' D' B8 m; V. n3 `' m    SPACE:   XDATA   
: o2 W+ K; F8 b8 N    SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC8 e0 W$ u' _+ V, ^
    LENGTH:  0008H
" Y- n6 K5 B6 t% k+ I*** ERROR L107: ADDRESS SPACE OVERFLOW
+ T; Y3 k/ y2 E0 K( \" q0 y    SPACE:   XDATA   
0 m; \8 y: y6 ]    SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI
/ b0 X. I  ?2 w    LENGTH:  0007H  k) B% \. y! ]1 Y; A' ?
*** ERROR L107: ADDRESS SPACE OVERFLOW
$ f  T! P7 r" S/ t    SPACE:   XDATA   
' m3 ^$ y1 n. s3 W! P    SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI
! E& T6 y" y2 }7 `5 Z    LENGTH:  0006H3 z/ L: H% k( B/ x0 l, J  Y9 |

2 K0 A" [. {! z: H. i" [7 F; k$ h# d..........9 |$ J/ H$ X" h

, i9 Y  s4 Z. |$ UProgram Size: data=18.7 xdata=8244 code=88233
4 ]2 p2 ~/ w. J) a1 H/ s' J: C; OTarget not created) O( n7 l$ j6 Z5 E

2 v8 Z; t( m" [/ U) `9 ~8 h# _% }0 ~( I! m( b8 P
百度之后发现,并不是溢出的问题
* @$ ^4 D( s6 D+ D5 f3 C
$ Z9 |: `. C! Y6 F# r原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。  ( x( h% W) z, Q" O$ L- ]
首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。+ L5 G" @# o1 A! A$ \) A  p0 u
* Y, w6 [2 h' E; o1 R) k
其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?
9 O9 _6 K# L% F7 D0 F
$ g. Y" Z+ T& E6 c4 i这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:  Q" {: s1 H5 G
3 U9 C/ m6 j5 }, h0 r; y
Program Size: data=18.7 xdata=8244 code=88233* ^0 L( T; L/ }: ]
就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)% Q6 N3 b# U/ x( U2 f; u
4 x1 v- i# S' L2 J8 p- s$ X0 f
最后找到,我宏定义了一个参数; [' T- C( u4 U( _6 q
% V0 i; P; F; K$ W
#define    USER_SIZE_NWK_RRECT                    2
( n. V* X& T# b6 H" w9 _( @
# ~9 g/ d3 I1 _0 A1 N6 M& }跟踪它2 e; J5 [# Y- {9 Z/ L" Z5 U

. U1 r: }% \7 N* a3 {  K6 ^    #if (USER_SIZE_NWK_RRECT), D( j4 \7 [0 q
        NS_RRECT     MEMORY_RRECT[USER_SIZE_NWK_RRECT];
9 {$ ]2 j" \1 i) C6 {1 B0 V然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示. O- ]! T$ B# g/ B0 V

. ~* w' c9 ^! c6 d. d! Z2 l结论就出来了:
) a& e# `% l: v! r# G1 I' C" X0 q5 H9 R3 _3 L0 a6 R
1、Keil的错误报告不完整。: ~1 R9 D& {2 a& E- M; S+ k

% n, Z* o% o+ ]# B2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。
0 q: v1 |9 |" Y) h2 F1 u$ h8 P" P& T. D' W) k% S# P

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2013-9-22 10:20 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:00$ C# y9 a$ p& O
你确定你的keil是破解的不是试用版的?
& D) y; [' @0 h7 H4 e. g9 e
破解的,用了挺长时间了,哈哈

该用户从未签到

4#
发表于 2013-9-22 10:57 | 只看该作者
myl593799546 发表于 2013-9-22 10:20' n7 f6 J+ K( X5 T$ b
破解的,用了挺长时间了,哈哈

! B/ V6 p' U, V% r0 J$ F- t$ f开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪!{:soso_e121:}

该用户从未签到

5#
 楼主| 发表于 2013-9-22 11:26 | 只看该作者
春雨过天晴 发表于 2013-9-22 10:57
7 e8 P6 E# s# G9 o8 Q+ ?开始没有细看你的分析和结论 以为是那种没破解的限制编译空间呢,后来仔细看了下,学习了。丢人了,快闪 ...
9 @0 N: p9 W' F; w7 p- K( X
哈哈,没有没有,互相学习,{:soso_e144:}

该用户从未签到

6#
发表于 2013-11-15 01:33 | 只看该作者
像这样问题,没有调用到的函数,你可以用一个8 q1 ^0 [6 Q) r9 e' ?/ L2 c
if(0)1 k. P0 B: k% O
{, |: r6 W. S) ?  k: ]% I
   放没有调用到函数;
# U# o  f. V0 j0 D}

该用户从未签到

7#
 楼主| 发表于 2013-11-15 09:20 | 只看该作者
天才小痴 发表于 2013-11-15 01:33  p0 h" b2 E  R- Z4 j. c7 U
像这样问题,没有调用到的函数,你可以用一个
* B/ w8 D  {- J% U% D; F( D3 [if(0)9 R- ?/ \# g0 A: V& Y
{
8 W& \: x5 ]# [+ l$ W( I1 k
恩,你这个方法很好,不过用#if 0应该更好吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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