|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
, D+ Q& ]4 a" u! [Void UPP_TASK(Void)7 z+ |% F( C- L; J
{
0 E3 R2 `3 n; ^' r, j/ J8 a( D# L0 P3 n
int i,j,k,target_int_count=2;4 `% N& T8 J) U& {6 v4 R$ M
char ch[2];& T% q9 I0 ^& B5 x: J
/ |1 z; B1 r" u5 b& @0 M" i5 O D- x1 W7 U# K- E2 r ]
$ f% x) C: R: @
upp_interrupt_count = 0;
3 U' O' T! J4 E& o upp_error_count = 0;9 g0 p U4 c9 T# F) o5 W, t. _4 V
o8 i6 D% B" n8 B) U% G, b
UARTPuts("\tResetting uPP buffers...\r\n",-2);
( H2 b) X0 r. x/ Z& y+ @ // Initialize data buffers
- e d, l0 F! J$ y. M for (i = 0; i < upp_frame_size; i++)% M5 r c) f7 }: p6 y& u
{( d% _0 n E/ y z, ^0 X
upp_buffer_b =i;
- Y2 i Y. c. C upp_buffer_a = 0xDEAD;
a: w. G5 p1 v' r9 M }
, j2 p% L7 P" p0 w, V) p; J) V6 v7 H1 h4 [
//for(i=0;i<1024;i++)2 }: f2 P0 o1 |( x) h7 X% Q$ L
// temp=0;2 u' ^' r4 J# |8 B
3 z) ` W- [, y* W ]) Z& C //UPPReset();
- Y8 D1 p, {6 Q9 q+ l" C /*启动UPP DMA传输*/
; T# `4 s. ^) f+ E UARTPuts("upp_prog_dma_i\n",-2);, ~" n, y2 u' ]5 |7 X
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;* W$ B, s5 X7 C+ K
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
5 L; \! g, a- p- d" ^8 Q1 N2 n0 U8 b8 z upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);$ D; e' [0 H0 Q$ H) T
# ~. u) K7 m/ g7 o+ ~5 [
UARTPuts("upp_prog_dma_i\n",-2);% T5 a$ T* S# q; n
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;& t5 r; t* x& p0 y
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);: n$ {8 Y' v; T) p% p0 Y& n9 D
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);5 Z: ]4 C3 H# ]0 I. ?" I& H2 |0 H( d
# j& v) O3 C4 L& `- F+ x
/*等待UPP传输完毕*/' T$ A! W% ^7 M4 D6 l
//i=0;5 N6 t4 t4 A; q$ Z
//j=0;
& S: U# }2 Z) o) i0 n while (upp_interrupt_count < target_int_count && upp_error_count == 0)
' M" l6 v5 @6 g2 {: n {
9 x% ]0 B* o- ^* x0 d0 G /* 测试UPP传输的同时操作普通DDR数据/ L0 t0 R) B% N7 {( t5 ~
temp=i;
: d8 ?( D' h9 B" F+ n) A" z$ q3 A i++;1 W' L% d- q# \
if(i==1024)
% {6 w! Z3 [9 _ Y. E$ Y3 @. K {5 D: y1 f4 }. |
i=0;+ w$ k8 w( U6 V) H' @: h
j++;) }" ?: W6 L8 U; }9 ~- A, l
}
* c' X# j$ `3 L( W8 c+ i */: A" x" q& j7 C
2 ]& I5 t ~2 p
asm(" nop");
- N& }0 C q% r- {# h2 t" O* S4 p1 S6 p# S) N# r; d# y7 K
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);+ J( O, o" ?. K' g4 D v+ w+ v' A
}- G: N/ m# x& u8 h. s5 R* d# k; I
8 R% G. M m: I /*检查UPP传输的数据是否正确 (loopback modes only)*/
' ^. A5 G; Q: H @0 c. d8 f5 n //UARTprintf( "i=%d\n",i);
' E W( }! o. t //UARTprintf( "j=%d\n",j);
, b; r( S# S J5 R UARTPuts("Data mismatch in buffers.\n",-2);
7 {. m: U2 M+ F3 l4 ^' E if (upp_interrupt_count == 2 && upp_error_count == 0)* Q( g; r5 J# A; h/ Y
{8 ?7 K" }6 } y
for (i = 0; i<upp_frame_size; i++)) z1 H7 V; A4 ]1 c
{/ o8 }; u l( c H
if (upp_buffer_a != upp_buffer_b)
. q3 A/ c% z6 d6 k6 S {
7 o2 X% V3 t3 J+ v) r upp_error_count++;
Z* K$ I7 C$ A, B' [" u }
- b- |. C8 n+ e5 P) T# ~ }
6 N4 F9 S3 l) A( [ }
8 y1 e) `( `% U: b# H0 h# F$ r* O* a4 g8 k
/* 报告通信结果*/$ w, @4 |8 Q6 p8 p! I5 u
if(upp_error_count != 0)3 U( X; {# Y& n4 `0 f' d' c" G
UARTprintf( "upp_error_count=%d\n",upp_error_count);
. n+ m7 F" ]& N else* a) L& y, }0 j: J
UARTPuts("uPP transfers complete!\n",-2);
8 \* T6 e( L7 D* _4 n* \4 C/ E# }- p1 s% v9 b6 O) H4 k/ l
UARTPuts("Do you want to print all the data?(y/n) ",-2);
; j0 Q; K( ~( k$ c+ t UARTGets(ch,2);
, H2 Y1 ?8 X% [7 s$ Z# L UARTPuts("\n", -2);
2 }1 G0 [' L# Z4 V6 B2 @, a- L0 h
5 a) R6 t8 Q5 N0 I3 H if(ch[0] == 'y')
- \3 \5 B. |9 t8 H7 v. e {# h3 J8 x% @) |) L' G- \) ~
/*打印全部读到的数据*/
2 e1 e- r1 k2 P, T3 h; R) d( z for(i=0; i<upp_frame_size; )$ [4 A' |% y# ~) t9 c P
{
4 T @: Y, V7 s! x$ V q. q& N6 b for(j=0; j<5; j++). s" S! S0 h5 T2 t% m; w- f5 F. o* o
{" A! Z8 z6 Q1 Z, l# v3 N
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
( X( j3 W! r% ]& h8 D6 Y i++;9 H' l P* {6 x: G
//if(i >= 4096)( q9 n- l/ f% V: \
// break;! P/ ?6 K0 H' [, E" `
) r% R0 o6 w8 \
}
8 u- x$ i( H m' Y0 w; D9 N UARTPuts("\n",-2);# D2 f/ a5 M9 r6 r, ]1 \
}) @5 R) F" q8 }* G: m8 l: @
}, H$ [ T$ r7 V* l9 N" l
5 o# r+ c$ m2 ?. j
}
) {% |' c# C9 y' P4 R) p7 N# P* f8 U* z" N/ `
) K+ C$ `7 X7 B. F |
|