|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
4 I# ?+ ^/ [# }: WVoid UPP_TASK(Void)
) E- S6 H3 w* t$ T{, l( L0 D# g- d3 E: n
o6 p. z; O- O9 I int i,j,k,target_int_count=2;& q3 U# P4 Z% y
char ch[2];' e' A6 s. W( A' X
" @/ r$ d, A$ D2 \
0 `2 v$ h# h" z1 p0 ?+ E
$ E' d! ?* B9 R1 A7 V
upp_interrupt_count = 0;1 p; s) M _/ P. E" A: ` }7 M
upp_error_count = 0;+ u' m5 K8 X. Q
6 p! |0 m3 k7 w8 ~% n$ p+ v- v2 h
UARTPuts("\tResetting uPP buffers...\r\n",-2);8 k5 n9 F& `; S, R
// Initialize data buffers
$ \3 o% t {" F9 W W+ t; ], f H for (i = 0; i < upp_frame_size; i++)
/ ~/ F- p. X4 ^. Q9 f6 W {3 n- H" P0 ?) v; q
upp_buffer_b =i;
" \5 O3 `- c E7 m6 e" L8 k upp_buffer_a = 0xDEAD;6 i6 U# h4 r% C1 @6 }, ?2 q
}
; c, X6 p$ i0 j" E( H6 p& P8 r) J+ b/ q9 p
//for(i=0;i<1024;i++)
) U5 ~5 l$ S' Y) A6 C9 c // temp=0;
+ D' E! q0 `0 V" n1 }7 G$ D2 ~2 m2 F& o/ @
//UPPReset();( _2 R6 o+ l' y; m, Z4 M8 Y
/*启动UPP DMA传输*/1 T X ~* ~0 F) p0 O
UARTPuts("upp_prog_dma_i\n",-2);
" d" B+ K' ], u; W/ e- s upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
' x: N% _3 } M9 C) h$ K upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);! c, O5 }0 v! c, n8 Y6 m. ~: y o) y
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);1 Z7 H8 t" y' C/ v
. _0 t# B2 G5 ]% K' ]
UARTPuts("upp_prog_dma_i\n",-2);& O( f1 T2 o" _' E- \6 _
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
3 H2 z' f+ h F" m upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
3 J" x2 G, w* w, C upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);( H# u! s) ?, }* \" ] K) L
8 k( j/ h& L9 r! U0 w# x3 `
/*等待UPP传输完毕*/ \8 g8 H; y" x- i! x! {+ |' _
//i=0;
( r0 P% p- E, T# T# d //j=0;
4 p% N+ n) {5 k! q: S b3 _ while (upp_interrupt_count < target_int_count && upp_error_count == 0)/ a/ q9 r7 z5 z H. ~
{
( e" S! f" Y% F% \ R5 } /* 测试UPP传输的同时操作普通DDR数据7 e o" u) ~7 f ]& P
temp=i;$ l; _' O4 q8 N, p+ ~
i++;
+ {! T3 H" T* t i- P if(i==1024)4 S* {! V$ S( w: A% B
{3 [8 c5 Y, H: B+ A( a( G
i=0;
$ ^) O g! k$ M5 i j++;
0 p1 x: M, o' ?2 I; y9 l }7 S0 a8 a+ b9 k9 S7 s
*/: B, g0 E2 k7 U9 X7 t) s. L
$ K# k6 v* e8 _6 q2 \) X4 i( m
asm(" nop");
9 R% s0 p# r4 _ j/ E( O Z7 J4 P
Q" r( l5 J3 @ //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);( J$ w2 k; }+ r) x: `" ^6 Y
}
H& B/ r6 s M2 C6 O
% U l& K# U# X* D1 }2 B( N /*检查UPP传输的数据是否正确 (loopback modes only)*/5 b8 @) i; @7 U! e' [2 [ ^
//UARTprintf( "i=%d\n",i);
( C7 g$ \. a e3 c J* C! k //UARTprintf( "j=%d\n",j);7 }' }+ |3 [1 Y
UARTPuts("Data mismatch in buffers.\n",-2);
6 U, {, k! ?8 c5 c5 U/ ~) M if (upp_interrupt_count == 2 && upp_error_count == 0)) i# A* z; i( F4 z" x" G* j [: P# R
{
' |4 ?' }1 ~! x8 ~1 z+ C7 X) w8 I for (i = 0; i<upp_frame_size; i++)
3 X( {7 O, K0 x5 q. ~ {/ u0 }' x) ]( {- \) D) X- Q: m
if (upp_buffer_a != upp_buffer_b)
! I' V0 H& ?2 N" b% W {7 \. V4 q# H0 ~" c6 \
upp_error_count++;
+ Y8 J2 K& u- _+ L }
: H Q8 h- ^ }' D! y }
1 r8 n l3 S! J+ s4 ? }
W& o+ c$ A8 O+ y
4 Z7 }% X: b* h) S3 x( c /* 报告通信结果*/
( I9 D& m, ~" w) z if(upp_error_count != 0)
, A0 ^' y9 @( e% `9 C UARTprintf( "upp_error_count=%d\n",upp_error_count);
, T" b" t h" `& o! G else0 ~) @2 R# U+ H* [
UARTPuts("uPP transfers complete!\n",-2);
" Q6 B* f; d- ]( O: W7 b
2 [+ {& t0 L( b UARTPuts("Do you want to print all the data?(y/n) ",-2);
2 k, \6 s0 q5 s- a UARTGets(ch,2);
8 b6 O) ^" C: Q7 K7 T- c: ~ UARTPuts("\n", -2);
8 v6 O& \+ I/ H
# Y) s- w8 R1 f! y6 b; K9 O if(ch[0] == 'y')
7 b8 H4 j. i' Q- \ {
6 |# J- Y) B0 U- b /*打印全部读到的数据*/
3 [# w3 M& j9 S* ? o8 D _, s9 ~ for(i=0; i<upp_frame_size; )
3 E) p7 [$ m! f) {$ |) a# k+ j {
8 z G6 o$ b( ?) w/ u6 K' F& a( ? for(j=0; j<5; j++). M* G9 o6 X2 K# x2 Z8 j, K6 u' ] x2 [
{
' r; Y8 x. @. _) W UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
+ z7 h+ E8 M) W/ @ i++;
) n3 G9 M+ a/ P& N W: y. q& ^ //if(i >= 4096)4 r' o* {5 _1 E" G5 i7 E: j
// break;6 r. a" `( l* q
: g; I" R2 a" i' N7 n
}: R: m$ }+ g9 P
UARTPuts("\n",-2);& A5 h) S; \4 w$ T) T, l" m- Y
}# I( B4 d# n& ~. Y' |
}
6 \/ l* L: A) O" h& q R4 l* m3 { g
}
2 ?# E4 M- ?+ u* Y" G
* e9 Y8 }' a/ M. d
+ V- N" B( p" c. j W9 _: U) J" Y- D |
|