标题: upp问题,在SYSBIOS下的应用问题 [打印本页] 作者: tulipyyf 时间: 2014-12-22 14:35 标题: upp问题,在SYSBIOS下的应用问题 下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?9 O6 n g9 K6 I; i Void UPP_TASK(Void) 0 k* e3 N' y. T{9 W, z \ N3 M8 F2 E. N
2 \" k" e5 ?3 x v9 c int i,j,k,target_int_count=2; / O4 D* b& I W9 h1 D( G' r0 R char ch[2];1 Y. p( C, D3 `( n. m. V
/ A1 b0 J+ K( y$ b! ~' Z3 J 6 }: Q/ i! G; r# t7 R" C * Q7 \7 i3 ^% g( v+ P& B upp_interrupt_count = 0; k7 w0 u2 P+ O. \( W5 d3 I; L
upp_error_count = 0;* `+ |7 m% b( X+ P
. r( u* y) n" k1 I1 d UARTPuts("\tResetting uPP buffers...\r\n",-2); ( D' i2 _0 m' y // Initialize data buffers# S' Q. k0 R- e8 B" h( U" `6 y* P; @
for (i = 0; i < upp_frame_size; i++)' j. S, E/ V0 G" F* X
{ ' {+ @* G, p0 w" P- g5 z1 h upp_buffer_b =i; 5 E7 [! L3 ?+ F. ?% m H1 {/ `/ U upp_buffer_a = 0xDEAD; 6 c+ o6 O8 I" r) k7 v } 2 f. l+ V3 T7 t. O# p+ Q' q . N& B* I0 T3 C% U' p9 R //for(i=0;i<1024;i++)5 |% j* V3 ~+ [9 h; m! j+ M
// temp=0; 8 D; k- ^- }- c4 _7 f" V8 o p0 o2 L
//UPPReset(); 7 U9 k& \! `5 v8 d# ~+ v /*启动UPP DMA传输*/) S" G K; ^. m( z
UARTPuts("upp_prog_dma_i\n",-2); / L! w* ?: M8 J3 S |6 c2 ?1 U4 x4 l upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a; " B o* E7 \& u upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);% i1 u, }" z8 h, A6 g
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16); * ?! M4 d A; n. b* }9 _& d* K5 O
UARTPuts("upp_prog_dma_i\n",-2); 3 G; l& d/ e* B7 G upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;6 X8 G" {3 x0 ~# V
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);4 H2 K6 f0 c! v y, ~+ X4 g9 y3 m
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16); 6 O) @& i7 ~5 @5 T$ X9 ^# H+ \+ O: q/ w7 |
/*等待UPP传输完毕*/6 M5 P+ ?" T/ u. q& {
//i=0;* k" ~! ?8 m3 V( @2 u; L. {
//j=0; 0 p+ b+ Z- {* L1 J+ k* [ while (upp_interrupt_count < target_int_count && upp_error_count == 0)7 _# \5 B4 m2 v
{ ) m2 f2 R- |/ n/ H /* 测试UPP传输的同时操作普通DDR数据 , K2 G" q4 x6 w/ V temp=i; ( y8 H. L. U7 h5 ~ i++;, f4 l3 w0 i/ z6 M
if(i==1024) , B1 u1 v) x* h: G3 d3 l* L- Q% b { " H3 n) p& O2 W* J/ l1 h i=0;+ |7 g1 v* n& |2 a: I
j++; 2 P3 r+ P. T" Q% c4 y" }% E }& b/ r1 T$ U& [, V6 G
*/9 g: I7 O$ X6 d; u) h
# z8 ?- Q; i G; T asm(" nop");! K; l+ c0 F0 G/ K3 r5 y! M
1 X. H; B0 N7 H) }. e3 L //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count); k1 W$ K7 c5 z$ \+ m% j } ; z' K I! z# O& Q & c; G2 |/ h0 N4 G+ B /*检查UPP传输的数据是否正确 (loopback modes only)*/ 1 w; @* ^/ t3 \/ H& Y+ | //UARTprintf( "i=%d\n",i);3 E3 m- g% G/ e& X5 @( u7 o1 r% _/ R( J2 M
//UARTprintf( "j=%d\n",j); 0 @5 ?. w0 i3 R1 b% M/ B' L UARTPuts("Data mismatch in buffers.\n",-2);- k+ n8 c9 u$ A, F
if (upp_interrupt_count == 2 && upp_error_count == 0) ( T* Q0 K; o( U4 c7 V5 U: z4 m4 d {, d. T% _( T1 W
for (i = 0; i<upp_frame_size; i++) / ~! D# n. c+ d3 F1 G \ {3 l- e4 x. f8 a4 {% s
if (upp_buffer_a != upp_buffer_b) % O( C, O+ @/ V5 e { 3 i4 @( f. [/ H: q5 y; q$ h7 P0 S: L upp_error_count++; + u3 H$ z3 o+ V; M( p. b! Q, ~ }. m; g' ^4 L. ~: `; A( w& o
}6 M* G$ W- Z' i, q. _
}6 h W& @. q* x t
% A `; b" ]6 e# L0 \/ `
/* 报告通信结果*/ 4 s4 G) ~" [% R if(upp_error_count != 0) 7 a: y' r! {5 S5 y& o7 ~( P UARTprintf( "upp_error_count=%d\n",upp_error_count); # ^. \9 u8 j5 z" ] ?+ n: }5 O; b/ u else; w9 M8 i# R" j. P$ u
UARTPuts("uPP transfers complete!\n",-2);- X4 e) `! H1 j3 `
- {" Y# T8 l, d% X
UARTPuts("Do you want to print all the data?(y/n) ",-2); # s& h% A4 R7 T& ]8 J1 E2 `) |8 N UARTGets(ch,2);/ s3 V1 E. q$ s% U. y
UARTPuts("\n", -2);7 x2 z Q: z" u! C. y5 _0 ]
9 ~) {) H; _; e/ h- C if(ch[0] == 'y') 5 k7 A* L" {) u$ o { r% y- R0 D( _
/*打印全部读到的数据*/0 U' r: N4 k$ e# _3 g
for(i=0; i<upp_frame_size; )5 R. F9 q2 N. J, \( R! h
{ 1 b1 s4 M: Z5 ]' G for(j=0; j<5; j++) ; f# v. d7 V/ O* o( e { ' w% v/ f* P2 e; U$ s0 C4 F% J UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a); 1 m5 S% M$ {: l7 N8 T i++; # x# y# `; s, n- j, F7 E //if(i >= 4096)- q; p& ?/ Q9 g# j. \
// break;8 `$ x& |' K/ \ t$ G' o- |
5 J2 D6 [" n n
}0 B0 W& P% h0 ~ w/ a* y8 r
UARTPuts("\n",-2); 4 F0 q0 j) S P0 v! l, ~; q3 v: W }% n% M* D- r% T6 c! o
} 0 l6 U, v% B9 }7 L1 `3 j# _$ p5 _) o5 F* E; H; E
}/ o; Y& ]3 @3 v' l