|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
*** ERROR L107: ADDRESS SPACE OVERFLOW
a4 ?/ E) I- J. ^& i$ P SPACE: XDATA
! |3 [, q; o& x8 I' i/ J SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC
& D. Z6 Y* i+ q- u+ a- g/ k LENGTH: 0008H
. i# Z; P+ d( R" P+ P*** ERROR L107: ADDRESS SPACE OVERFLOW& f `) v2 z# H& I
SPACE: XDATA
: u/ e2 t# {* k1 H SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI3 w/ e2 P- l7 i, K0 g6 X
LENGTH: 0007H) D v. k; J8 N9 Z- ?
*** ERROR L107: ADDRESS SPACE OVERFLOW9 h' e% ?+ `* T0 I! w$ z
SPACE: XDATA
/ H6 o# @9 n, B, i) k p4 j SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI
( t' r5 q+ Y. [) t! x LENGTH: 0006H
8 R) H) J2 ^( j+ M# a/ T6 s3 _% G0 Y: P2 y* w5 X: r& h& ]
........... B# w$ O, n$ _
6 z! ]& J) M* {" N @# y) e9 A
Program Size: data=18.7 xdata=8244 code=88233
! A C6 Y8 b' A6 M! \) t+ ~Target not created7 D+ x, L) M1 R( @3 r
5 ]& l1 A' Q0 f( s ~+ Q
* s% Z( O7 x5 O1 L3 P& |! Y. [8 M百度之后发现,并不是溢出的问题0 [ A& G/ ~4 ? J+ p
+ o+ M% }6 z+ Q2 P, C
原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。 , L4 t- p" E, H
首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。
. g+ S7 R8 ]* w" h8 K
8 \9 t* @" {( c/ b其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?
+ o& J. K; ^3 V" s2 d8 y. C8 c: r0 l" X% _" z0 z
这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:
2 d: S" D% C4 s
" U$ V7 b' [4 X6 {$ HProgram Size: data=18.7 xdata=8244 code=88233
5 J; D# U0 g- e就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先)8 H& |" w! p7 h8 c0 L0 H( C* A- Y
! l& ]. E/ a8 K5 j$ O" C5 e' N5 c) K7 W最后找到,我宏定义了一个参数5 e( O* s/ j0 t; o! v
- K4 T. R& D5 Q% ~6 v+ e6 q# _3 H#define USER_SIZE_NWK_RRECT 2 ( c) h9 m$ j: m, B- m* r
" K d6 q; Q6 C# r0 f# w: ~跟踪它
6 V: _- ~8 k! _( N* l
- o8 G% o5 {0 u! c4 V #if (USER_SIZE_NWK_RRECT)# ?4 ?5 K* O/ |0 a2 D w5 c
NS_RRECT MEMORY_RRECT[USER_SIZE_NWK_RRECT];
5 D( ^3 Y0 x2 u( s V' A7 _然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示( Q" P" N: W, ~* q! C! ]
2 N& I" g" K7 m' M/ G结论就出来了:- h6 `! E0 q) o# |: n5 Z; ~% h: S
) Y ^" }* {( |6 e4 U$ |1、Keil的错误报告不完整。
9 R9 f+ D: W+ z& h* ^9 i8 ^7 @1 _' }
2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。) w* r: O4 e6 H( T& ?1 t
/ w4 v/ Y, O0 o' Y |
|