|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
, _. S9 l3 l0 @! {Void UPP_TASK(Void)$ Y3 z' _/ H1 D- _8 R4 X
{
1 E; \4 ?6 P) ?1 e3 ?* D. b% C& }( ~- D, Z. e/ ]; i) F
int i,j,k,target_int_count=2;0 ?1 L8 s @7 ?/ I
char ch[2];
3 N; ]" V6 Z/ V
1 T/ f7 [3 T! | O7 \
1 J6 V. d1 U) `& C
7 T- e3 _7 P; l" B- k2 s6 c9 I upp_interrupt_count = 0;* d# l9 s8 S S" V, q8 O) s. w
upp_error_count = 0;$ d! ?/ x2 r, q0 c l) U- O, A
# ?4 j/ K0 d* h/ D
UARTPuts("\tResetting uPP buffers...\r\n",-2);! J- V# z1 `1 g+ w4 \1 J- f
// Initialize data buffers0 d% g3 r) U7 {, F* n% k
for (i = 0; i < upp_frame_size; i++)
/ [$ M( C$ y9 A {
4 M* g; [- U4 y0 e( X upp_buffer_b =i; p+ T- D/ \6 q% p
upp_buffer_a = 0xDEAD;
7 k% _9 D; t' ?% U5 D4 ?$ T }, {0 J& G: j8 e. |) I
0 T3 g. T6 ^2 w) @4 B //for(i=0;i<1024;i++) [% M: t; P: U0 v, J- a
// temp=0;
# F% U2 I$ e" {. a! d1 h, y; U5 ]
' L+ h6 c# A, r" j9 m b //UPPReset();) _3 f2 R8 X1 r% Y) c# B
/*启动UPP DMA传输*/
( D+ h3 X; N( P/ w: \# [* t# o( D7 P UARTPuts("upp_prog_dma_i\n",-2); G5 a9 Z6 R( f) e
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
* F8 E' E( v6 d4 y upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
9 `! z- p) v' ~8 H, A$ { upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
1 e+ i5 I4 @' J) a3 v$ _4 m
; D8 \# Q, b0 Y z- C UARTPuts("upp_prog_dma_i\n",-2);
5 }: F8 C0 q% H- R upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;# b' I0 v! I$ S, c
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* t6 X' R; @) l% F! L# I upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);& E+ H( q/ a" t' H0 t, E$ a* n
/ c+ v1 z1 E% _" h
/*等待UPP传输完毕*/
' \6 ?+ p3 M7 i; l //i=0;$ Q/ V: @7 I! [$ Y
//j=0;; |5 [1 f' A9 w6 u
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
. y$ `' r- {8 e( x) }; B {. g/ b5 w5 i8 u h
/* 测试UPP传输的同时操作普通DDR数据
: y8 Y8 F* i' F4 p) K temp=i;
- ?9 O P" a3 u i++;
' ~7 q& N* N' D% w* M if(i==1024)
! t" E1 [: \! a/ F( L& P3 y {
2 U1 Q9 L+ I" [* _; X$ W* { i=0;. T) D) x& K# I7 r
j++;0 {6 V/ F J4 v% N
}
& O* A. y) I% u) `7 U */
; b* r9 M3 Q! X- U( a8 L
. [3 e/ a! Z! _3 n3 \) W asm(" nop");9 p" \, m/ u- ?# s
$ m% q/ f3 m7 a6 l9 ~) `
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
5 P6 i' y+ f1 A" z } C5 G: O' Q$ H1 b" e: ?2 w, k7 H; M% ~
; @0 N b% c1 I6 t
/*检查UPP传输的数据是否正确 (loopback modes only)*/
, x/ I; \) G' ~2 w //UARTprintf( "i=%d\n",i);
. C6 `' P9 O7 a //UARTprintf( "j=%d\n",j);! H) i9 R7 C* {
UARTPuts("Data mismatch in buffers.\n",-2); g( Y! K: d* _; G, x& m/ ?
if (upp_interrupt_count == 2 && upp_error_count == 0)
K$ c9 w3 E7 o+ @% D O9 u {
9 r9 R# N- A" S* \0 w% x { for (i = 0; i<upp_frame_size; i++)$ w- V8 e; l2 ~' P
{* f& g2 u3 r: O. u
if (upp_buffer_a != upp_buffer_b)
& f# I+ }& F& T0 h. }8 ? A7 x {
, n4 ~/ P" T! W* `* l. p" I upp_error_count++;$ T+ K# S& l l$ n2 m% l
}
" g- z- w) [8 k3 Y1 [ }
: p! y j& k& B9 P6 n4 a }$ f$ D* [; a7 v' I
5 F1 s8 j9 S$ d* u: B0 B- a5 M, Z
/* 报告通信结果*/
: B& r; Z& s( B3 Y/ F( j z if(upp_error_count != 0)
: F7 b' M* k. N7 o6 C! Z UARTprintf( "upp_error_count=%d\n",upp_error_count);
& H( R9 S/ e6 O4 Q% e' W else0 V z) W$ M6 H1 a* y u5 L
UARTPuts("uPP transfers complete!\n",-2);
. Z6 _# U7 A" @9 u! \- v8 |9 Z# N: v- o& Z$ m# O; D7 l
UARTPuts("Do you want to print all the data?(y/n) ",-2);0 ~: D8 j2 z: t+ T
UARTGets(ch,2);- |$ R2 K: [' ^3 ?9 w# {
UARTPuts("\n", -2);$ R Z- h& |( L
; L. B1 x& P) Z* @/ K1 l
if(ch[0] == 'y'): d! ?9 }' n: |4 J# y+ i# @ o
{6 `$ a. c" Z' t7 l7 L
/*打印全部读到的数据*/. U4 x! o! }. h* L8 Y' l
for(i=0; i<upp_frame_size; )! W* e; O7 f; K: g! V
{: V" }' ^7 O0 p9 H
for(j=0; j<5; j++)8 k/ h' c( X$ x2 R1 E0 V- ^
{5 Q0 Y* z* d2 r& I0 G' C
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
& A$ V! Z& i/ d4 h* R: R i++;
- d: m% J2 R o7 f: W4 c- K //if(i >= 4096)
. O. [/ |1 n3 ?+ P# Y" o8 e# [ // break;7 K6 d& U5 z( c% x$ N7 G# b
' J# ^0 r; e8 i1 |( W }
$ C" e U9 O* l' O. P% c1 u UARTPuts("\n",-2);( ~8 q( W1 {. Q" Q! E$ T" [6 T
}
+ b& z/ [7 H: e: ?- w" W# h }" x7 w) Q7 Q4 ] S( t! s. _* i9 Q
0 G" z4 b) N& t}
$ }% K. \7 ^& h5 k& _4 H; A8 w4 D7 @! Z; Q7 G7 Z; \- J
& g; z! [* i% [* h; Z |
|