|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
+ G1 `- ]% s" v) W7 ~$ c7 bVoid UPP_TASK(Void). B4 C8 r+ C- C9 @& U, m, C
{# \5 |; E. V7 q! @& ~! m q
9 h0 [; Y& e& E int i,j,k,target_int_count=2;
" h! l1 |+ P0 v, P5 C/ N char ch[2];
* U( i+ [! G, c' M, _. F! c2 ` h; N& i; R, u" }# B# K
5 y) _7 J* ]) Z6 t2 G
8 S# h6 r' C# ^# S6 C% I4 |
upp_interrupt_count = 0;. R' M) g! q/ r2 n% U$ o) ^
upp_error_count = 0;& c7 Y2 S" s( u! u8 J
2 w( ]: N/ u: r$ R7 ]- ]8 t0 t
UARTPuts("\tResetting uPP buffers...\r\n",-2);9 q7 t5 R! p2 S
// Initialize data buffers+ w' o- n. m: O
for (i = 0; i < upp_frame_size; i++)
2 |- r1 O z4 Z1 Y% v- K {
$ i, o3 Q: @" g upp_buffer_b =i;
0 \( D0 _* ~9 K6 ~8 M* C/ s upp_buffer_a = 0xDEAD;
8 B: g6 J: H$ O( O8 V }8 I3 p5 h' E$ g9 D+ o( }6 e$ j
$ W" m* M' H- J- i% H) ~2 Q //for(i=0;i<1024;i++)
2 N! G& [& m2 L4 f1 ~ // temp=0;: }% U& I. M. t6 ^0 p' Q+ _
6 U$ d# A. d9 p- y/ d
//UPPReset();
6 r1 g6 K$ [/ z! n- @" M /*启动UPP DMA传输*/
) l/ D4 c7 W5 g0 z& N UARTPuts("upp_prog_dma_i\n",-2);
2 u7 s: T2 k) F4 ]& T8 Q* d upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;& [* z' @2 W+ o; w9 X8 O( {9 v' I" {
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);9 L- P( E, a+ v9 z
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
2 k* H( e# ?) y$ z
6 O5 I0 F0 e( N UARTPuts("upp_prog_dma_i\n",-2);
; B) K* n: p4 j7 f+ @ upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;6 k0 i& K+ U2 }- L
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
# D* R# f6 A& d8 v( M upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);( T; w5 o! @6 V8 q G- V
, a7 V8 \ s( F# [; ?
/*等待UPP传输完毕*/
$ x9 G3 J* m# {6 i' i- a# b: X //i=0;
- }3 W5 X U- p //j=0;/ l: n' R& S4 P% Y4 O x
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
1 O+ e# ~' S9 s& j9 x) T. I" i {
+ m- e2 N4 g0 R: G8 b3 z /* 测试UPP传输的同时操作普通DDR数据 Z2 h( Z' @7 _% @+ _5 |
temp=i;0 ^& A: l9 d5 M- @; k
i++;
7 y/ A* J' k: x! o9 k4 f: N if(i==1024)
6 S* W1 U0 h" o8 J! T p8 a {
+ B0 k. Y7 I8 u6 s3 v; g i=0;7 G( }: s) h# s$ o7 K% G+ h
j++;7 C8 x4 A. {9 ?
}
. O5 |4 [7 {8 Y3 ~* t& \ */9 o( z& k3 p* j. p- ]- |: t: o
- T9 v8 N n* S3 G: Z' d asm(" nop");
9 t$ ^9 k# y% u2 A7 E& X
+ g; F6 m& R$ g5 z' B //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
; s) c% o/ g' H8 S' f- L }
) {) ~& E' y% P9 l& m% k I2 o; e/ G) I) J# N8 Z9 i/ I
/*检查UPP传输的数据是否正确 (loopback modes only)*// ?/ g2 e( H* r( [- t) l& d4 v
//UARTprintf( "i=%d\n",i);1 X6 T$ q* X" C6 p
//UARTprintf( "j=%d\n",j);
' x! J6 L+ r+ w, J9 w3 C UARTPuts("Data mismatch in buffers.\n",-2);' q6 W5 J5 K$ j% Y
if (upp_interrupt_count == 2 && upp_error_count == 0)( B; F: x# l, s* S; ]
{
1 |7 @' @' G F7 ]2 X3 e for (i = 0; i<upp_frame_size; i++)
L4 |- g1 [' [( S5 e {: M; {6 m4 ], Y4 O' O( w% P( G
if (upp_buffer_a != upp_buffer_b)1 q, ?3 f- g, H
{
5 N) Z1 @* I) t: |; i upp_error_count++;
! ^* W1 S- ?0 D1 S8 d& L }( H% ?& x# d5 R2 z2 j! O
}+ V9 L+ [* \1 @* O, P$ m* ]
}/ \" P) Y1 G/ A9 r& o6 t
3 Y0 u: c$ y0 R; s; z! S6 e( Y /* 报告通信结果*/% C$ r- p' ~, H( ~
if(upp_error_count != 0)* h% h+ z4 i0 c2 `8 ]: w
UARTprintf( "upp_error_count=%d\n",upp_error_count);9 U: ?5 J q% x1 q0 a2 o
else2 Z P# z' C. R, R
UARTPuts("uPP transfers complete!\n",-2);
& I. N* A) Y* i: I4 v/ K
( g: \0 B ?& G) H$ [- j) L8 M UARTPuts("Do you want to print all the data?(y/n) ",-2);$ t; F7 N: X( e; l) D% K
UARTGets(ch,2);- U- L' M3 N5 [" M
UARTPuts("\n", -2);
# o, A' }! S, N. j$ y- {8 b$ g5 C
if(ch[0] == 'y')
9 _8 R" S) o, D0 H {: X) `' q5 B( U% N1 H0 U7 D
/*打印全部读到的数据*/, F' Q( R- d5 p5 f0 ]. }3 |
for(i=0; i<upp_frame_size; )
2 s/ k$ F4 a6 {/ S) k8 k {, [) h/ _( q. g
for(j=0; j<5; j++)
- ^1 V+ Q; `% A& v0 Y' m {
8 i$ L+ g# E6 q, {) ` UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
% R/ U# G* z0 y( e6 e$ V. T* f i++;$ e5 C) P. A. x, t
//if(i >= 4096)4 M- e/ J( Y2 n% ?- W4 Q6 Q0 N' y
// break;
3 w6 h2 H2 c: a6 h' ~+ N( L' E% ~
}
; D% i; {9 x/ h( e UARTPuts("\n",-2);4 C! P2 M4 d& ^2 o. c* y v
}
% l- h! v0 j4 ^# k: }5 K) m# d }1 O7 ^4 a8 D$ j
/ ~, `( e$ Y7 z0 m, w7 x4 y, r
}( @) a4 J8 _5 w; p! V
2 u# a: `- ~- F+ N3 V+ {2 y2 C7 V# v0 h- l g4 O: ^& k% @8 U
|
|