|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
1 j& S+ t# }3 ^; o) Z1 dVoid UPP_TASK(Void)& r1 X9 F/ c/ P9 T6 c w# q/ g
{
' b/ m6 j- h: _) W# I, X5 U# L( i( M5 d4 ?* [3 e
int i,j,k,target_int_count=2;/ n1 P- v, G/ s4 V' n- D. c/ Y
char ch[2];
9 ~( e* v& ~8 \8 g& r
7 t3 |: A5 Y. S6 v* V' p! ]& l- C% R3 ^( K* q/ @( ?. _
/ @. v2 F$ z4 U0 |0 a! Y4 ~ upp_interrupt_count = 0;7 p; J Z/ X3 Y
upp_error_count = 0;/ w% E0 k U6 O4 W+ A' s+ _; R! v
2 a! M7 W$ E$ q8 r1 A( L3 ?
UARTPuts("\tResetting uPP buffers...\r\n",-2);# O. L, O4 w. }! t: U
// Initialize data buffers2 l/ m& n. S1 H; `
for (i = 0; i < upp_frame_size; i++)+ D9 J5 D4 E' p( l g+ E
{% s# _; O8 a, f0 V# F: I
upp_buffer_b =i;
5 i, U- p0 \0 e& Z! ~/ [ upp_buffer_a = 0xDEAD;
5 f1 |. D- H2 }6 |: V }+ P: c/ t' z. h' d0 L q' W
. _3 c0 S: k8 G //for(i=0;i<1024;i++)
8 n" | @" F% h8 `1 L, @3 o // temp=0;
4 V, v1 I* w L) i" }. c' k+ @0 F, n" J: `$ r& r
//UPPReset();/ B* _, I# z5 O* d- g/ @3 }
/*启动UPP DMA传输*/
' Z7 j5 k, G1 x UARTPuts("upp_prog_dma_i\n",-2);% Z3 O% ?* o6 M
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
W$ I3 P) d1 T: L upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);# G$ ?9 _9 F( G4 _* j$ |# `" F
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
. S! K3 j" A* T/ N/ A6 W; q. r' Q5 Q5 K
UARTPuts("upp_prog_dma_i\n",-2);
" b2 z; l3 O; n3 }6 ~ upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
0 }* G0 h/ c9 i& w# `) N* R upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
& d8 u* \3 |5 o/ k5 y* t9 f! D: _ upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);% x2 g, Z Y9 {. O2 q4 [; @
& m {5 @, i, c3 d2 J /*等待UPP传输完毕*// o7 B) G" R8 X2 j. X0 m3 L
//i=0;: z6 S7 t# h5 W R' n) c( Q2 K
//j=0;
( {: a$ F1 E8 ~9 A6 n/ C while (upp_interrupt_count < target_int_count && upp_error_count == 0)/ h4 B; h3 ?! T; h6 F" s: g& a: b
{2 `/ x( j" k( F9 l! S
/* 测试UPP传输的同时操作普通DDR数据
& G9 G5 I7 M9 d temp=i;
; X& I; K0 n0 ~5 x- f% B0 X5 p i++;3 T' U/ n( O3 F$ _; I# ]. G" ~
if(i==1024)( |1 P K! w# p* V9 c$ g7 Z
{
- `3 V" T- Y9 t% ?2 j" @ i=0;
8 c) Y8 |! G! o9 u! q+ }3 C j++;
- M2 }6 E* K- b) ~& M, Z* H }
6 i" a! D y$ f8 F9 S3 H+ h */, F* [7 m& u$ S( P
6 d1 ^1 l8 ~+ g2 x9 D asm(" nop");
1 Y% K6 {' i, {: F! u8 Q/ R5 _+ i h, o5 `' T( M
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
7 I" H0 w3 w' ~! E+ E; {( j0 } }) P+ Y$ @& R6 x# [7 O0 c( T
; |4 n4 U9 e; T
/*检查UPP传输的数据是否正确 (loopback modes only)*/
% I T8 I3 x2 Q& K. y4 U' ~* I //UARTprintf( "i=%d\n",i);) J6 s/ [ W- I4 B+ F0 t
//UARTprintf( "j=%d\n",j);4 b: w5 ~: K7 T, ~
UARTPuts("Data mismatch in buffers.\n",-2);2 v0 C4 q* ^; ]: `. ?. C
if (upp_interrupt_count == 2 && upp_error_count == 0)
. M- Q0 [2 y# i' g* ^ {( K3 m! N+ M/ c& c5 R6 Z1 d
for (i = 0; i<upp_frame_size; i++), \% o8 J, Z; ]6 x: K6 R
{' |8 o; R- L+ S5 S
if (upp_buffer_a != upp_buffer_b)
* S$ N, {6 _+ @- t/ r( j {8 S' G9 T$ a4 Q# K( K
upp_error_count++;/ m: Y5 ~* \& m% S2 s9 b p
}$ b8 s$ h8 l6 M* {0 ^2 ~/ T( B1 f
}9 q$ S7 @" e4 |2 j" V ]
}
3 R/ T8 t9 e7 z& P0 J1 q3 p' J2 r/ [- q3 M( v' l K, _1 P% @
/* 报告通信结果*/
! z% V9 X- g3 g; z if(upp_error_count != 0)" K$ P* ^: T& i, F+ n4 J7 w7 G
UARTprintf( "upp_error_count=%d\n",upp_error_count);
8 W0 q& ^1 E8 |% g, C. |3 } else: l& K! S/ ?# T
UARTPuts("uPP transfers complete!\n",-2);
$ d L! A" ?0 s+ i1 J! e7 w' h3 Y/ Z s/ v' m3 b$ m
UARTPuts("Do you want to print all the data?(y/n) ",-2);
0 N( F9 e- @. c& g6 q UARTGets(ch,2);
! ?8 v3 L8 f% s5 ]( s T UARTPuts("\n", -2);% G4 @+ V7 G* x8 c
4 j0 B/ r: H9 N+ t3 |& H) p if(ch[0] == 'y')
& H9 c/ E: n3 _- i c {! }1 L% L3 W/ E% h9 C& P% y) {
/*打印全部读到的数据*/
' F( R5 p1 T. h2 V+ b1 N+ { for(i=0; i<upp_frame_size; )2 @9 S! G+ j5 J9 [# @
{" {( p, L3 y9 r: c8 o* z: m5 J$ l
for(j=0; j<5; j++)' m O8 m* y4 ~8 T! t& V5 w
{) g% S8 M6 @2 }7 _
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
- M" J# h/ N% }. z i++;! L2 B3 h0 K9 K2 N; r
//if(i >= 4096)" J& N2 M" o! Z9 M
// break;4 S2 E! M. M/ ?# Z& k7 p- d! ^
: J h1 p. H. j9 U
}! F! Q% f& Z6 Q! c; d0 R6 [
UARTPuts("\n",-2);' M# y' {8 g' y( I& S
}& m9 X7 k0 l/ E% ~8 N
}3 ]9 D; d, A1 r b5 V
, b' o: X+ n" h |" Y$ S+ M+ y" G}4 y0 V8 [8 c: ]: }
' e) k. N( ~5 l
1 e6 r: g* m: l# _0 |4 b% c* g |
|