|
|
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
& [: U5 B5 U+ X8 a% iVoid UPP_TASK(Void)
/ g& A% \ y$ U$ P/ Y2 z3 c3 e{
; h) W2 {4 K* m* k) A$ [
3 J/ [: I( z9 b- ]7 ~* L9 b7 p int i,j,k,target_int_count=2;
# B, [% H3 t# i* k8 e2 k1 ]6 x char ch[2]; w* j* [8 C! [5 g) Q
/ _7 W) _6 n# s/ a8 w
' b \' ~& n& U3 i1 ^" u/ P0 m
4 Z* z3 [; l: ? upp_interrupt_count = 0;$ v4 N+ v, \& g( s4 U7 L8 R
upp_error_count = 0;
4 I- j4 L& F9 @. N/ I& I5 z9 P9 E+ F/ V
n% B" T# \; v: a) O! Z UARTPuts("\tResetting uPP buffers...\r\n",-2);4 W! d$ |- U" a. J
// Initialize data buffers
* ^+ v( b5 s) P1 E) ^3 K- S5 U for (i = 0; i < upp_frame_size; i++), d$ e/ ^! o/ s2 ` e. i
{3 d. w" R0 u8 F; g
upp_buffer_b =i;2 X+ a+ v- M' }
upp_buffer_a = 0xDEAD;% G4 ^% w3 D) B8 s
}
4 R% K: L, {7 b3 t' g9 p9 c2 o; b& I. `% C3 u3 `4 }
//for(i=0;i<1024;i++)* ?" D* \7 y% v3 Q
// temp=0;
4 J$ t9 n. ~- H j4 `, M: {; N1 i W0 b, k# t" u
//UPPReset();
0 l; N- m1 w' i& A /*启动UPP DMA传输*/
6 i( @0 y8 Y( _( Z/ G" Y+ _' M3 ` UARTPuts("upp_prog_dma_i\n",-2);4 W; J, u( @( S9 T/ x: B5 ` H
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
" u% N) T% O: e' V! v% k' r, v* e upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);0 c8 |" B, B8 A1 I& ?2 Z
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
# S1 @: o8 O# [) m9 F* v0 _' D0 ^& a9 h9 O
UARTPuts("upp_prog_dma_i\n",-2);
1 f6 A" c* ^$ x8 h5 a6 B* ? upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;* X, K6 ~' v. v
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);, X$ o) C+ \: k \ x$ ` D
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);* b N0 w/ |2 g! s. ?
: @. j2 ?6 |$ s8 g- \' y /*等待UPP传输完毕*/
3 _# h9 V3 i0 T- { //i=0;) v( z$ R ~4 _3 z
//j=0;7 R7 D& `' X* Y/ X/ O5 w' p
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
5 F8 E. }. R! d* v# P* c {
* W. o0 [; k6 o0 [" F# V /* 测试UPP传输的同时操作普通DDR数据
3 O2 b9 X8 ?, u# S4 ]. g8 O# ^ temp=i;5 h- W' ?0 m* Y+ Y* i
i++;: W1 E, ^3 A) t' A$ m, _
if(i==1024)
" Q# F! a/ D) k {
, i8 R8 n/ W5 c1 [, W5 v3 ` i=0;
5 @4 P/ `, L! m1 u" r' g5 x j++;0 i; R \. j6 @$ j/ A
}) C# A- ^9 L O- P! Y0 ]
*/4 s& \4 J t9 O* D0 G# O1 ?
' z# W3 E3 C+ T: A) B
asm(" nop");
! [/ @, h, o; C8 ^! }' Y
, S0 f }6 J* K% _$ ?6 M //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
' A5 R8 U1 D1 Y- _2 h" d# h }
6 ^. H% I* t. i# W
2 @2 d6 M4 I# C% Q. F+ Q /*检查UPP传输的数据是否正确 (loopback modes only)*/
8 J1 `* ?1 o6 I' [ //UARTprintf( "i=%d\n",i);8 z' Q, |9 K9 H
//UARTprintf( "j=%d\n",j);0 ^+ h( m; A$ b$ M* A
UARTPuts("Data mismatch in buffers.\n",-2);/ B/ g, v- ]+ n8 g- [
if (upp_interrupt_count == 2 && upp_error_count == 0), v3 c8 I5 e1 h* {: I
{
$ e6 }( @3 \$ C, z' V for (i = 0; i<upp_frame_size; i++)
$ h; H: H; I1 C) i) K0 U {: u; }9 A/ A: ^( M# ]) ?! h& k
if (upp_buffer_a != upp_buffer_b). u# e9 e/ \. ^" V) A; _
{
# A$ M: A6 W$ d! b upp_error_count++;! F1 Y, r2 K% D V
}
$ Z6 e2 V# W% g) B u3 n2 H }
4 j# r3 e/ G( |4 N% n. r# q( H2 J }
% W, u# z+ a5 T; I& m4 F6 N" K- d- p
/* 报告通信结果*/1 z2 m! G2 z/ K5 G: t/ o
if(upp_error_count != 0)
4 w7 J) n7 N' z5 N5 d' J6 H UARTprintf( "upp_error_count=%d\n",upp_error_count);' V* b, k7 C C( q# T" r
else
' n, G9 `/ @, M0 i UARTPuts("uPP transfers complete!\n",-2);% I# b! G- f4 }9 L2 L; H4 K+ J
" s2 _4 j# k& B4 r# ` k
UARTPuts("Do you want to print all the data?(y/n) ",-2);
, M8 _$ J5 @# p3 P* S" j9 g# J UARTGets(ch,2);
' |6 H- H+ L4 {& I' S. V$ j UARTPuts("\n", -2);
. b5 M# V- ~* ~" X, |' Q& _( k# ?7 u4 b0 R# o
if(ch[0] == 'y')4 a6 g+ I, ?. g% Z ?! a
{
" T; j( s. r( w8 B% b( U /*打印全部读到的数据*/
7 ^) r6 _) [/ E) @( m for(i=0; i<upp_frame_size; )* v& ~' W: g" R0 x
{
; x' O5 R* w6 C6 ~ for(j=0; j<5; j++); ~1 ]4 K% ?' p5 j( E9 w3 u
{
- ~' e& S: g9 c J( T1 V1 g3 c UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a);
5 N: w9 J, L0 p4 W i++; a) F- p2 z$ a2 m& U
//if(i >= 4096)
7 W% r( L2 Y9 A; W- h# P // break;9 X) z( I5 ~3 W& N P) @/ U7 h
# k2 b5 F' \- \' Z# O }, V8 w6 m# B" v# \3 z) w
UARTPuts("\n",-2);
, F: c% u* a" n; W+ m( g9 R0 a }5 l+ t( L" ^" _: q, s
}. A5 C: k, J$ m/ x6 H( o" Q, u2 q$ i
; e1 u# X% P" N W* k9 X2 d+ Q
}
, h/ u5 r% [, }% K- T2 O3 O# B2 V
( k3 h+ |7 b& S; L# X* t% R7 Q$ g1 L$ w1 Y6 T
|
|