标题: upp问题,在SYSBIOS下的应用问题 [打印本页] 作者: tulipyyf 时间: 2014-12-22 14:35 标题: upp问题,在SYSBIOS下的应用问题 下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?; ~4 z' l8 [* j. { Void UPP_TASK(Void)* v' u+ P2 a, L& X- a$ r6 `
{% ^* u' ^) ?7 e' K$ j0 T
: E, S, \# C! P; h) o- G! }
int i,j,k,target_int_count=2; * h' V/ O, U: g7 Z. ]9 K char ch[2]; 7 y t8 K3 F7 t1 ~! ] ' L; l/ Q |7 p/ C, @! z" Y: u/ o" u
. b2 S1 ?4 p: j9 I upp_interrupt_count = 0;' _2 V! v3 X6 U ^
upp_error_count = 0;# Q3 x/ ]' }7 c' l
4 \. y! A( j# h5 P
UARTPuts("\tResetting uPP buffers...\r\n",-2);- Q8 D1 m! K# o$ ^; b" B/ p' v
// Initialize data buffers ) q) [" U& r/ a- @ for (i = 0; i < upp_frame_size; i++): T. a2 A6 W' D. M( M( T
{ . T% ~7 K y: h& M4 o upp_buffer_b =i;: d0 }; u3 z3 p5 z3 q1 G
upp_buffer_a = 0xDEAD;% e2 o. Y! N3 E$ w+ h* A) R/ h. E
}8 H& ?+ a- n [$ j) t9 E
. ^8 _2 I% \3 h6 E4 c5 t //for(i=0;i<1024;i++)/ a( O7 i* L) [
// temp=0; ! ~7 U" Q8 Y4 x7 k 3 R% e% Y) r! H6 @ ` //UPPReset(); + Z9 ^7 x2 @ I: [' }9 |3 ^- A5 b: i /*启动UPP DMA传输*/4 l& H: u+ }; i, Y
UARTPuts("upp_prog_dma_i\n",-2);7 m0 d8 x' T0 A* J5 @
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;$ J; E7 K" a, _; @# A6 e) |; L$ k+ k
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);* R' I) j; L% \# X) q! v6 b
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16); 7 z! y. l R8 T( v& w& A/ q0 U2 M E* L, F
UARTPuts("upp_prog_dma_i\n",-2);$ L; J l+ s0 p7 t$ l$ B
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;# O9 q$ {- B7 ^
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);7 y- t5 p* k0 Q: ?. g, M% @: A
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);- n* f+ R; [$ O g K
$ |' ^# c" G" n q
/*等待UPP传输完毕*/* ^( w4 z) r" d0 j: Y8 o& h1 M, Z
//i=0;1 f2 i) G5 Q$ c; Z' u
//j=0;. F4 D a/ g$ v. d, }. h
while (upp_interrupt_count < target_int_count && upp_error_count == 0) 1 \# M! G" I6 |7 P. \9 j) N {8 e) i! n# ]9 a3 O5 b8 `2 P" N k% Z
/* 测试UPP传输的同时操作普通DDR数据 & k3 M; q' ~5 y& Y0 J temp=i; : b+ k- }5 l4 G4 R1 T i++; $ `9 |( q" D2 ~6 n6 C4 V' a if(i==1024)0 ~' z& ]0 M$ ?) n, x' @
{ - K( c! m6 ]% p( ~- o. q/ G9 j i=0; / o5 z& c0 O/ R5 b* i3 T j++;+ c3 U, H; G1 C, l
} j' W7 ?7 S5 W5 E; |, U# ~2 t# z9 K
*/) V1 G h0 Z7 H0 g
0 ~- \3 w- d3 q. [$ c asm(" nop");$ U! J+ K2 i3 d0 \6 H Q: P
9 t: ?* s; B+ D( V9 J$ ^ //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count); 6 H1 _4 p' V/ N0 g5 e. X }3 H8 M/ P% D! t( }5 ^
( J% g2 B; b# U$ {9 u6 |: {
/*检查UPP传输的数据是否正确 (loopback modes only)*/ : j, o4 q, G' u. }/ _" P" i8 C //UARTprintf( "i=%d\n",i);: I. {4 T. d: m. L) M
//UARTprintf( "j=%d\n",j);% V; [+ T* z5 y! Z1 k \, m V
UARTPuts("Data mismatch in buffers.\n",-2);) U& k. K3 k+ C/ R3 t, D, G+ u
if (upp_interrupt_count == 2 && upp_error_count == 0)' w2 ?5 p3 h- [4 P% O
{& P3 t; F) m9 x7 L& P
for (i = 0; i<upp_frame_size; i++)2 b- `) w( @& J- i+ t' Z. j$ H
{8 Z. u V7 F& a
if (upp_buffer_a != upp_buffer_b)' X! x" o; j' R' C7 J( j
{4 u/ O w0 x( s0 u& W9 _6 n% t
upp_error_count++; p# b! G( p/ }
} / Y1 v4 S$ `: A3 r3 g+ r+ g } `# u3 R- O' i( m7 B- S
} 9 a6 a8 ^7 ?) d) n/ y4 m6 B o0 h* K _1 \6 X# W
/* 报告通信结果*/! Y% c# O1 C+ X. Z6 z: s6 w
if(upp_error_count != 0) / }8 Z" K+ F7 L3 g# n UARTprintf( "upp_error_count=%d\n",upp_error_count);- e X1 t- C7 y
else ' u }5 V6 c q# _1 } UARTPuts("uPP transfers complete!\n",-2); & |, O* K. A$ T1 s( ^8 M- X8 h0 D- w: u" `; K
UARTPuts("Do you want to print all the data?(y/n) ",-2);# e' y$ S- s* l8 B; |
UARTGets(ch,2);& v8 [& k* }$ K% }1 [: d& \0 D
UARTPuts("\n", -2);6 p. g6 I& p* S3 j+ h5 ]
; _# [, `' A" O% I
if(ch[0] == 'y') / g. Y2 ?7 p# R/ ] {/ k& a: R4 ]7 Q; t; t% S) _* {
/*打印全部读到的数据*/' l2 Q6 m. q: F# V+ M* }* n
for(i=0; i<upp_frame_size; ). _' h. H8 F9 h3 ?6 ~3 U
{4 f. X, q: X S/ @
for(j=0; j<5; j++)# K, S2 E$ n! d) J& j' L; \' r
{ 9 l6 G" ?7 J6 S7 ]7 n5 [/ z' M8 U UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);8 g' M- h* A1 ?/ r% T
i++; : Z2 J4 F8 k( C' S! j! Y3 b //if(i >= 4096)8 |: f% e7 y1 [) H, y1 {- } @, E
// break;# J8 U" ]4 w* b
7 C% t5 I# d w }3 i# v9 f( S8 W9 e7 z
UARTPuts("\n",-2); " E. b S+ U. e; M* {# ]3 _ }$ l2 m: s; Z' M) E4 E
}. F( r4 z, z6 o; A/ R5 h/ T) ]% {