标题: upp问题,在SYSBIOS下的应用问题 [打印本页] 作者: tulipyyf 时间: 2014-12-22 14:35 标题: upp问题,在SYSBIOS下的应用问题 下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么? 1 z% A0 F, ^7 v8 uVoid UPP_TASK(Void)& s3 O. J. p! I n
{ " J, X/ o3 [: Q; V! g5 l `; \/ | K) p+ z
int i,j,k,target_int_count=2;. s, t0 k0 O3 T7 c
char ch[2];' T- w0 S, k( d
+ [+ g+ D9 M3 f0 z% E8 Z. V; W1 I0 t% @. s
$ ^/ J/ N/ O" {# ~0 }1 b upp_interrupt_count = 0;8 p9 B9 t1 i0 V I
upp_error_count = 0;/ x- Y6 d% f# S$ e# O
6 W6 e! n0 q3 @( S/ S$ M UARTPuts("\tResetting uPP buffers...\r\n",-2);& V" y! i6 m) O6 I
// Initialize data buffers 6 j, ^" |3 Q$ ~+ D, N& ^9 z a for (i = 0; i < upp_frame_size; i++) 8 G- V6 ], ]3 c" C% H {: D2 L! Q) ?$ m7 n
upp_buffer_b =i; $ t& u- ~, R. m( K upp_buffer_a = 0xDEAD; : F$ y! g# l. k0 |' Z }! P: G3 Z, \6 Z# m, P* v
?8 U/ q1 f$ [6 _2 K# Q9 H //for(i=0;i<1024;i++) ) Y$ M' h$ @$ S2 H$ z( t // temp=0; - i9 f( f* }& L; m* X+ j6 \+ Y 2 N, I, d$ N2 A //UPPReset(); 0 K$ _" j7 T0 ~ /*启动UPP DMA传输*/ ! ~* N+ w4 C$ R UARTPuts("upp_prog_dma_i\n",-2);7 \; ^$ ?: }- E3 d& g7 u2 u
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;' V7 m" }( c/ E4 _; P
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);! }' H0 ?- |0 J& a; b: T
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16); ' i3 u, {' H1 j3 \( \: M) K- l% J8 W
UARTPuts("upp_prog_dma_i\n",-2); : W# A& i$ q* x+ b! L1 u upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b; * l4 u# G2 c9 t" B' |4 }( }6 [6 b upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);0 _) ?$ \1 {5 R$ @- s( ~( ]
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16); % r% k5 R/ r3 O4 ~1 a; J8 r3 T 3 [- t) L, U! a" k9 O4 P, } /*等待UPP传输完毕*/" X. R5 c$ X6 j4 c8 p) j
//i=0; 2 R) y: {6 V% E% F# e7 | //j=0; 1 v9 J8 e0 e8 D2 }" V while (upp_interrupt_count < target_int_count && upp_error_count == 0) ! H3 I1 n3 P% e5 e& K* ^ {! e% p1 M6 b1 O; s+ y; l# A- Y5 _8 M
/* 测试UPP传输的同时操作普通DDR数据 * v9 T% D' u% U temp=i;1 I) n/ t, D# h; D
i++;* g0 q/ V- z5 I/ p" x3 q( m8 {" p
if(i==1024)2 r) {3 G9 N7 u/ R% S
{ 3 c$ ?- A* A$ S W3 A i=0;" y$ E u9 i" M. `2 f/ X+ q4 g
j++;% `7 X' m. M( \! P0 i; F) o1 A
}" Z y8 @0 j- f; r7 Y
*/ 6 q& Z8 e0 i0 t0 [* ~( J3 U/ v- \" s/ _/ z x0 l/ w; d" j* A
asm(" nop"); / w; C( T, \+ u9 | E; `2 k! ]( y2 ~+ z' l( I/ i
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);1 e2 w* \7 e( H+ {4 e6 q
} 9 P$ s* m+ t/ w/ d# w # _9 s4 y# b4 r y1 L+ j1 | /*检查UPP传输的数据是否正确 (loopback modes only)*/ 3 r7 Q. m8 I/ ?% W //UARTprintf( "i=%d\n",i);; V! ?8 N; E9 V6 _' G) a% k& p
//UARTprintf( "j=%d\n",j);' d2 {5 r7 R) V; n0 p; a
UARTPuts("Data mismatch in buffers.\n",-2); . V; t! y8 ]* Y) h4 _2 O if (upp_interrupt_count == 2 && upp_error_count == 0)8 B9 j- U% O, q, w- ^
{+ z1 N+ {0 |- o0 F k G
for (i = 0; i<upp_frame_size; i++) 1 E2 Q$ e/ g# Z/ o7 ?- F' n {) |: l: P8 a/ k+ ^/ j# G
if (upp_buffer_a != upp_buffer_b) 9 o5 f! |& Z0 _" m4 w- W { 0 I+ A u, d6 `$ X upp_error_count++; . m3 X4 p( k- u! |! `: G2 D }! {8 _" p4 H% N: ^
} ! T% _0 h6 L: E. c6 s6 e3 A* j }2 Q/ u' S! T5 I# Y4 u5 h+ n
& j$ \! f% u$ w4 Q /* 报告通信结果*/" o& H1 H) ~9 M. v' f; a9 O; b
if(upp_error_count != 0) $ Q8 X9 C; C1 `$ Y; u UARTprintf( "upp_error_count=%d\n",upp_error_count); - |* q0 u4 x8 l L2 h else' J' i6 b6 V* v* v
UARTPuts("uPP transfers complete!\n",-2);8 z9 X# B4 U) s, E) U
f6 c. c. Y' i) [
UARTPuts("Do you want to print all the data?(y/n) ",-2);: l% X' T/ {/ L( K0 Q1 B& Q" _% u
UARTGets(ch,2);1 \9 }; N) C2 M- X: `3 {" t
UARTPuts("\n", -2);) A! T$ t( Q; N7 t2 m7 R% X
1 E% w. ^1 w4 w/ r- t
if(ch[0] == 'y') ; `' s' s7 x* Y& E {$ H! h1 T8 L$ D+ x! }; F) @( f
/*打印全部读到的数据*/$ M- R4 r/ X0 L! U
for(i=0; i<upp_frame_size; ) ; O" ^2 q4 }4 f3 g: B% G6 f. ~ { : a+ v$ t' M5 q- q/ w* D$ _ N for(j=0; j<5; j++)7 g: U- G5 c9 V6 S% K, o
{/ M: N4 z Z4 D4 I2 j4 i
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a); # A: [4 o/ m, P1 a$ L3 z0 C i++; 2 e# O2 g: R# P+ X //if(i >= 4096) 6 L& y$ |- S8 Q // break; ) R* t, B( u' F0 L' W! y: k9 O- h3 q; q; d6 K
} W3 q& E/ M: R+ l6 X UARTPuts("\n",-2); ' R7 y# ~( R( o/ w+ H: o8 W) G }/ n! X4 _# t' u$ b0 t( Y" x- M
}0 u' ^% [1 M" t9 o2 g! H- p/ ^2 e. s