嵌入式开发者社区
标题:
upp问题,在SYSBIOS下的应用问题
[打印本页]
作者:
tulipyyf
时间:
2014-12-22 14:35
标题:
upp问题,在SYSBIOS下的应用问题
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
) {( H2 F' c8 e. k. X2 O0 C
Void UPP_TASK(Void)
7 u8 Z& c, _0 ]; G4 K/ V0 w
{
# f% g* z; b. ]0 \8 i+ L
. V! \9 x: l* G* _+ m+ ^+ W
int i,j,k,target_int_count=2;
, c) _8 |$ c; x) g( a" c4 Q
char ch[2];
/ g. |7 x$ I+ U; u2 V
! H" T W. F! O7 T0 I1 R
3 t7 Y2 M* |+ G
% r+ h |9 d4 J$ \5 J6 X; j
upp_interrupt_count = 0;
7 q) x6 G1 d1 d2 {! I+ U" o- y3 T& k& {
upp_error_count = 0;
4 u! I* ~4 }% Z. U7 M* e! e
, F0 h3 x) q4 ^9 A! t3 c
UARTPuts("\tResetting uPP buffers...\r\n",-2);
$ U# h/ Y O# z1 [$ e
// Initialize data buffers
8 C$ V- r9 ?3 N3 {
for (i = 0; i < upp_frame_size; i++)
) k: \: Q) e( d$ g6 d7 q
{
- {' g& J" P% `& b4 i8 l
upp_buffer_b
=i;
2 M& c4 [; I8 Z5 ]) j5 d5 \! ~
upp_buffer_a
= 0xDEAD;
" [! \: N% R* F7 _ h6 ^) ?! F; J
}
+ {4 j. I! M) b: o* Y7 D3 f
8 `+ N! d5 J: P# z. x
//for(i=0;i<1024;i++)
+ ]- i; k }: g4 A+ K$ n+ X
// temp
=0;
1 W& {5 [- `/ _+ I& F* f
; i0 C, ]( i- W
//UPPReset();
7 E% x. K+ ]+ X; H) z1 q0 `0 ?
/*启动UPP DMA传输*/
( V k4 D. C" H0 }* w
UARTPuts("upp_prog_dma_i\n",-2);
! x: Q3 G+ F T0 u4 v/ |
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
h. |, Q* [6 g2 F& o
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
: z* L- f% x$ s" A# d; s0 ]" z
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
" {: a; ~! c3 r, r& M9 u
7 J' a T* a# {
UARTPuts("upp_prog_dma_i\n",-2);
* C" f! K: F1 K+ `8 [
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
. _' J% X9 r* z4 C4 p: _
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
: U3 x9 P5 w9 r+ [( v, P7 |& _
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
% U: X/ z9 k% c5 X
& E- ]; |. T2 i, h- j7 h
/*等待UPP传输完毕*/
! F0 ]: V, b3 M, O! V( G. ~# j
//i=0;
+ j6 o m7 r; q) M: t q! w
//j=0;
. S4 \$ C( K8 L7 f* O
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
9 |) z0 v; B1 q8 L6 ?
{
: E7 R! Y, c; I4 R& w
/* 测试UPP传输的同时操作普通DDR数据
4 V2 l, ?& F& ^) M; h4 A8 }8 v; Y
temp
=i;
V2 z0 D. S% Z7 q. W
i++;
: T- p- z$ p' b* z
if(i==1024)
1 n$ a* B0 ^) o) i
{
" K s8 s$ K( i
i=0;
( j( X8 s C, M9 I
j++;
$ v; ]+ v( ]/ G
}
$ ]/ ]& n2 ^. B/ X5 _) L. \
*/
; v4 L1 U5 j* r1 K, x N" {* L) ^
. H+ L) l9 U/ ]( q
asm(" nop");
6 P9 b3 D' k4 B5 k n
' n- s2 v" p2 o A# Z
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
* p" Z0 Y) I( D4 \7 ~, I W
}
% R) b" q% z* m0 X8 `; I
! j# {1 e8 ~% M. X
/*检查UPP传输的数据是否正确 (loopback modes only)*/
W3 e1 b+ e" p0 d+ B
//UARTprintf( "i=%d\n",i);
7 I6 g- k9 K1 `
//UARTprintf( "j=%d\n",j);
( l- |4 k ]' Q
UARTPuts("Data mismatch in buffers.\n",-2);
* }8 f' n* i& v! Q8 o* D4 h7 b
if (upp_interrupt_count == 2 && upp_error_count == 0)
* w, U0 y7 c, Y" G7 a
{
/ u5 q* `/ `2 ?
for (i = 0; i<upp_frame_size; i++)
2 ~1 k5 ^9 K4 o, q. b( ?8 P
{
7 c' D/ \' ]9 G8 a- K" @
if (upp_buffer_a
!= upp_buffer_b
)
; X1 ?8 `: s7 \; H4 Z% C5 C- s
{
+ Q8 g5 ^* E! z
upp_error_count++;
# S' f, x- x0 {+ p% B2 g9 \/ Q
}
/ q' Q4 }6 y9 V8 i5 V8 T
}
% H6 q' u, f9 d3 a0 f. b
}
e& Q5 i( B; C8 Z" y
' z9 [" N# b) v- J( M4 l
/* 报告通信结果*/
& R5 R1 ~0 {! W3 L
if(upp_error_count != 0)
9 f t. S* V* D f4 w3 F% p
UARTprintf( "upp_error_count=%d\n",upp_error_count);
' ?" k7 S$ i, E( [6 P
else
' u7 d* Y/ [7 x* x+ \7 ?1 U
UARTPuts("uPP transfers complete!\n",-2);
9 H; `' O E0 Q9 D
8 r9 g8 f& _/ D) S9 D
UARTPuts("Do you want to print all the data?(y/n) ",-2);
; \3 u; f C( A! V- X
UARTGets(ch,2);
5 _. C& p3 \' B- b. Q- v
UARTPuts("\n", -2);
) }0 O( C! ~5 Z2 R8 ^
) a+ o: K# H* @1 ?. X% y9 b; o/ A
if(ch[0] == 'y')
" h0 K- |/ x# d0 W/ s- G
{
3 z) x# X+ ]. V( U& N$ d4 ?
/*打印全部读到的数据*/
% p6 }5 M3 t& O9 ]) O1 X6 z
for(i=0; i<upp_frame_size; )
7 q* \, B0 @4 E" ?
{
+ O4 P1 {& X1 y& P5 O8 x
for(j=0; j<5; j++)
, o1 b* m2 z4 \5 Z. i7 {6 D9 U
{
$ A) r+ C" f" k; R: V5 N
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a
);
1 a& r4 X( n3 a4 d
i++;
& J3 K# }0 o9 `8 J0 j
//if(i >= 4096)
( n/ o% e) h! R, r* p
// break;
+ d" f, N0 c) X. Y3 V
i7 f+ |# D f
}
6 J a/ L0 r1 A: a2 t( b
UARTPuts("\n",-2);
: o# C; B; x4 D z# C9 `
}
; q7 g: g' v: V K
}
4 \1 }- ~/ a7 K8 |( W5 B( T
3 ?6 D% v6 e* d
}
& Z, l- V+ b% n0 k9 b Z; n
+ t& e& u! ?7 T$ q6 J8 @, Q3 i
% n9 M- L# i$ f& }
作者:
tulipyyf
时间:
2014-12-22 16:08
追加说明:任务是空闲任务,因此没有做循环。
\: ^/ { d. o/ H# o4 w: u
作者:
Lewis
时间:
2014-12-24 18:06
多次执行是没问题的,最好不要用空闲任务,优先级太低。
7 @" E, l( L# S1 [5 w
欢迎光临 嵌入式开发者社区 (https://51ele.net/)
Powered by Discuz! X3.4