|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
! E: J& ~' h! i7 C! D2 EVoid UPP_TASK(Void)
# G G B/ J' A( p{* o( @: {/ W# Q# G4 y
# a* ~9 u" M+ F4 b) E int i,j,k,target_int_count=2;2 B0 d" j D/ x( g
char ch[2];
1 F1 Q! ]! ^8 ~; X* c$ n7 j6 L' d$ R1 N; P7 ~8 k# B8 ^
" |2 F. T7 l+ b) i. ]: G l
$ \# c/ y. r' j
upp_interrupt_count = 0;
. z0 b+ x4 }! i* } h upp_error_count = 0;/ n2 w; X( E8 O" ^
. W& N! y+ C5 N: J& j( K UARTPuts("\tResetting uPP buffers...\r\n",-2);( q& f$ h* J3 H- F6 J) x
// Initialize data buffers: v( z6 X( y& [/ ?
for (i = 0; i < upp_frame_size; i++)
1 n9 i8 {5 ]' |; k9 D {0 B! t* R( ?& W3 B
upp_buffer_b =i;
) V: Y; q) t5 a0 o; f upp_buffer_a = 0xDEAD;
1 C( z: M; h0 @# }7 [0 _7 z: }+ g }
" i7 q+ S6 J6 m0 |) e/ m! [
; O6 H# c: c# c) B/ y //for(i=0;i<1024;i++)& r4 v, V0 O( e6 P" n
// temp=0;
3 v% ]5 T! n* n: Q! ?9 P2 {5 |) ~* x% E
//UPPReset();
0 O) r2 e: }9 D B5 C2 [6 p2 h$ B# Z /*启动UPP DMA传输*/+ s) J" F# Y. o3 ~
UARTPuts("upp_prog_dma_i\n",-2); N% N% v; Q" v* e' j% S
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
# x4 r- h, H5 Z- G2 T \$ R- V. D* e G upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
) F9 V, j& s/ s1 g' ]4 H- G upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
! i0 g i. z- J* n$ Q
_9 G6 d# k! @. x& S UARTPuts("upp_prog_dma_i\n",-2);; x8 w- a+ U9 y# B3 f9 Z" x7 I6 N- o
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;0 ]! N1 k+ K3 _7 m5 l
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);3 a0 V8 _4 y. ]* G8 b7 [) x
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);8 l7 R i# e/ w# o: y2 b y9 X# l
8 W( e( h" _" P% v' X Z, U /*等待UPP传输完毕*/1 `9 H7 t$ _9 K7 \6 e" @ U. k' ?$ S
//i=0;) z! u/ [! E1 T% r1 J1 T V; _
//j=0;+ T) @& [6 p2 B# y) j
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
2 x! m" j, S; ]& d1 T, P {2 Q! V" _" e% r# U* P
/* 测试UPP传输的同时操作普通DDR数据4 v0 J7 @; t2 r2 u! \
temp=i;" N# Q# ~5 q9 ]' H0 D
i++;2 ^2 |5 Y2 S2 @& u2 n: F
if(i==1024)! z' g4 Z$ F F9 k% g0 {) O
{
/ C% i2 T8 H G. j i=0;
9 n- i. B. _" {2 M6 W/ A j++;% h9 G4 X3 \- k. Q+ t
}* k- \- U0 ~: [
*/6 b' A- ^9 {9 G% y" \0 T4 f
1 m6 z3 l# A# \1 Y! k. b
asm(" nop");
- z6 k/ [) l% D5 f7 N
% T6 f% P/ B( `6 ~ //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
( F% t1 V6 G' D9 @* B }
& `1 R) `+ l5 c) H2 f. A b+ F4 k9 j0 a# u8 U1 F4 Y# b* h
/*检查UPP传输的数据是否正确 (loopback modes only)*/
# T" p6 [7 [1 w //UARTprintf( "i=%d\n",i);
. _1 b* c' H J- D8 M2 I. p2 f //UARTprintf( "j=%d\n",j);7 L7 k2 w L* n$ }
UARTPuts("Data mismatch in buffers.\n",-2);
# P9 a4 k3 R4 B( _" U8 g7 G if (upp_interrupt_count == 2 && upp_error_count == 0)
4 g! u) G3 r! |* _2 @. M; W3 b {
& j5 ~& ^# h, b0 [! w0 i& Q for (i = 0; i<upp_frame_size; i++)7 F+ H* Y6 n" k+ M$ u9 v4 K
{
/ |& l% i% h( L! N+ O if (upp_buffer_a != upp_buffer_b)
& y' Z" ?3 J0 N5 i' r+ H+ } {/ h, e2 s! B$ ~# h+ [
upp_error_count++;, i2 A4 U- i, b* \5 B
}
/ K H4 Y8 ]" B7 J: D" { }4 H0 O- A. J$ m; j! h! K1 ~
}
; |- v1 b1 s6 y! K
& ?) B& f! X- \ ?" q! v% n1 G& V /* 报告通信结果*/* T" x6 j& x0 A& R- X5 ~. Q
if(upp_error_count != 0)
3 Q- T7 h. ?, e& N5 } UARTprintf( "upp_error_count=%d\n",upp_error_count);' ?, _9 ~" \8 h% Z! E% W
else1 \8 i0 b: d5 @* k5 y! R$ w3 e/ S
UARTPuts("uPP transfers complete!\n",-2);1 F% f/ T2 K) F- r' p
# a- N; O( s2 I UARTPuts("Do you want to print all the data?(y/n) ",-2);, s7 D$ {" E/ h" ]# l
UARTGets(ch,2);
( T: r* U2 q2 L L UARTPuts("\n", -2);9 Z: T: K/ `9 i
' P5 e: ]. {+ I, ^9 A8 s' c' p0 n# n
if(ch[0] == 'y')5 o1 P7 U' ]2 v* H2 @$ y
{) v; X3 @( D! T5 m* U1 F* }# R
/*打印全部读到的数据*/) l+ j- X; T( m1 S' e- k: f
for(i=0; i<upp_frame_size; )+ A) d8 A$ a6 l
{6 Y! D- [6 b( n6 V1 d/ B: g) n* l
for(j=0; j<5; j++)
" s- w/ u* @5 U3 _2 l- e" J+ m {
) j1 f4 t, y3 b! N4 S; Z UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
1 `* T# T9 ^6 Y' q5 `2 X i++;
9 W/ ?; o/ Q+ d2 t& b9 ] //if(i >= 4096)
6 \% x2 M2 l7 e& u4 O // break;
, x5 C1 N3 V; A, F8 E% o- D
! E: N! Z2 W7 F$ u$ u4 R }; {& [6 E( i/ K. j& ?" a5 ~
UARTPuts("\n",-2);$ [; g& ?- s! ]! S5 L' c3 L# g
}
+ X+ K9 Z) i( Z! T4 \4 g" w }
7 h9 q/ X% Z5 D8 y; o5 r5 j K2 L# \6 I' f* @" r
}; A$ Y5 I( R9 |# k2 Q5 z. c; y
# I- W3 X% i5 S+ _: x7 ^, m5 E! J6 ?( u1 X9 ^
|
|