|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
- z- S A. b6 u. f* o' hVoid UPP_TASK(Void)0 b4 H! v/ m7 d5 K, { v; X
{
' ^# I4 k3 w2 _' k- L2 u9 m t4 ~/ c
0 z( i8 A6 x" o int i,j,k,target_int_count=2;5 W+ z+ Y% p% X% _2 ~6 k X
char ch[2];4 e9 d8 T$ C9 l: t0 v
T" P; Q/ z) D+ }& [2 o
! d; y* ]/ q; E8 z9 c; h* o
$ U. v: g/ h( g( M( o0 d upp_interrupt_count = 0;
5 U/ Y6 |3 m* G- ` upp_error_count = 0;
& }4 y3 N/ N0 e- w/ o h( T9 r5 c j& H N; h2 w1 \
UARTPuts("\tResetting uPP buffers...\r\n",-2);) n; u' D- U: X% A W
// Initialize data buffers
' d* ]* O$ U" N# f$ z* S" E for (i = 0; i < upp_frame_size; i++)2 U* l( I3 w X2 h% R' U
{2 q' e2 I( a+ A) s6 B' a
upp_buffer_b =i;
9 [. i7 Z) z' y! X/ D8 M/ b upp_buffer_a = 0xDEAD;, X: S) g3 p/ A* u" H
}
# c& G: Q: P @6 }. b2 H: G; L& @
//for(i=0;i<1024;i++)
9 J6 S5 [7 I. F' P1 b/ u0 j7 R // temp=0;
0 ]" p* B8 K. |5 a, E F6 n- |7 h4 m. b
//UPPReset();
" h3 d+ ?0 @3 G /*启动UPP DMA传输*/0 ^/ N7 S' K! i, q7 w) t
UARTPuts("upp_prog_dma_i\n",-2);0 W3 G; i. [3 l) Z3 f( d/ J
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;" I7 ~) F1 J) W1 J
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* z# i5 k$ ?" X( c upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
1 A' _! \$ u& M# X$ w
# ?( U6 L" q2 J- W2 K t, ~- ` UARTPuts("upp_prog_dma_i\n",-2);
& {9 U* c0 n, H% G( i8 w' T upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;% A6 ] x7 i# |; \4 B
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);$ W& Y3 `3 j6 w2 E; A
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);# T( Y% v9 L+ D: W6 a! n
' a$ t5 u4 t% s+ `- c+ q /*等待UPP传输完毕*/
% h# i4 }/ ?1 H! g( R; R //i=0;0 R0 A. r0 q* ~
//j=0;$ k! L- G* R$ m6 ?: k
while (upp_interrupt_count < target_int_count && upp_error_count == 0)# A( k1 k6 o! o
{0 i' g" W4 v0 ]; X3 b' H- Y0 T5 W
/* 测试UPP传输的同时操作普通DDR数据! k( L9 O3 s; o! t; p/ C$ q# w, s
temp=i;" L8 [7 r( h7 [8 x
i++;7 G+ [; _5 G) N# P% `( W
if(i==1024)' _8 f L" E9 l9 Z1 b8 F
{+ P2 a' P" \ W$ N5 S% N& p/ M
i=0;$ ^. e0 X; @- h! l4 o
j++;
, M8 n* [+ r l& Y! J8 p }
. y( Z( u4 c' s, L( \# c! u, p5 ? */
& x. w: d! x% N$ I& N9 q1 x' Z
. P3 _- K0 ?( b0 z: i" @ asm(" nop");; z) a b" n) @
6 j' c M" J- @: E+ ^
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* d p( m3 J3 A; s- `$ i; k
}
1 @! D. I: x0 B% m, \* P- p8 K/ a. `) G1 k) E% D: p4 r
/*检查UPP传输的数据是否正确 (loopback modes only)*/+ @# w' L5 T) U& v
//UARTprintf( "i=%d\n",i);
" a$ @% b- {" ^ G, b //UARTprintf( "j=%d\n",j);
2 C" D& c; r- { UARTPuts("Data mismatch in buffers.\n",-2);
0 e6 C4 a( `, W N6 L if (upp_interrupt_count == 2 && upp_error_count == 0)% Z! H7 y, C2 _, k/ i0 Q/ K5 L" t
{
( j! S" m% Q+ r- J0 T9 h for (i = 0; i<upp_frame_size; i++)
) x, H: T* F8 v) C {
# n+ M$ {7 |# ^, e) f if (upp_buffer_a != upp_buffer_b)) r' u# ^! U: R2 n2 v6 y
{
0 T4 [' v7 U& X2 X) w2 u upp_error_count++;8 o+ x' c& G! E/ B% b, T- V
}
, e7 G. |, t2 W( m( h3 y3 m6 x }5 F7 m' e" X r5 a
}! r5 `) s0 e. L d* y; z1 e
3 J+ y C2 S3 K5 D
/* 报告通信结果*/
3 G! L, s. q0 ~9 V+ T# t if(upp_error_count != 0)# O# v- p! T( `# _8 a8 [. x5 p% d( f
UARTprintf( "upp_error_count=%d\n",upp_error_count);! z$ b+ t% W9 b# b5 E
else: K4 h9 g# M8 ]
UARTPuts("uPP transfers complete!\n",-2);4 u' Z7 e% F$ ]9 L; D7 j0 Z
; ^. C: j" G3 O# m7 ?: L
UARTPuts("Do you want to print all the data?(y/n) ",-2);. H, i- |7 i7 L8 p; R* K
UARTGets(ch,2);- @ U; V. L7 \+ N
UARTPuts("\n", -2);
0 y( K2 u' D4 v6 a
! ?0 \4 g% u4 i( \* |0 } if(ch[0] == 'y')
) A4 i4 M% E4 g {& b& A- y8 S- S6 V" [( X Q
/*打印全部读到的数据*/& H) w7 ~ p4 G
for(i=0; i<upp_frame_size; )
, P+ ]) W: e8 ]) D: }" U8 p {, ?1 p9 H# V; F9 G% X" z
for(j=0; j<5; j++)
* J! W6 c, t. ?) }4 d" ^' u3 H% ~ {
* s. d, s* Z8 W$ Y' S UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
5 |5 I5 O" N- x b i++;
, F2 a$ L6 p$ @/ l* T ^ //if(i >= 4096)8 M: s: {: h, m
// break;
; h4 b1 r0 u4 P8 B: ?/ g3 y5 P
" d2 v8 ?- ?7 i9 J+ q. C }
% F/ a. n# I, s9 M6 t5 H6 b UARTPuts("\n",-2);
1 F( p3 x' C z } ?5 H3 a7 I7 T& z5 o+ t
}+ y4 A4 L* Z2 Y6 V h9 ~
T- {: b6 U9 R5 u
}
3 A+ k2 c5 t4 U. ~+ ?7 |+ t0 M4 l. }1 |/ d4 i) W) d
0 ^: |( k9 p2 ]5 v5 Q4 B
|
|