|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
# `. q" n% K9 X6 S6 UVoid UPP_TASK(Void)
6 z+ K2 i# Q9 S3 g x) E{
. n1 V* w R% D& v+ v. D; h" E7 a1 f
2 y" i. |' D* M& M2 T* t+ o' ? int i,j,k,target_int_count=2;) H! d8 l% t6 |# p
char ch[2];
7 |$ E! L7 G* E/ E2 J' t4 j( t8 |% G% ^& A: u% O5 M/ R0 y3 w1 [
. S7 x4 e' O$ C/ m3 u0 G5 }- o9 X4 R \1 j- c
upp_interrupt_count = 0;4 G) d& g0 ~9 ~# \8 W- j: y# N
upp_error_count = 0;
: Q1 L# L% A$ `. `: F4 i3 ^6 _# W" m, ]1 @. J5 o3 N' l; E
UARTPuts("\tResetting uPP buffers...\r\n",-2);* n* j& f |& ~6 ~+ K6 Y9 O: e
// Initialize data buffers
& l; L! Z+ i! c# f- S. t; `2 r4 h for (i = 0; i < upp_frame_size; i++)
) c" z4 S8 o4 Y' D& I$ P {8 n3 v7 U- y* |0 u/ @
upp_buffer_b =i;7 O/ t" f8 k5 t" t
upp_buffer_a = 0xDEAD;3 V2 \% r. F9 s) {
}0 L- ^. v) d4 T9 }
, j$ U, H7 B+ p+ N% P2 Y* c //for(i=0;i<1024;i++) E- e+ [ c A0 z+ i6 q: T9 ?# W
// temp=0;+ V$ w1 Z; S+ @5 }8 {( U" D; z
0 v0 ~. J R0 w; L; C //UPPReset();/ y( Z1 }( K; g' U9 E
/*启动UPP DMA传输*/
: j9 u8 D8 Z: ]0 `" L: d UARTPuts("upp_prog_dma_i\n",-2);
3 V, D) E9 I$ _+ Y3 j# l9 u, x upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
: L: N0 s- o6 O" L# J2 L upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);/ s+ U. h3 k8 D% \* H+ D% |0 `
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);4 b7 q0 z) a6 s7 ~
4 J: W3 t4 g1 o. D
UARTPuts("upp_prog_dma_i\n",-2);6 R8 g9 m: k# a2 i X `
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
; W; q4 m5 g, v' N1 L upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);8 P' K6 [2 r0 Q, K: A) ?6 D( B
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);* `; ~5 o+ z8 H1 @
" \4 p) h( F' s" d /*等待UPP传输完毕*/
3 s' R" G- i2 |% \, ` //i=0;) {0 M) U5 G7 u
//j=0;; U+ w3 ~. v2 Q3 ~8 `
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
W) O( u* M/ u3 x' C7 G {# H* n5 L/ ^7 }' ?
/* 测试UPP传输的同时操作普通DDR数据
( `$ g, @. b( R temp=i;
6 s" n7 J% r, e/ j. ^ i++;
3 q/ l0 q; \; |; s8 ^8 q if(i==1024)4 v9 ]0 H' [. B0 @
{
9 e$ F8 T$ D0 ~+ D' ~ i=0;
: U' Z0 L1 c7 K ~ j++;6 A, K2 a: p" Q
}
7 e t- b- J8 S* ~2 D' n/ B */
) m2 N; |- z$ L" `* W. T6 O
& h- W% i S1 a asm(" nop");
( q; o# K8 p! a: \/ A- }
+ u3 ~" R) H2 p+ C0 Y+ O //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);' o) V' p4 {' C1 o. V$ `
}. q0 D6 K' Y; }, w2 D
+ n) s& W4 q) Q# m) Q# ?) w /*检查UPP传输的数据是否正确 (loopback modes only)*/ _) U8 m& W9 Z# s! `. P
//UARTprintf( "i=%d\n",i);6 Q1 M) D* l7 s. s
//UARTprintf( "j=%d\n",j);+ q" b: a- l7 X: `8 i0 I9 F9 Z
UARTPuts("Data mismatch in buffers.\n",-2);3 Q! _6 `; P" |* U
if (upp_interrupt_count == 2 && upp_error_count == 0)
3 ]6 D5 M! {$ @ {; T) S4 }! |$ E3 X; f
for (i = 0; i<upp_frame_size; i++)
6 k1 Y& \/ r. n+ K3 `4 v0 Y; {& p8 x {$ N* [/ i4 e/ x: \0 f
if (upp_buffer_a != upp_buffer_b)4 j6 q8 d) @: y; [9 N9 C% s
{5 x4 E! x o5 g& t
upp_error_count++;1 J9 w6 T; z6 R F( i. @/ O" q9 x
}& @9 N4 d$ x$ Y7 e0 D- W( e$ R
}/ n. L; O- d$ L. I. H7 X
}! U0 I. c1 ^3 p7 |
/ U+ I/ [+ M( d( ^$ R /* 报告通信结果*/
3 t, C- A: M4 U7 n if(upp_error_count != 0); m! Z5 P& A7 c6 k5 k/ k
UARTprintf( "upp_error_count=%d\n",upp_error_count);
; l) F& H% }% w# c7 u) Z& V else4 f- l$ y& N8 k% l! y
UARTPuts("uPP transfers complete!\n",-2);
, B/ v% X" W0 b- `9 K$ h: D, ~! o- g; }; g& D
UARTPuts("Do you want to print all the data?(y/n) ",-2);8 t! s- Q- z0 F+ W" y1 O) O2 ]
UARTGets(ch,2);$ }, u# l7 Z( s) V5 M) M
UARTPuts("\n", -2);& s9 f+ k F8 ^, Q3 m! w
/ }8 P5 Y r5 j* @: v: d, }
if(ch[0] == 'y')
* P: ?. E: \( V# W+ n {' D* Q, [0 {9 R" w( a
/*打印全部读到的数据*/# D; }- @% I1 O3 \
for(i=0; i<upp_frame_size; )$ T3 L0 Y. s+ k) ?* w
{& G- W2 f' e+ Q2 G# d+ D3 I& \
for(j=0; j<5; j++)% n8 R; {* W+ ]! V& e
{
% c8 M: E5 T. F) H UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);( |$ L# i4 y5 i; K- A. z( A
i++;
0 i! w4 v) v1 T //if(i >= 4096)7 x& T0 [. _. l3 M2 r8 s; R
// break;# W s% v, r( I7 t; i
2 B3 d p6 B# Q/ Z }# F0 E; `2 Y) ]9 t6 V( ^; F. `" R
UARTPuts("\n",-2);; l" }) [; }' z, b8 e, Q9 U
}
6 m6 w1 q: u( H4 y3 r3 X$ K8 _ }3 r6 r- S, t' C3 i9 f3 ^# J2 j. N
& |8 K1 e* v3 R8 I. h+ _
}7 t l6 v& I2 s1 N; n3 }5 Y- j
2 _0 M) R* q% \
# S+ ]# i+ O7 t+ Y |
|