标题: upp问题,在SYSBIOS下的应用问题 [打印本页] 作者: tulipyyf 时间: 2014-12-22 14:35 标题: upp问题,在SYSBIOS下的应用问题 下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?- Y/ p) u8 g% j- o1 m8 F Void UPP_TASK(Void)- q8 I. S, g0 y$ f- K
{9 v; R' o5 t( v3 u3 }: W
* x9 p+ e2 s' X/ X. b, d8 [2 [
int i,j,k,target_int_count=2; ) l+ n0 N9 @0 ~& J. I1 t. ] m char ch[2];; t- d! b4 u! p: b6 T; N: i% u9 {
) m7 l- m( t" E; |% b1 j% M) q* s# o7 G+ o. U ?
6 h0 e3 h3 {' ?- A; b upp_interrupt_count = 0; + v' z, H/ J* y) x& V upp_error_count = 0;; c. x$ P# S- l" X. [+ T7 C' d
{7 K1 l' n/ q5 Z
UARTPuts("\tResetting uPP buffers...\r\n",-2); 6 d% S* }8 `/ o2 e& t& U( F // Initialize data buffers 7 X \# \) W7 `1 t5 b% h for (i = 0; i < upp_frame_size; i++) 9 w1 U+ P/ J( t4 G" Q {3 z/ H: s2 h0 Y" w! h( e; g
upp_buffer_b =i;% e0 Q% C9 _- d
upp_buffer_a = 0xDEAD; " T+ U! C U O C) G0 D4 `( ]; o }! v. ]" N6 D3 \* R" A# \' N. l
4 F6 P% F: e1 i) I //for(i=0;i<1024;i++)4 x3 n7 f/ W6 ?3 g. i1 y/ r* Y
// temp=0; % l* V! S2 q/ m$ L, C6 j$ N. @( a ?# _7 {% S4 V2 G, n
//UPPReset(); & k' ?8 q, Y. D /*启动UPP DMA传输*/ ) U) ~; @; i7 H% _' ~ UARTPuts("upp_prog_dma_i\n",-2); - S5 q' d) ~; L8 F. _7 u upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;9 {5 E6 O& |8 ?- P
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);6 Z6 Q7 r5 Z% F$ h: J" V [+ u/ N
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16); 9 ~) Z+ ~+ E5 F8 G- x7 k5 K, e 3 h0 {8 t1 F( A7 p$ d6 G7 B7 O; \ UARTPuts("upp_prog_dma_i\n",-2);3 R( y) P7 I! j3 g9 B+ X @* @
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;# k1 G0 G6 q. s% \* J( g
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16); e, q M. G& j5 O" g9 u& k+ m
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);: A$ m+ w c4 }) ~& B
3 P# p6 v t# N8 O2 A$ h /*等待UPP传输完毕*/) ]) U8 t9 C& }6 S. s
//i=0;8 I% {) L, w" n1 g" \0 r- k
//j=0; 1 r# W- q5 X! x5 x while (upp_interrupt_count < target_int_count && upp_error_count == 0) 7 @) C6 P; H$ \8 i {: Z' W' T( r' j# C/ ^( @, K
/* 测试UPP传输的同时操作普通DDR数据8 q" ^( x, |* B, m f' @0 F5 G
temp=i; 1 {/ Y+ S, n, j+ |% }9 D4 {. L% b i++;. Y" x7 v+ o' R0 ~2 U1 f
if(i==1024) ! b7 L/ n5 j7 ]6 X2 a/ r) p {( E* i1 h1 y) R. p2 ^5 X
i=0; 3 o6 C0 f) q, |& R" z$ u ^4 J j++;. c$ T% E4 C5 ~- B
} - I, X) J" q# J% J6 p- j *// }2 J. O3 y- F" O8 o; @. i/ U8 _
" b/ _9 P4 z8 ?8 x" W
asm(" nop");% `2 ~! {* T; Y4 v. ]3 t
0 {5 S3 x: X( S' N' d //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count); N4 E1 X. ^8 B( M& h1 F }4 P! n( }) O0 b$ N# z
: x% N- A( H: M
/*检查UPP传输的数据是否正确 (loopback modes only)*/ , m5 H; c4 n1 ]9 z9 [8 U+ q //UARTprintf( "i=%d\n",i);9 d+ R3 ~$ ^' @9 I! J$ Q# C( R
//UARTprintf( "j=%d\n",j); I! L( i1 y; a0 A# J. Y3 O' K
UARTPuts("Data mismatch in buffers.\n",-2); 0 H) p/ G5 p: q6 J! u; U if (upp_interrupt_count == 2 && upp_error_count == 0) + |1 j3 F7 s/ k6 v) w7 q" | {0 X" _1 h) V1 s+ v- x3 _ f
for (i = 0; i<upp_frame_size; i++) 0 W2 l. L- ~: j {. G! ]' t( W* ?5 u3 [* }9 i, x
if (upp_buffer_a != upp_buffer_b) 9 h# R2 q( p) E- D { . d# L% _' ?2 f, C* ^2 l l upp_error_count++; 8 `& j/ }/ Q9 [. t8 W }( F8 w# k0 |" z: v* H$ j
} 5 m4 S9 g; F6 n& W) V }' N* t6 B8 |% H4 y
* x' ?& t' o# V+ ^; f6 u
/* 报告通信结果*/ - a, L5 r& s% ^; Z6 d9 n if(upp_error_count != 0). y. G. x! ^3 l% `$ E% j) h
UARTprintf( "upp_error_count=%d\n",upp_error_count); - d; S( I o* K else) @% c! h& V) F5 j% ]) a
UARTPuts("uPP transfers complete!\n",-2); / Z( h: r9 o8 }2 S6 Z7 a3 B, j2 V! s/ p$ L% O
UARTPuts("Do you want to print all the data?(y/n) ",-2);1 e+ |$ Z2 K7 r& v! ]9 m3 o" P
UARTGets(ch,2); ! X5 y8 D% k' k2 D; m2 p. I* L UARTPuts("\n", -2);! I T& y m9 Y, t& v' ~
Z0 S c6 U4 d1 I$ F5 T, Z
if(ch[0] == 'y') + d: i+ H# B3 A% x1 r6 O {& [2 x1 h0 f7 q+ S& q5 G0 v
/*打印全部读到的数据*/ & U3 ~* P0 a/ R* s6 | for(i=0; i<upp_frame_size; )6 D" W* n; i) D3 L: K
{ - Q: T6 _: t3 N9 I7 j for(j=0; j<5; j++) * z7 a8 z3 V* I6 N! b { 6 \8 f: e; T9 x UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);; T% S6 p& F' a. F* j7 i
i++;; ^$ A; C# x% m7 q/ U
//if(i >= 4096) # @% c, }) B$ `9 ^ // break; , P2 p, c5 x' c, Z6 ]( t2 u 6 }, a) _" Z( o }, q6 F) [: ?# G; \! Y7 ]1 n. K
UARTPuts("\n",-2); * V, u3 \0 s) u0 }, g }/ g' S9 |3 G( d! T, {3 {
}& K' J( F) {& H