标题: upp问题,在SYSBIOS下的应用问题 [打印本页] 作者: tulipyyf 时间: 2014-12-22 14:35 标题: upp问题,在SYSBIOS下的应用问题 下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?( j. C- W. b: `' E Void UPP_TASK(Void) / C3 T/ d, T$ O7 a, O, ]{; N+ a) L ?* t/ V: j
7 ~5 R% k% o* Z int i,j,k,target_int_count=2; ( Z" B" i @2 y% P" P, ^ char ch[2];( {2 p$ P8 g; x/ P: p/ p. D$ ?4 Q6 [
6 r3 X1 s$ p1 P8 B! J* [. E$ a
3 C5 X% x4 L5 S, R6 d
$ Y% g* a! T) |6 p1 t! ?7 m upp_interrupt_count = 0; / K" H: X9 H% ?" I X upp_error_count = 0; % W7 }2 z# P/ N# ]; H S9 B1 D% y2 W0 i8 c- G UARTPuts("\tResetting uPP buffers...\r\n",-2);( m0 {$ Q& M0 V" Q- D
// Initialize data buffers " w$ n- A! m0 {% C& L for (i = 0; i < upp_frame_size; i++) ) X0 M$ Y4 ?+ _; g6 w7 ^, X5 `) `; r% k { v* X( l) X, p) w upp_buffer_b =i; " r) z2 m) [# A$ t8 L6 `( K" @ upp_buffer_a = 0xDEAD;4 ^8 }9 g3 w- z8 M. b% O# h
} + Q6 t' u) L+ H2 ]2 ~ ! e: ]7 l- X' e3 w //for(i=0;i<1024;i++) $ v0 D, ]( u6 r // temp=0;9 T6 k- ]( x) p7 {$ F9 l
& G5 V" }1 H. @0 r //UPPReset(); * p# I" q3 ?2 s; f /*启动UPP DMA传输*/ - k: j; q+ P: p3 `. F7 X UARTPuts("upp_prog_dma_i\n",-2);% i, Z% @- B2 A5 _
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a; # T4 t; }4 N) N upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16); + a+ G9 N( ]5 ? upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);: @6 H5 p+ c: |. T0 }; C3 b
& B9 q6 ~: z5 y: N9 _ UARTPuts("upp_prog_dma_i\n",-2);/ J% w8 j- X5 e" ?$ j, E0 A) Q3 }4 f
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;3 f( v1 J9 k8 q- h( P
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);: b) R0 Z$ m7 p% R J# ]. V) R
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);- K% X0 ^6 T! q) l
0 [7 y# {7 A9 H% Z" q( N- j
/*等待UPP传输完毕*/ 8 o* ~8 X) r) T5 @ //i=0;' Y9 ~+ g4 D& H* l2 ?
//j=0; , \" D0 \5 M0 ^- L while (upp_interrupt_count < target_int_count && upp_error_count == 0)0 O# w, [! @7 J% s
{1 g3 q6 Z+ q, {
/* 测试UPP传输的同时操作普通DDR数据& M. U( o" X6 m; I- S
temp=i;: s8 p- }4 G; |
i++;! U6 t1 ~" @6 h5 M J
if(i==1024)" m Y3 h& Q/ L4 G' ^" e
{ " |( a F& S& W% ^# V" G n i=0;2 E) M8 ^# ?" g; S. ^
j++; ; s2 L5 L( L! b7 V/ K. |" U5 ? }* F0 X' k: e" k; ]
*/ / h) v2 |' \6 e/ X5 s4 z& O ' h R0 {, ?5 N asm(" nop"); 7 T1 M( n& `9 p" l$ C, ^ 9 N) i H6 X, a7 M/ m/ @' d //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);. T/ K0 q5 d& _0 y
}, q; ]- q$ z6 C
u/ x9 G& N- Z& H
/*检查UPP传输的数据是否正确 (loopback modes only)*/8 t- _8 }7 i. E: K
//UARTprintf( "i=%d\n",i);0 j K- l! C: x- H- m8 n1 g
//UARTprintf( "j=%d\n",j);8 w6 I3 w3 `* w! T9 d, m
UARTPuts("Data mismatch in buffers.\n",-2);6 a9 }: m e1 D% y; M/ {
if (upp_interrupt_count == 2 && upp_error_count == 0) ! v9 I7 v. |' i8 Z( P: I {7 n% i+ i. F' N+ g4 O
for (i = 0; i<upp_frame_size; i++)8 E( f! Z" r1 [* j
{ . D) w# y5 l- u8 Y if (upp_buffer_a != upp_buffer_b)0 o$ _- C$ p. W2 C) X
{; I5 ?! n8 ?$ v$ Y- u: a
upp_error_count++;: H, I0 k4 `: N @" n {- o+ t& z
}6 j, _$ b( B8 Q9 Y' v9 }8 A
} ` h1 X3 d9 T% f1 q! M* @ }! ]: p) p( X' M9 J7 F9 D
* E/ L0 h$ M/ M2 b, p& |
/* 报告通信结果*/- d* w: T o; X6 P9 w$ g5 ]2 B
if(upp_error_count != 0)8 o7 J' m% Y4 v8 j
UARTprintf( "upp_error_count=%d\n",upp_error_count); $ j7 C, b) R: r: t3 O" I# a else / g8 Y4 t; Q1 S( e. z5 }& O UARTPuts("uPP transfers complete!\n",-2);/ Q2 U$ Z1 u/ B: Y, @: i" f
, l' r# r& n K! j8 `7 U7 q
UARTPuts("Do you want to print all the data?(y/n) ",-2);8 C9 S+ P0 L4 Q
UARTGets(ch,2);0 [( L Z! _$ L9 l) u6 O
UARTPuts("\n", -2); , i* s- q0 A1 B/ |1 w! n& w- O2 ~% Q' B
if(ch[0] == 'y')9 I( O! }6 H& H, s
{ s5 Y# e7 [7 L) l5 Y+ m- C
/*打印全部读到的数据*/* o- n) q: n. x1 K8 `2 b
for(i=0; i<upp_frame_size; ) 2 G+ w8 P5 t/ a- @7 x" d; C& o { ( ~9 P( ~, r% v: V+ f* {5 k. V3 C for(j=0; j<5; j++) - }1 `" J+ i1 w { ) ]+ T* G! _ w+ B% C& q UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);5 A( S1 s& ~4 U+ E% R4 l' W
i++;/ t: j$ ~6 U& b3 D! E3 m* O
//if(i >= 4096)2 d- M- ^9 C8 t) g1 }2 X
// break;4 H3 u; s" k3 G2 o. ^- w
3 F( I" V% M2 z7 J; ?6 M
} 8 F( L8 `( t; F4 G3 R0 J UARTPuts("\n",-2); ( r$ ?3 i2 X" `! X } 6 }0 I+ N3 Z6 g0 z" t. G- K; G6 Y } 4 Q% C2 ^, C x5 Z! _2 p4 V( o$ ?* s2 E3 L
}0 I( k3 u# J5 I7 F% p% Y( p! T