|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么? H4 n0 ?+ }. @0 S* t
Void UPP_TASK(Void)1 a, V/ ^, z( z) c' Y7 O; y5 w
{* f7 e8 `8 `6 c* T L3 Z4 i) I2 i
* u1 d4 y k0 Z" e5 M int i,j,k,target_int_count=2;1 f2 e) b m' \* M( C
char ch[2];
/ u# q/ x. n3 h: v! t
0 I4 `0 H" w& z8 k" g3 d/ J& b1 ~. Q: {! b6 X" d2 C$ b
- W, e5 ^$ n N2 [4 E; q upp_interrupt_count = 0;# n, n3 F5 f4 M; w2 [
upp_error_count = 0;
* j) o6 I- c9 G" |3 L% M/ o3 s" R& R
- l% w* N! u# l5 |! [9 v UARTPuts("\tResetting uPP buffers...\r\n",-2);
( `: e: V7 m6 u. E // Initialize data buffers( h1 n6 m8 L9 ?
for (i = 0; i < upp_frame_size; i++)
6 s* Z3 f) j1 g2 N/ @) Y {
6 O1 W; [! k# X, i' P, F upp_buffer_b =i;
+ h8 [& c9 _( t& V$ ^& [ upp_buffer_a = 0xDEAD;
& \* `1 p1 r/ b }
' ]" `! ]; a+ [$ ^- l7 w$ h6 {6 b: M2 L3 R: x! B* g
//for(i=0;i<1024;i++), I0 y& x; J. b0 q9 Z3 J
// temp=0;$ S& A H& n* q) F( @' ^
, S M. _8 S5 p# o# B; E o
//UPPReset();) w D6 @& L2 f/ T! Z: F* m
/*启动UPP DMA传输*/
! d4 x) H1 a' T: E' V UARTPuts("upp_prog_dma_i\n",-2);
8 `4 c+ `6 [% R' y Z' O/ w upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;, g. \4 E, m9 E& \# u) Y( a1 F. I: y
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);% ~( J0 H' N' u# q% s$ b9 N
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);1 a" V" |9 @* d
: R6 K! t0 F @; V( D7 V/ r4 Q UARTPuts("upp_prog_dma_i\n",-2);$ |5 T/ Z8 j. f' H, p0 T) _
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;1 D" M4 a7 z$ [: M
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16); w! |# X; S. N
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
9 J" |+ i; E/ U/ y0 S' V4 N) f- ^( ?1 V
/*等待UPP传输完毕*/
! b% A! p) y$ p* @& n //i=0;
' N. O5 N2 U% |, w2 Y- A //j=0;1 z; C, ]( b0 n# r3 ]$ ^
while (upp_interrupt_count < target_int_count && upp_error_count == 0)9 p, V6 [: b/ X) @" Q
{
8 j0 f8 ^* Q" Y, h- G; }# W: Y! m /* 测试UPP传输的同时操作普通DDR数据: s- f* j. t) M7 D& S6 i& U4 W2 P
temp=i;
, p' V& a& w' t# T3 G8 k5 h) ]2 d i++;5 g- ]7 d1 M7 I
if(i==1024)
0 W: g, k0 s7 i: I% f2 [( x: d {1 z* P9 w2 B# v) L6 C; V
i=0;
2 {6 T4 E) `# M3 G j++;
+ K( `) h, [! q5 ~" y( Y( D* s. T4 W }8 k d1 S% v V" v) k! [# y6 `
*/* A/ g! j" [# r6 g
) J7 F" @% G* g- L# s4 c7 e
asm(" nop");
$ i8 }( M. ?( {1 ?# f! N, s8 [
$ y K' Y6 q/ x: t //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);1 r& X& N) M \ _) T
}* ^: c2 w7 O/ N f6 M# z
3 ~2 X; r2 Y6 {, J5 ]7 A3 B /*检查UPP传输的数据是否正确 (loopback modes only)*/
3 S' D) o m+ ]/ w" m' H! C* A //UARTprintf( "i=%d\n",i);
6 K- A3 v1 ~2 s' M //UARTprintf( "j=%d\n",j);
g& o+ N) H: ~ UARTPuts("Data mismatch in buffers.\n",-2);
0 `: a2 ^7 g' k if (upp_interrupt_count == 2 && upp_error_count == 0): A& I# C" a" e. F9 D) f+ s
{$ r8 x9 J+ }& o2 g3 q/ q
for (i = 0; i<upp_frame_size; i++)2 ]' f# ^+ \" |- M2 K; {# i* A& _7 F
{
/ ~$ u* T0 `$ a7 ` if (upp_buffer_a != upp_buffer_b)
7 d/ M* |7 L) C6 S7 L+ x3 N {+ M4 i! f2 f, y( X: K
upp_error_count++; Y) E/ s- c3 i1 c6 J
}+ M, _% N+ _$ e$ F/ R- e8 i) U
}
. |( e! n- Q$ w, Z3 V }
- M! F: u! z/ g( N: T8 R4 p/ |7 o6 K0 P( s* w5 H
/* 报告通信结果*/
! O% c5 l8 q7 ^* B3 U" F( x) F if(upp_error_count != 0)' ^' Z# I& b; ^6 s0 |! q% ~, a/ q
UARTprintf( "upp_error_count=%d\n",upp_error_count);
6 i. y2 ^. Y$ O; Q# s else6 y% g6 `, N" h8 S, L$ F* z/ }
UARTPuts("uPP transfers complete!\n",-2);
" v+ x" F$ r3 I* V4 H- J
# x% x8 O j ~. F8 Z" O( Y- U4 G UARTPuts("Do you want to print all the data?(y/n) ",-2);
4 }" S& R' d4 L# Y5 k UARTGets(ch,2);
( n* i; L) T" h& e0 H, r% z5 v, T UARTPuts("\n", -2);5 X, ]3 L z9 @5 ^; B# Z
5 ]8 p2 U7 }7 W6 M if(ch[0] == 'y'), \" k, |' T- X# h) \. X
{3 D* h$ }, X6 x2 D, F
/*打印全部读到的数据*/
3 \/ a0 v& A* h for(i=0; i<upp_frame_size; )/ Q" S2 _9 b2 m. M+ Z5 y
{' `# \! u+ n9 {
for(j=0; j<5; j++)
; h# y: F! ?* n" o {
1 b; \9 T$ h" p1 S UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
9 t. s8 w' r) m: |9 h i++;
2 ^- M* k( t3 p- u //if(i >= 4096)
# K$ i7 J+ [8 M$ |8 j7 Q // break;% v# ~9 ?( ?9 L. n
4 y, q# H4 V: z* w4 H$ m. e }
% P( a' ?$ T, C$ ^9 w6 [ UARTPuts("\n",-2);* `' P+ j3 {+ o! t! K
}6 s# V* [8 z7 P# f# w
}* A6 a' L+ o9 J( `% O4 G( Q
o- o2 l1 s$ a, a9 w0 R, r
}
9 Y% Z* r, Z) z& ^( N) W1 x, O# v7 T+ f* T
' t7 ^( o) E( U# t |
|