|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
- [; a9 t) f a! o9 SVoid UPP_TASK(Void)# s( y* n. I( ~- s
{
+ Q }" Z# p5 ~# F7 m K; @* \
. k) O6 H8 h: _; V6 }$ W1 `5 Y- s int i,j,k,target_int_count=2;
; K' u+ d8 e/ j3 q3 i, I5 \8 A char ch[2];
- b. L' x5 A; l9 _3 _: W& h/ Z' t& o
0 [3 S6 C N3 j S$ q' D8 F# i4 |6 \7 ]( X
r ?/ m) w2 _+ {6 G upp_interrupt_count = 0;
" `5 D0 m. p- p0 Y% }8 i, u5 } upp_error_count = 0;
9 l1 H" |& R6 I* X/ V4 m0 H
0 A# ?2 {: B' @0 l; f/ p3 M5 { UARTPuts("\tResetting uPP buffers...\r\n",-2);7 b5 T, v* m( Q+ g
// Initialize data buffers
$ g9 d) j. N4 e% d7 c for (i = 0; i < upp_frame_size; i++)) L. Q( G& k- c3 n' |
{
9 K. n, s- e2 x: Z: { upp_buffer_b =i;
$ C9 G' E- c5 {4 c2 b! K$ U' b upp_buffer_a = 0xDEAD;& L8 T1 i: U" a6 D5 e8 {
}
6 `* T5 R) `. h6 l8 |3 o3 R2 ]) \3 V6 v' T* p E& c8 q' D, C
//for(i=0;i<1024;i++)2 L) t1 Z6 ?7 Z5 O
// temp=0;& F7 ^3 Z9 P6 t1 H. z6 P$ }# `1 m- _
" K- J( z- j6 \- k5 ]8 P) t s W, a
//UPPReset();; L$ {- n* }, N) K
/*启动UPP DMA传输*// J5 J) b1 g Q
UARTPuts("upp_prog_dma_i\n",-2);$ E/ s5 }+ E3 I9 Z1 R) ?
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;9 t% m& k" s6 l
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" t& V4 p5 ^9 U, T( R- B) t# A upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);) I: h$ \6 B6 N1 r6 a& a+ `2 t
! F- C+ ]" T2 X UARTPuts("upp_prog_dma_i\n",-2);
2 R; y$ z3 V1 e6 s$ @/ [ upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;; t/ I# F9 |8 Q
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);( F. _8 a! P! b! ~
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
* p, J1 |' n0 p# ?9 L: c }
% ]" ], B/ E: R2 H, |5 w /*等待UPP传输完毕*/
) f/ x; a4 R& S5 W) f //i=0;
3 M1 Y: M0 N$ r/ J. q //j=0;
L! U% R( P' j3 l3 ~' i, L9 b while (upp_interrupt_count < target_int_count && upp_error_count == 0)
$ l3 L, s6 e% P# W2 ?* K) Q {
# K( o; G# s) X/ X& ]8 ^$ Z /* 测试UPP传输的同时操作普通DDR数据
% C6 \" F& O) C' f+ G0 @ temp=i;
( K. Q: H( f" n6 ?/ C9 } i++;
3 F" S' A9 E4 ^1 v3 T if(i==1024)
2 Y& G3 Y4 \; x6 q {
3 |. R6 r5 h( I, O i=0;
* I9 k% b; z+ q- j. o j++;
# d) z; [4 k2 z5 P, j. |/ E }
3 `. v- @8 B* U! X */
: a- n) A4 O3 ]+ i3 V& s8 E S# d' X; O3 ~. f
asm(" nop");" P) P! \& x9 ~. d! D A
7 k' o9 O4 a$ A, B" t2 X9 w8 E: L& M
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);; X% l) v5 N: Q- v; Y
}& s4 S+ X2 A) p; c: H5 }
1 o5 V: C0 c \$ T/ y+ v
/*检查UPP传输的数据是否正确 (loopback modes only)*/ f6 K: D% ~4 l. ?& v7 `, {& D q
//UARTprintf( "i=%d\n",i);2 ?# d/ T7 K5 j0 g/ d2 j
//UARTprintf( "j=%d\n",j);* T, R9 F5 ^7 l# G8 N( ]
UARTPuts("Data mismatch in buffers.\n",-2);
" w/ r( S& L. ?7 {8 M" r+ u) D if (upp_interrupt_count == 2 && upp_error_count == 0)
$ f- t, q+ T0 o0 n. z- h {. u- x' u' q, `% s. R& K
for (i = 0; i<upp_frame_size; i++)- ^/ {0 C& a2 N! N
{) w" X9 {5 V; s# c2 ], ? [
if (upp_buffer_a != upp_buffer_b)
m5 Z7 T* h, e }+ K5 I% Y0 Z% I) Z {) j, q5 R$ n! R; E
upp_error_count++;$ w1 q Y8 d% F8 ^6 g( P' @
}
) K* E9 D5 ^' N7 f1 x4 I }& `# E0 T, v7 r" J/ W1 E" N0 e
} B4 Z" U' _( [( F' y
6 r7 }) Q, v: O1 L' y9 p& ^# K
/* 报告通信结果*/
5 w3 K8 {8 Y9 t/ `+ Y- n- {% l if(upp_error_count != 0): c# \+ \& ?% \' W
UARTprintf( "upp_error_count=%d\n",upp_error_count);! k9 \: v: ~% R% P4 k8 S
else
, F2 w+ e" @) z8 \# p5 C- a UARTPuts("uPP transfers complete!\n",-2);; ]) q* a5 Q% f2 u: K6 l4 P
) ^- F$ k0 B7 h Q, ^
UARTPuts("Do you want to print all the data?(y/n) ",-2);+ @. b+ Y8 A/ D1 K+ ?9 C" U" M( _+ Z. D
UARTGets(ch,2);) k+ F9 B& ^2 A/ O" @$ x7 ^
UARTPuts("\n", -2);
$ e/ T0 P! a6 W/ Y1 `1 n3 j0 \1 G" r( |$ W5 w1 N
if(ch[0] == 'y')
+ T$ [# s* M8 t4 C P- C% | {& l6 {2 V3 z. P! z+ N
/*打印全部读到的数据*/
% C) }% `8 K9 A9 z' s2 I. ^ for(i=0; i<upp_frame_size; )0 i/ I: Q. N% t; a5 L1 K2 x; H
{
! X6 d8 B# G8 h3 |8 ?: D& z for(j=0; j<5; j++)
$ S! {6 `( m# b( H {
6 a3 v/ q8 n2 T) Q2 u9 W0 e/ J. s, ] UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
* \% m0 k8 T6 Z! T' Q$ t i++;
* _% a2 k5 h) x: U3 F5 F/ d( @' L //if(i >= 4096)& s- x4 f& b" Z7 R9 z6 P- P7 X: u$ x
// break;, \# T0 T* `! |4 z/ A$ J
& Z# O. M9 i. r! r+ {- ` }
* F- @# ], p! |5 {5 c* m8 G8 w0 ` UARTPuts("\n",-2);* |+ U4 j2 u* Y) [" c7 r3 \7 b ~
}
# o4 b' ]4 U) t# f' H4 _- u1 H }
6 X3 t8 B+ o8 m. T8 ?5 u V( ?: y }. k: c @, o1 d1 _5 ^
}
c* t$ L; [* B% m' x. K- E) M3 |- c* x$ k# F" s1 j5 ?* |
7 i8 o* I% p$ S* J+ g
|
|