|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
& z- K! V0 n0 W6 t4 |. N# lVoid UPP_TASK(Void)- R- C+ I: @3 j4 @6 \6 F$ j
{2 K, o* \) E! _8 a2 {. q+ R
6 g" x4 }0 I4 Y4 `. V7 @5 `. l int i,j,k,target_int_count=2;
! {5 {6 I8 E8 {# S2 f* f char ch[2];
" l3 T/ |0 Q4 Z9 P/ Y
9 Y$ C; G Y8 q9 V1 H1 ]" g/ i3 {2 v+ c0 v% K/ K
6 _/ P& }! E- X" I" c2 R0 O5 a
upp_interrupt_count = 0; P+ C: W W' x, o( t* ~% \. Y- G
upp_error_count = 0;
8 E& N0 T$ s4 Z9 b, u9 N: w' F" ]) R1 [2 M1 K0 P+ @
UARTPuts("\tResetting uPP buffers...\r\n",-2);0 s% @, \3 I0 P) ?
// Initialize data buffers) _& ^! x& V$ y$ o
for (i = 0; i < upp_frame_size; i++)# j: }9 Q& s; f+ R) U
{
1 q S/ k. \1 N9 ~% a upp_buffer_b =i;* u+ b! C6 M& k/ A( M
upp_buffer_a = 0xDEAD;
6 G9 Y& L! b* T9 g }. l, c T" t1 @0 D5 {
& w. n9 Y, Q9 V8 y; F$ a //for(i=0;i<1024;i++)
6 s4 {1 J( J& G& I- r! ]( r // temp=0;& r$ q' g r8 p Z
5 Z$ m! s8 \( Q# T
//UPPReset();& U; B/ ]3 v7 h$ F, a; a% g/ R+ s3 P
/*启动UPP DMA传输*/
% G; r1 V1 E8 E( S; D UARTPuts("upp_prog_dma_i\n",-2);5 G3 ~. m2 U9 M; @5 }% E" J- w
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
7 e# {7 p% m, M( [' m3 _/ o upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);* g8 c) _* D9 p1 ?3 i* [) j
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);9 `5 Y! I- t' y- M" ~
, U, ^" j% Y9 v* e6 J2 U8 \ UARTPuts("upp_prog_dma_i\n",-2);
, b. ^, D/ x7 ?6 Q% _ upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
3 k( [$ X$ w* G! G1 g; i, } upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
& ]2 \* w, C& s1 O upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
9 w3 g& W! I l* E; d$ {6 {% M* L ]
0 t6 q! Z* G t) q( a /*等待UPP传输完毕*/5 a# w& \/ `+ }% b1 z
//i=0;$ y k, [! p' J, `* X" }
//j=0;' t& C7 B8 I% G1 e
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
. H1 f0 H; @/ Z' D) R5 G& Z4 U {
7 f! w0 F; b# |8 f6 Z$ Z /* 测试UPP传输的同时操作普通DDR数据! Y4 y+ L. i3 U8 Y: U6 ^ J5 p
temp=i;# r2 H% X" H( C: A
i++;* X! ^6 S( P) g$ e; l
if(i==1024): c9 _: d2 I! W/ n1 r. c% ^- E7 {
{
& x9 \8 K3 T* [ i=0;7 K# e* |( _8 q; c- |
j++;4 M/ a1 g1 F/ z
}& v1 n8 _! F. t
*/- @& e* F) Q2 _
% p3 u: l6 P8 \0 ~' I. m, b$ g asm(" nop");
" q1 c# l- v) Q5 ]9 f8 g* y# H9 Z( }! S& R
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);7 c+ K8 ~: |; P: i$ [- B
}
* y6 S: `* e' M% r
/ P! S: V7 R6 S1 E /*检查UPP传输的数据是否正确 (loopback modes only)*/
8 ]* Q7 `" q; E1 j. C9 I: Q //UARTprintf( "i=%d\n",i);
5 ]0 r$ y6 j) Y8 \$ `2 ~( Q //UARTprintf( "j=%d\n",j); b; f" E. D! M
UARTPuts("Data mismatch in buffers.\n",-2);
% M+ A5 i7 l, { if (upp_interrupt_count == 2 && upp_error_count == 0) x5 C Q. x) U/ q/ {" ~
{
5 |8 y4 Q) q7 J for (i = 0; i<upp_frame_size; i++)6 V; \ F8 Q% t
{
' k$ n# S" V6 a* ]2 z if (upp_buffer_a != upp_buffer_b)6 p+ c) W/ c! `3 |9 F+ R
{
8 f1 O& }* D2 I, M2 p0 i+ N upp_error_count++;
; S f2 }& b/ H: ~ }# N1 n n, H& ~1 m
}3 \8 B( a$ G. `
}1 A$ U) @1 v( [. V* b J( H9 L( V
$ |8 Z0 g+ A# q9 e3 ?/ o /* 报告通信结果*/2 q3 k; s6 x, @, g1 z7 X- {
if(upp_error_count != 0)
2 j& q) }# t4 i0 C: w UARTprintf( "upp_error_count=%d\n",upp_error_count);% \. m6 g. _% h+ W
else
$ K9 c( M9 D# E: R! w% ^/ O UARTPuts("uPP transfers complete!\n",-2);
& I e, O3 ]7 R: t7 |# d6 w# F6 C; C: m1 [ p
UARTPuts("Do you want to print all the data?(y/n) ",-2);
$ F( T: p$ M# W* F) ^ UARTGets(ch,2);8 V! k, p& e6 M. {7 Z3 v
UARTPuts("\n", -2);7 e, \ ?& v; x0 A
( U# j$ p* B8 `, k4 F3 |
if(ch[0] == 'y')5 L$ q- }6 p$ n* Z% B. W4 P
{: ^/ D9 O4 N( Y+ K7 r- b# W
/*打印全部读到的数据*/9 a. ^6 l+ g" ?; I# C( L3 p: `
for(i=0; i<upp_frame_size; )# m2 t+ j: R. C
{
) U2 b. x. S& r0 k0 o0 O for(j=0; j<5; j++)8 a) X* y3 R/ ^6 A( U4 D4 ]
{
" e; |' w7 [. N& [ UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
. ^9 e, H% |+ l& [6 u0 ?! s i++;' O* E9 N6 |: ?
//if(i >= 4096)* H9 Q6 b- g' p4 {$ x7 @1 Q
// break;% x5 w/ P. N# R: n6 n# }
/ D- e7 {$ [/ l9 m& A9 q }
6 X. d0 U( G. S* r UARTPuts("\n",-2);
: j5 d( P6 C3 Y5 E- }2 w: H }0 q3 w2 a3 K/ p& @9 y
}0 ~ V7 s! ^/ r- s
, _( X6 k7 o) ?. b4 \: u
}# w! k- v( ?& e7 v7 Y
4 M3 ?: o. z0 l7 p
/ ~1 Y( K1 _/ z/ x% @4 F0 X
|
|