标题: upp问题,在SYSBIOS下的应用问题 [打印本页] 作者: tulipyyf 时间: 2014-12-22 14:35 标题: upp问题,在SYSBIOS下的应用问题 下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?: O2 m5 w" @- j& K) r6 G Void UPP_TASK(Void)0 B/ w* b) T# h) b9 H
{5 ^& A+ _$ Q. t9 ]4 x$ y3 n
$ }6 {' C: I, \0 T/ d7 V5 w+ W. O
int i,j,k,target_int_count=2;$ D- L2 ?/ m! o8 f% m; Y2 w/ d
char ch[2]; - \! n* f. \; L ?! I9 u1 ?5 J; T) O" |8 P6 V6 Z' f
' b2 U, h$ z1 y F' T" N - @2 j. F$ E1 q4 t upp_interrupt_count = 0;. [: |+ D, N; P
upp_error_count = 0; u4 Q* ^; d" E2 u3 ]1 G
8 m& h0 R$ p4 ^( T# d6 c7 v2 p
UARTPuts("\tResetting uPP buffers...\r\n",-2); 3 A& h8 L+ g" x' ` F/ r // Initialize data buffers- t. f# {5 U% S* _1 b8 M+ J
for (i = 0; i < upp_frame_size; i++)+ R# K- ]; F8 b' F8 H% M
{ - e/ ]& p% E9 h, ^, [5 t' _ upp_buffer_b =i; R; Q( \" {/ O2 d! G upp_buffer_a = 0xDEAD;, P: t5 o) N) ]
}9 m# H, I# H4 x
5 P) v1 Z2 j" d //for(i=0;i<1024;i++) ; F1 J* l. b* S9 }% D R // temp=0;( q6 c' A! B* [7 B+ J
# J9 m- R) I6 O) Y5 k% i //UPPReset(); 0 K3 d; P0 V% H8 _6 w1 I9 V /*启动UPP DMA传输*/' s/ k i, O$ ?
UARTPuts("upp_prog_dma_i\n",-2);6 I! r+ |: N; l) W
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;1 j4 w& W* l- X' I: V. H
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16); - d- L. M: ?5 Y) P0 Z, | upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);2 j4 w$ @1 d; u( Z8 P- g1 A
/ r+ ^& ]6 D }4 i
UARTPuts("upp_prog_dma_i\n",-2);& `$ ~+ s/ m' [2 `; O
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b; $ t% ~8 J# j" ~ upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);+ Q. c& z2 z/ M* U( T8 X2 q
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);' I1 x2 ?% R/ k( V8 i2 ?0 P
( v' T% o8 C. b* h /*等待UPP传输完毕*/ 8 }( a; }. O1 D //i=0;. a0 U9 P- z/ z. P) h- P2 k4 S
//j=0;9 v" f: h0 I! p' @/ J
while (upp_interrupt_count < target_int_count && upp_error_count == 0) 9 |5 ]" K7 t2 [9 S {* A9 p, E0 D9 u; R7 D$ @
/* 测试UPP传输的同时操作普通DDR数据 1 j, e$ u6 g& k) J+ d' T/ C D% Z temp=i; / p. L& N/ p. T6 F$ W i++; " X( q4 b( T9 n! T if(i==1024), L! U/ b. Z/ o: f1 I! O0 d, Y
{ ( F6 {( A6 U# {, H8 c i=0;) \: K" {6 U% j
j++;6 W; @' n0 g. W" I4 N
} ; Z' _( G+ I& M+ Z" V t7 j( D */; v: a8 d2 |0 j8 r5 g& Z
0 T+ `. v7 L7 Z% C' N7 B4 M asm(" nop");/ |% Z" F1 o/ a! ]+ B
( s: F s2 \, i, T8 C
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count); ' _- W8 w$ t8 h/ B% P h4 P } 0 a1 o! w& }6 E3 E" y5 ~) U$ q " U9 r* s( N2 ^4 I' i' l: B0 u& i /*检查UPP传输的数据是否正确 (loopback modes only)*/# ]+ q; Q3 \2 b# v, x
//UARTprintf( "i=%d\n",i);5 o) L, I/ M+ J" x$ l+ f; t' G
//UARTprintf( "j=%d\n",j);/ ~0 ~. o( h0 t$ ?6 k x8 a
UARTPuts("Data mismatch in buffers.\n",-2); : o& g0 n: Z% ^$ z if (upp_interrupt_count == 2 && upp_error_count == 0) # o& a8 k/ s/ v { ' A0 k4 _, }# x: @0 F: } ~ for (i = 0; i<upp_frame_size; i++)& U- f8 G" V/ J% U5 t( A% o
{ 4 B. D- Z. z6 ~6 f" V if (upp_buffer_a != upp_buffer_b) . Q8 k& G. F6 M) l/ z1 Z; J9 [/ ? { 4 M; i1 }5 Z# f4 X8 I upp_error_count++; 4 F" |9 {% Q' ?# X4 T, J5 x }* ?4 G. k( d( P, g, j6 N1 q4 |
}4 e+ |, p$ d/ V# O/ |4 T, I
}( p7 W- v' J6 V2 u* q; v0 f
6 c7 p& P4 w. m) X9 ^% l
/* 报告通信结果*/ 8 f4 k8 f u5 H& w0 L3 q if(upp_error_count != 0) 9 v1 V' d0 H& n* \ UARTprintf( "upp_error_count=%d\n",upp_error_count); & R9 Q: _: }* Z# ` else " M& v2 R6 n' q: z UARTPuts("uPP transfers complete!\n",-2);/ l+ n1 L7 S9 _1 Y2 ], j& D* s
1 u2 M7 ^3 r( m6 t: Z1 ~. \! d
UARTPuts("Do you want to print all the data?(y/n) ",-2);6 ]% y; e8 Y/ q0 P5 A w/ P- @
UARTGets(ch,2); - x' w$ m+ j( X2 z5 [ UARTPuts("\n", -2);% Z5 V& @, t2 t9 d( y P- L
& O- R$ [$ f2 H* Q3 Y if(ch[0] == 'y')# W4 ]4 c: Q( Q8 }8 [0 G2 a
{* C* p4 k/ O4 x% g. S
/*打印全部读到的数据*/ $ R# D1 {$ `6 M; i for(i=0; i<upp_frame_size; ) 0 h, G* X+ ]7 E6 w; c { 4 x* z, _% I7 H+ V' f ~2 d! V! T for(j=0; j<5; j++)/ J; Z- f2 K7 C: C/ p7 n! R. L& {
{; T& q+ K. @4 Y# f1 ^
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);& X) `, ` g" @6 l
i++;9 N3 B+ f9 y! ?# G2 T& ?7 s
//if(i >= 4096) . O6 m' M( K7 y // break;5 s% L. f0 r+ Y" Y6 _2 A, u& M
+ f5 r. z2 g( R8 w% S; e } . T- U. v/ q- S' @* s, D UARTPuts("\n",-2);% `, F# y# F1 S- d# }. [) V7 f
}6 P2 m/ [( |$ p o: n
}5 H$ w$ v. f. _' O; l
- F5 Z9 ~* v# Q/ C7 A+ R9 a8 Y
}; a0 ~3 I \' _. o