|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
*** ERROR L107: ADDRESS SPACE OVERFLOW! ~# h& a2 x/ y. X2 F) S* q
SPACE: XDATA " a; V. x Y2 V* Y
SEGMENT: ?XD?_ZSYS_ADC_CALIB_GET?ADC
4 T( o4 s2 Z2 v LENGTH: 0008H8 v" Q1 S, F3 O5 I+ T" T" d7 ]
*** ERROR L107: ADDRESS SPACE OVERFLOW
- K+ r& e& b5 [, ` SPACE: XDATA * T1 v" o7 ?7 [9 [0 ^. L* r! H9 m
SEGMENT: ?XD?_VSEARCHMAPBYIEEEADDR?Z_USERSTACKAPI
& J" o+ C3 A2 u, k+ t LENGTH: 0007H) _5 H4 A# d6 K" J( C
*** ERROR L107: ADDRESS SPACE OVERFLOW5 Y( r! p. H( q
SPACE: XDATA
( J$ n+ d+ {3 B, C M# N; D: V SEGMENT: ?XD?_VUSERADDRINDICATION?Z_USERSTACKAPI$ h; T1 ^) [+ D$ D _' g
LENGTH: 0006H7 Y$ ~7 ^: W4 p3 R! ^1 ]
- h' V& Y' b' B4 P
..........& ?: R# {2 M, P8 t6 D: _' _- t
; |4 a: M, e& a+ U+ l# @Program Size: data=18.7 xdata=8244 code=882331 e# W0 J( j Q Z3 h
Target not created+ a$ s. ~" T( c9 `2 s
; w* ]$ l8 L( S* f0 \2 }9 j
' o2 r6 n$ i5 U( @9 Q
百度之后发现,并不是溢出的问题
% `! |7 o' h9 |' e9 i7 H# Q7 t# x6 Q; R4 @$ X" T4 E8 }% d4 @
原来不是data空间溢出的问题,而是我有些子程序定义了没调用,导致keil无法合理分配空间,从而溢出。
# F- }( H3 w( H首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。
' T) T$ v$ q7 m8 V; [' `0 o4 V- l. a1 j x$ ?+ T
其次,data 空间可以达到256,见错误提示,data空间只使用了18.7而决无错误。这就有疑问了,那么我的错误出现在哪里呢?. H% N, h% F- J) N" \- w1 ~% a
4 x+ E% c! t+ G0 {. G1 ^这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:
8 Q% q. l& y4 r* U4 e
9 y! i7 X6 I; RProgram Size: data=18.7 xdata=8244 code=88233
( f7 ?& L( L/ x% t% }3 V就是不可信的。实际上我的data空间已经远不止18.7了。(所以下次看是否是真的溢出,可观察这个参数先), e6 z( l) V# Y' }9 H, a
! O; f5 [3 U% l1 e9 w4 Z) H
最后找到,我宏定义了一个参数
. S' \1 q. j( s ` h* x, m4 s
( B( T Z$ M0 E! k#define USER_SIZE_NWK_RRECT 2
9 Q; s# ?: q, d/ O6 n$ {& \! f) d1 l- `- E f: j. c! S$ u" }! ^8 i
跟踪它
% b" {8 {2 W" U9 [4 X2 b' P" p/ P: L5 D, U4 u' q" C
#if (USER_SIZE_NWK_RRECT)! w. g- G5 Q9 d1 b
NS_RRECT MEMORY_RRECT[USER_SIZE_NWK_RRECT];
3 q( J1 C: q$ v7 C然后再跟踪 MEMORY_RRECT,发现这个参数没有被调用 , 将2改成0即可解决错误提示
; q$ G3 K! e& c3 m$ q
" [3 u8 M. z" u- Q1 J$ \结论就出来了:0 v+ x2 P4 g( ] T$ p+ C
, |. t) @: J! z9 s
1、Keil的错误报告不完整。5 H1 T. ?) f" c! p$ o
5 |3 }" u: u4 K' r' }" R
2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。& ]( _/ U7 A- V( ]1 X D( n
) w2 N2 ?* m0 c( n. w9 B
|
|