标题: upp问题,在SYSBIOS下的应用问题 [打印本页] 作者: tulipyyf 时间: 2014-12-22 14:35 标题: upp问题,在SYSBIOS下的应用问题 下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么? $ C g% k9 P- n$ R* }Void UPP_TASK(Void)8 |) T/ [4 f' C5 x9 p8 K4 b" H
{7 s% h: G! ]+ V1 U, k
; z$ j6 M: y0 r, G ]$ \
int i,j,k,target_int_count=2; . W8 K: o7 V: p+ j7 y# P9 I6 K char ch[2]; + ^. R- x! @: v# I 3 a5 b g3 n4 y7 s# ^2 s 1 ^: M, r8 b% R$ R 1 \/ B; }2 d' M) c7 \( c' ] upp_interrupt_count = 0; 9 y* R' V' _% Z; M' G: s/ W4 d# v upp_error_count = 0;3 @: P/ w; v6 @
4 r7 n6 L1 R+ u* z) h& O& [
UARTPuts("\tResetting uPP buffers...\r\n",-2);' K. \* l9 W7 w( E
// Initialize data buffers ; m2 l, l: ?' ~& G/ _4 n2 B8 I9 f$ ? for (i = 0; i < upp_frame_size; i++)2 W: Z( P) @4 y0 @( m7 P1 Z
{4 u/ m# u' y/ Y+ A4 O; P. l
upp_buffer_b =i; / k3 ?, Y. s; g5 ?7 t# ` upp_buffer_a = 0xDEAD;$ a5 h9 T' I3 H3 u* ~ z
}! a, H9 ~5 o5 n3 {
% `. v6 A( u" A //for(i=0;i<1024;i++) , x( C$ [" r5 u! B6 R. S3 [& e- ] // temp=0;& K4 K6 f2 V3 R& e
/ Q% S$ o5 q- T2 E$ _: ^ //UPPReset();2 h r6 K+ {2 Y% J4 C
/*启动UPP DMA传输*/7 ~; L9 N0 @: I, h
UARTPuts("upp_prog_dma_i\n",-2); 2 G7 r' I2 |! |6 r' f1 I' }0 q upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;% E' s" R+ X% j1 t3 F6 s9 W
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);- k* v6 o+ Y8 A6 l" f
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);$ R& D4 T; I" a0 ]
9 M8 y4 q* v* e D- b# G# y0 q UARTPuts("upp_prog_dma_i\n",-2); * J6 F4 M0 g0 } upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b; 4 N; w/ k- `( K$ C1 D upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16); ; s$ |* D; _" {( y upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16); 4 O( B: j+ D+ I9 a. c: W 3 h* z, Q r8 J( @ /*等待UPP传输完毕*/9 e7 v, ]2 }: ]) n+ M$ `" @/ ]
//i=0; 4 x5 y9 k7 Q% p+ U //j=0;' M- Y; R) u* y; I" J$ B6 O0 q7 R3 e4 A
while (upp_interrupt_count < target_int_count && upp_error_count == 0)) J: c% N* H1 w& T D4 |
{ 6 N$ v1 g* S+ n* ? /* 测试UPP传输的同时操作普通DDR数据 . B8 J' c( `0 j6 S& X& y temp=i; . E8 q9 p3 a0 m i++; % q$ B, n$ `& ~/ f if(i==1024)! V: g( h' `) U/ T% p$ `0 Z
{ 8 M9 M7 k/ P% n9 C$ X4 }+ r i=0;4 \' q$ o8 ?9 z- Y9 h( @
j++;6 q- X2 z% R2 ?3 O9 K: j% o
}( r' P2 V% ~0 F2 _
*/ / n6 m7 m" ~+ f9 Q+ G ' } Z9 `) p* v- c7 ~; |- K asm(" nop");1 _1 ]9 b t5 I6 C
. B h& Y o. i! S7 }" g
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count); 3 K1 d4 B' O* K) e } " \ e6 F6 J9 N3 l5 @- M 8 w3 y8 E' G5 c' H /*检查UPP传输的数据是否正确 (loopback modes only)*/: T% ]" H# P2 m( ]2 c! G$ j2 |$ b0 J
//UARTprintf( "i=%d\n",i);) X* |( Z# @1 J# x! E8 l% s- |
//UARTprintf( "j=%d\n",j); a, Y1 A( U( _% ]4 B, `' C4 d UARTPuts("Data mismatch in buffers.\n",-2); : f; D( A8 k* j* D( e9 E if (upp_interrupt_count == 2 && upp_error_count == 0)8 W% X& {/ H* G% h4 E8 z
{# V! Z' {7 \2 j4 A, v: B- V# X
for (i = 0; i<upp_frame_size; i++)( Y) \2 g1 ?/ p2 `/ u9 }
{ ( [. f! D- f3 O$ g if (upp_buffer_a != upp_buffer_b)) Q# [# q1 l6 G; f, N% \7 g1 E7 ^
{7 e4 P) C! M( A+ F' X
upp_error_count++; ( `. h& O, _. Y8 z. A9 N( a }& ^$ {! o* j& q9 \) }, M: T) d3 q
}( o8 ?7 n" c& V" p! b# D: ]
}8 o. g; _ O& f8 A+ T$ A
- x8 N5 z' B; I /* 报告通信结果*/8 p1 `! q5 \' g8 ^4 z3 f. a
if(upp_error_count != 0)$ Y: N! n3 Z" t1 e. G
UARTprintf( "upp_error_count=%d\n",upp_error_count); : } Q% q8 v5 e else 0 j9 h; O# {. w; m& S" \0 A UARTPuts("uPP transfers complete!\n",-2); * l7 k1 o4 F6 r7 O9 D 2 s3 _: S/ M; [3 E- e D9 t UARTPuts("Do you want to print all the data?(y/n) ",-2); ( y+ Y' i* Z. c+ S& g8 } UARTGets(ch,2);& M7 v n( S ]- W8 f
UARTPuts("\n", -2);8 z4 M; A, R D# k- O! \
# V1 ]' _6 |$ v6 ] if(ch[0] == 'y')6 K( L; G. J. _
{, z9 d7 H |2 t: r! h
/*打印全部读到的数据*/+ E0 t: V) n1 k+ ]! U4 M
for(i=0; i<upp_frame_size; )/ u+ n0 Y& {1 |8 s! _# [ `
{ , k" K, f G5 F6 S- w9 b r for(j=0; j<5; j++)1 p, L D3 e' ~3 t3 b
{; e8 ^! d7 o- O/ p
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a); . ] Y- X& k+ _6 T5 i i++; " ~, v: z/ y) T //if(i >= 4096)/ `: u) e% G8 S+ @1 z, w
// break; 5 `0 [- p* |8 J) h% | ( Q% F. d W( y } ) M5 K) u; c: U3 a$ {. ? UARTPuts("\n",-2);5 @# i6 h. I, P7 a& G4 x
}% J& T( |: }7 ?; |5 j
}, _9 O& ]7 h8 Q. u; Y, H