|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
5 s* P% J" R; i4 p: u+ S/ p6 k( _Void UPP_TASK(Void)
1 ~. _3 J6 S5 _: l# a! n6 w) N7 k{
" B; g* i7 f4 }8 b3 x! N) S |% t2 N/ `; `' T
int i,j,k,target_int_count=2;
% z4 G$ M3 _, Q' |& Z char ch[2];
( s, ~( ~& B7 N' A
; P8 P" }) f' N7 e
; A( z( v" _+ _- y7 y$ g; V# r9 n- w# T- `4 F; W! ]
upp_interrupt_count = 0;
+ B; T) _' l. S9 O, H upp_error_count = 0;
; ]* L8 `+ `0 q) l- r
7 w5 }2 \: I8 z9 G1 q& J UARTPuts("\tResetting uPP buffers...\r\n",-2);8 H# M* i8 U8 a( \) T
// Initialize data buffers& B. h" J( O# V {
for (i = 0; i < upp_frame_size; i++)
+ e' E- k) L! y$ o# ?2 F% X {
6 f! V+ g+ k2 B2 Q, J* J5 v upp_buffer_b =i;, S/ V: [+ ~/ }6 a- D
upp_buffer_a = 0xDEAD;
. J, w. V: p8 S9 [4 }1 D* M }! @( P: G# M1 H T# ]* `/ t
6 \6 } @( ~2 |1 Z0 B1 T //for(i=0;i<1024;i++)1 M. m) z: x+ q. F* v8 I: u( ^
// temp=0;
8 b) J( T" f( d' T
$ y* }7 ]( l; m" H. Y# u$ y, P //UPPReset();7 x5 D. u; j: @8 i4 k( b0 z5 o7 W7 b
/*启动UPP DMA传输*/1 U+ ]9 q' b: w: |8 d6 N& M
UARTPuts("upp_prog_dma_i\n",-2);
6 G) s& W) t4 I% \* ^ upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;$ O) G( s) W# V9 C' L( n/ ^5 O
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
3 Z0 c6 S1 u! \6 U upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);* T" X3 j) i" M0 K2 ^
3 Z+ q! e& x; s. L UARTPuts("upp_prog_dma_i\n",-2);
H& `; a. P1 d2 s# d; X upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
1 s% F; @: m/ T& R, b& Z; X2 H upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
s3 i9 Q1 K0 N! d upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
8 i9 o6 \0 N' E. w T
% K8 e6 E# _5 ~# |2 d3 ~ /*等待UPP传输完毕*/
3 J, J# V- x8 e |! u2 D //i=0;- ^% m1 p2 w, | T
//j=0;7 N7 ^# }. J2 d; m( r3 B; L* E
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
# i: |7 v% T! m. z: i% n {
' `- w. a+ I: U- X7 e; T) W' m /* 测试UPP传输的同时操作普通DDR数据; V |% A1 w+ {7 g0 g& L
temp=i;
8 c) A& f% g2 s0 {+ K$ r$ t i++;" |# o: l3 t9 N
if(i==1024)
8 L$ e- o: P8 w. M( @. V {; K1 ]2 ?" N) L" w' G6 ^
i=0;
/ E7 a% X1 x2 F1 L# |1 I7 P* b" C2 ` j++;9 O \1 w' I. i( I" q
}
4 {- @% W0 Z, P- Z! h# k8 }3 R$ `" G# | */
8 ?# V( y! c5 l7 z0 T# R1 j$ m; R5 z& E( y& f% v6 M6 i
asm(" nop");
1 ^# Q' z( ^: t8 `
* g1 d* ^$ I7 s/ a, P4 R //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
$ t5 Z. a& \$ b4 p }
' v1 x4 h1 F. f$ F/ Q, j% U' V4 ]
( P8 n# m( `* `" h# q' E /*检查UPP传输的数据是否正确 (loopback modes only)*/) N/ y$ A; [" o3 M; n; i( Z
//UARTprintf( "i=%d\n",i);
* W: d3 B' z9 @% X0 }% B //UARTprintf( "j=%d\n",j);
( |/ h5 \$ {( U& p0 v% J D UARTPuts("Data mismatch in buffers.\n",-2);
3 ?1 k/ `; s7 b) c& p( h$ q8 T' w if (upp_interrupt_count == 2 && upp_error_count == 0)' ]( o7 G5 K8 o) S! l. p9 k
{( G$ z# i e6 I! e$ b6 E8 `
for (i = 0; i<upp_frame_size; i++)9 O2 x. p" f2 D- f# l* N) c; u
{4 @, s: X( L3 ?. _
if (upp_buffer_a != upp_buffer_b)
" ^7 ^3 o9 ?7 J {. S9 q2 w; L- U$ Z" d% u
upp_error_count++;! O0 q" ?6 L' I1 f
}
8 \. j y0 y+ Y$ ^ }
( B8 V$ h6 @4 Q. c }
4 M: I: z. C! ^4 e8 D/ Z+ j" \) }
( T* t% e! w6 _ /* 报告通信结果*/
( c. {$ o0 p K E+ V+ m0 g if(upp_error_count != 0)
. s8 ?0 D! y% L" b UARTprintf( "upp_error_count=%d\n",upp_error_count);
" w& Z: m! R- k% a else$ H( W. Q1 t t) p& g7 @
UARTPuts("uPP transfers complete!\n",-2); r8 d1 s( }: i) j9 n( G
' `! k6 a7 U5 ]/ j0 X) c UARTPuts("Do you want to print all the data?(y/n) ",-2);0 D0 N+ e: U: H) ?, s9 |7 u
UARTGets(ch,2);
& @2 J: T3 f. ^% o. n4 f; D2 B UARTPuts("\n", -2);
. M; z( L, x4 q& k, P% X8 B2 I+ E; i4 L
if(ch[0] == 'y')
& `; i1 Z- H" S9 Z/ [ {
- O* l- W& } E1 ~ /*打印全部读到的数据*/$ {* a4 n+ X# z O4 S4 f
for(i=0; i<upp_frame_size; ) f. M6 V7 `- ]; N% F
{
- m, q- x* {& b6 i9 b for(j=0; j<5; j++): b! J! }- k/ S6 g q6 I
{
* H4 o3 [: P; {( H6 k; x& k9 a UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
- T9 |" s( C+ d6 r" d( i, P i++;
6 d* `' D" F# T) _& F- T //if(i >= 4096)
# z$ ?5 | D8 V& b# J // break;
; C a9 } Z: ]/ A; u
7 ~/ Z7 K r/ k! \# Y8 y }
+ f' b2 m7 j U6 F1 r UARTPuts("\n",-2);
: }! F: n% {0 O; D }3 W. U0 o: c6 L
}
, F/ r- F5 H2 u, i+ g
* N4 ?& Y/ R9 z! ^, }/ J, u. i; q' f}
/ q4 @$ \8 N8 E/ u8 O. ^
" D @4 ]# \2 Z% e. { I
& O+ N' z! I" _4 p6 Q# Y |
|