标题: upp问题,在SYSBIOS下的应用问题 [打印本页] 作者: tulipyyf 时间: 2014-12-22 14:35 标题: upp问题,在SYSBIOS下的应用问题 下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?) Q$ n, {* T6 c5 K: F% F7 f Void UPP_TASK(Void) . k. l% |" {3 q7 I{ p& w5 b' |1 x8 g- C
( y9 d* u# J8 c( a6 }% F int i,j,k,target_int_count=2;6 G7 I' z$ Y+ a. k
char ch[2];4 ~1 M# k2 h, V( \; n
7 [. d# g. K$ \# _8 [% Q: m8 P* G" s$ R1 \# ?1 B
& K4 J# e' |. |+ L/ ~! Z j upp_interrupt_count = 0; 9 @1 b/ b% y0 {: l2 i upp_error_count = 0;. {! U! q) q U* ^0 o- n( s
, X" Y* n% C d
UARTPuts("\tResetting uPP buffers...\r\n",-2); ! Y" C2 Z/ t7 b% [6 Y, R+ p U2 d // Initialize data buffers1 t6 b) B l% h* y3 `
for (i = 0; i < upp_frame_size; i++)( D, n+ G6 v0 q9 e: k3 _% ^4 ]
{: |$ z. ^7 F- n
upp_buffer_b =i;5 F3 L; z2 u/ \4 N m _# {
upp_buffer_a = 0xDEAD; 7 V0 [1 w2 O/ s" R; { S8 S }0 J3 Z/ f8 \, P: p
. }! I! o* O7 {8 Y- e9 L
//for(i=0;i<1024;i++) * N1 D' O! k. Z6 o0 g# E // temp=0;; z3 D4 p- S6 J# l' X
: }; B! u6 s6 Z; g& o9 o% f
//UPPReset(); ) \, w! \1 F$ ^ /*启动UPP DMA传输*/ - c8 o) l' z" W* z8 d* s; `; ?0 _ UARTPuts("upp_prog_dma_i\n",-2); ' @7 H% @! ^/ c! R4 }* S upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a; . M \5 G, {5 V. y upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);2 x! @9 T! ~2 ^8 ]
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);8 ~9 s y# g" X9 l$ ?
0 u# O4 ?/ @6 ^3 F4 c2 v @$ C
UARTPuts("upp_prog_dma_i\n",-2);2 i/ E" u ]# f x( G% E
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b; # ~1 i; y9 n: C8 T$ x& q$ i0 M upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16); % B5 e/ d/ a7 S% o4 O4 b- J1 y+ U8 p upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16); ( u9 M0 ^1 v. a- I/ ] & Q9 n& [$ u/ z7 m& C% @; d6 w /*等待UPP传输完毕*/ * c; P0 R- i) j //i=0;/ j3 k* g) p4 @1 ~, z! A) ~
//j=0; # W4 |9 o b& t" f while (upp_interrupt_count < target_int_count && upp_error_count == 0) 0 L. N: m3 J8 @6 R* D- L { / `2 ~* c3 w! D u, J$ Y /* 测试UPP传输的同时操作普通DDR数据7 u. K' }" y( e- D
temp=i;) X% g: {: n0 D
i++; - k4 X4 w7 H0 J* {+ C if(i==1024) ! t# t& T. q1 j) H# G3 v& N {7 c, K3 h! Z; ^; d. F
i=0;* B) p2 F8 J( G7 ?9 U
j++; 0 q$ D' ~4 e( f' g* @" `0 E } . B, ] E) t$ i% `# d */: p/ I/ e- A$ O4 j
1 b1 A2 \3 p3 i" Y) n3 G asm(" nop"); - n' O+ n7 y' ~9 W + O3 A! S& j+ d6 [' u //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count); 2 g" I# I9 E0 e5 e6 j4 S: J } - i. ]4 b0 E! E; T, l" I- U, W* q+ b a3 r! W( J2 K1 B1 Q- y
/*检查UPP传输的数据是否正确 (loopback modes only)*/% o) x! {" u5 \; P
//UARTprintf( "i=%d\n",i); - d# k: K$ A( r" x2 r8 g r( ~ //UARTprintf( "j=%d\n",j);% H4 T) B( n9 J
UARTPuts("Data mismatch in buffers.\n",-2); $ s) J' K6 N1 Q8 d' j if (upp_interrupt_count == 2 && upp_error_count == 0) 8 u& `) P! P8 t9 [+ x* W" R { 4 ]' x/ e! e9 b3 t$ J$ T3 | for (i = 0; i<upp_frame_size; i++)/ s$ |1 |+ J: z+ R
{7 ~4 H( |, Y x) n' ~
if (upp_buffer_a != upp_buffer_b)1 s9 B* @5 n- q
{ $ \3 t5 P F+ A upp_error_count++;3 k# |, h1 s, j) d
} " \$ L. s) Y% O3 T" S1 z4 n } 3 \" J* r; G& _" _5 y } 2 H- n6 E' u$ z+ |# L7 l) \" z# Q: B' B- P, o3 N5 x
/* 报告通信结果*/ T- G; |- W( z" | N if(upp_error_count != 0) " \4 b, P% n+ M) u" ~# [6 E UARTprintf( "upp_error_count=%d\n",upp_error_count); 6 U& Y6 o. _# D3 M! C9 |1 W else! z& ^* R( c( H5 I
UARTPuts("uPP transfers complete!\n",-2);" s3 n( X# j1 N; s9 h! |; I
2 a. C4 ?6 ~/ I4 K; `$ X8 m6 X( T UARTPuts("Do you want to print all the data?(y/n) ",-2);) N- \9 O# O0 l1 t9 u* Q
UARTGets(ch,2); j% k4 a; F0 g) \
UARTPuts("\n", -2);% g+ D6 P: a' P! N% d3 P0 o
5 c7 }& x7 y$ R& L if(ch[0] == 'y') ]. ~! L( V& s4 [- M" n
{1 X! O( H) z5 ]- ]6 |4 A
/*打印全部读到的数据*/ , V& k, e' A ~6 ]2 c) A for(i=0; i<upp_frame_size; )( ^% j, S6 \3 b
{ * i/ G; e) w: z for(j=0; j<5; j++) " Q6 R+ h ]+ A+ B& i { ) k6 H) l8 P- @' g. K$ P8 B UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);! [, k/ D' b1 C
i++;3 o$ ]: z7 V3 A4 u4 q
//if(i >= 4096) ; u1 D9 Z* n: B/ X8 I8 f# h // break;' W: s2 |" a4 [$ C- l: k- K
; Z t# ?( C) v) k. T8 G; ^, H }: m/ u: c0 m# t. Z/ b/ E
UARTPuts("\n",-2); ! i( k- r8 g9 Y6 x6 S }1 r0 Z/ g# ?- s8 I
} : ^6 V& m: m0 k+ q1 j9 w* a 4 `' V6 O. Y( ]4 X v} 8 Z s; M& s& l3 a9 X# Z# t7 V w( c