|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?6 M$ ^3 _1 b, j( ]. v$ i8 `
Void UPP_TASK(Void)
" _1 h# {7 d7 S, K$ a3 e3 z; W( u. l5 A{
6 A) y9 Z; m. j3 ~+ G0 h2 c* N# o: ~/ S7 x6 d \; _4 f! ?6 M0 I
int i,j,k,target_int_count=2;
/ l" }. F9 m- X, H# t# {8 }5 U- `; B char ch[2]; [) U N6 W" W' {3 j# N/ e
$ C j3 h7 O: u& }1 w) ~" Q# y7 |8 e; S+ |4 J; S" L# b: U
: q' X+ N3 x' U
upp_interrupt_count = 0;
: E5 X0 P( H& { M6 Y upp_error_count = 0;. }3 I. w( H5 v* i- `2 h0 v
! F o8 A8 o6 T# [ w0 k$ q8 T! j, Q UARTPuts("\tResetting uPP buffers...\r\n",-2);
" N8 Z- s6 X2 t/ Q // Initialize data buffers
1 P$ e$ s9 \8 A: e for (i = 0; i < upp_frame_size; i++): `6 X6 {4 H2 t! K& ?
{
: Q& m3 ~, c1 y! Y, s upp_buffer_b =i;
: B( M- o3 l7 l( w3 l# r2 f! ]- P3 @ upp_buffer_a = 0xDEAD;
) R8 Y% }$ j, J8 K; G, B1 q }" J6 W1 Y# W+ F p' w z4 n" F6 f
1 e1 {* ?8 Q. c2 } //for(i=0;i<1024;i++)
" ?0 k+ U5 g- n7 v, P // temp=0;: n; @6 E5 I( w2 J
* j+ Z* @8 u8 t$ r1 v* L
//UPPReset();
, i/ F0 { W! e( W, i. ?; { /*启动UPP DMA传输*/ A/ Q1 |( A! B' `8 [
UARTPuts("upp_prog_dma_i\n",-2);+ Y0 J/ R( ?4 N& v/ w4 a( E ~' y
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
" b5 W+ O( ~" G upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
$ p0 t" J. h% q upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);6 }9 z9 z# B4 D! H/ e
5 a5 ]5 z2 ~) P) o: b' a: J z1 z; [ UARTPuts("upp_prog_dma_i\n",-2);
! Q& |- B6 |1 } upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
% N; V0 d. E8 Z& j* O8 U; C upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);5 A4 M2 ~. t- y# l; @
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
0 O# }! _& p% T9 t' V' q/ } S7 `
( j, N# K+ H1 r6 z /*等待UPP传输完毕*/6 R: c# K$ `, \* p5 E
//i=0;
o6 ?0 t/ `2 V+ o2 A( G, V //j=0;
5 v( s# c# D* x1 N! H/ w while (upp_interrupt_count < target_int_count && upp_error_count == 0)
% c1 X- T" [9 j/ ` {
* b) }+ h. e! ^( j# h' m; R /* 测试UPP传输的同时操作普通DDR数据
" ^0 [# L; r# c& M! @4 I5 z" E temp=i;7 w& ^) B/ g: {7 L- N% b2 o
i++;
" H3 d/ m+ ` Q# O if(i==1024)" Q3 u5 j; [4 m/ V% w( Q8 y
{# T5 k' @; v% p7 t/ y1 c
i=0;, F# }* y( u, w( e: e
j++;
+ @1 l# e3 e0 v: w }
0 m, M9 a5 s6 i$ ~! b */
$ o* t+ E% l/ X& d% o7 a
X j+ X Y1 h: W# ^+ T. R asm(" nop");
3 l$ W4 y; [; S6 e% I) T
& v) a+ `9 b! I& o* k& M, {9 x //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);) _7 G# t7 F1 a: j; ] Q/ F
}& R1 C4 _& D* F% u
- \% m& U/ u# h* Y8 ]. Z
/*检查UPP传输的数据是否正确 (loopback modes only)*/
# g0 {3 V; z$ H" C+ G+ s //UARTprintf( "i=%d\n",i);
# v0 z2 ^* c/ d- V //UARTprintf( "j=%d\n",j);% I& D# @: h/ x9 ?3 p2 p
UARTPuts("Data mismatch in buffers.\n",-2);( f+ S: N5 ~) o1 j7 I, J2 `3 v
if (upp_interrupt_count == 2 && upp_error_count == 0): S+ s% I% ]& j4 x" v# {
{+ o) _6 F$ m- o' y$ D* q' R
for (i = 0; i<upp_frame_size; i++)% b8 I; Y) S4 u0 q/ u( k0 V
{2 f/ [4 _7 y+ I6 Y# D
if (upp_buffer_a != upp_buffer_b)
" h# o6 E" x9 Y { o% y2 a( k M, I& n
upp_error_count++;
- o A2 {2 o. {5 n' K }
. f1 C, V+ g9 a" G4 h9 L }5 t4 b4 ^) g8 ?% _
}# I# X8 e& E! E0 j# p2 E1 v
. g8 o) S7 g$ ~
/* 报告通信结果*/
7 A) `6 H3 P$ r _ if(upp_error_count != 0)* B% M( E+ Z& B/ ?
UARTprintf( "upp_error_count=%d\n",upp_error_count);
& q' Y, @0 M; e } else6 L5 [6 u8 l# {$ N7 Q. n. s
UARTPuts("uPP transfers complete!\n",-2);7 E0 w1 r+ ~0 r6 C. `1 f, g
9 h# X# {! W) K/ Y' B; s2 \8 O4 W5 ` UARTPuts("Do you want to print all the data?(y/n) ",-2);
/ G0 k6 B/ B. e G( J4 {! v UARTGets(ch,2);) o( f3 h: x- `) W( e, C
UARTPuts("\n", -2);
1 b( p7 S3 K/ ]) w) V
, ~4 {3 Y5 w `5 W+ J0 h4 t if(ch[0] == 'y')# B9 W- N% \' ?1 G# N% ]
{
- O, K6 ^( w* k5 P) B2 o6 O /*打印全部读到的数据*/
0 w8 f% s- i3 @5 c; I# H for(i=0; i<upp_frame_size; )( N* O1 L! R7 L" z7 O; c5 y
{
" p. v7 n, C; L9 `' t, C2 _7 L for(j=0; j<5; j++)
/ v# o+ \% U; j9 T* N% m2 U3 Q {4 @. v6 g3 J) W5 n3 H# |
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);1 L: ~% ]# J9 T% |
i++;/ L3 T: R& @ v' g/ \
//if(i >= 4096)6 @0 Q. Q: e7 t2 e0 @4 F, I
// break;
+ U, @; s4 y) Y) K8 v5 g. G) I# k7 S" V: Y" g6 ]4 ~
}+ b/ j6 q0 `8 j# o& ?
UARTPuts("\n",-2);
2 M2 ?( B2 [5 E) f) g9 C; ^9 y `8 w# W }
+ z. ~4 B8 ?% V2 I; b7 a4 O" [! v }
1 X( E$ X' W' U8 m$ I: W, C" C
7 f; p w' _' s) C' R6 }}9 E" ^5 \! W) [" S, o
5 s |! u* g, k u: H/ Z$ B* t9 U; c) h6 ~
|
|