嵌入式开发者社区
标题:
upp问题,在SYSBIOS下的应用问题
[打印本页]
作者:
tulipyyf
时间:
2014-12-22 14:35
标题:
upp问题,在SYSBIOS下的应用问题
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
$ y3 R5 x. s, q2 w: B% F) @( N
Void UPP_TASK(Void)
; r7 k: o U( D# a! C" i! i
{
/ \5 n. K% }+ u! a9 Q" T1 }
& E/ s% V1 G. J7 w" A' T C
int i,j,k,target_int_count=2;
" _1 Y# B$ E3 p
char ch[2];
( a# L8 x: Z( n: A
' ?4 O" F" v5 j' I w. z4 I
0 z! U$ X+ G$ F' G) W
0 s4 k# f3 O" Z, y
upp_interrupt_count = 0;
' s' o. |* ~/ [$ [' O2 ^7 W
upp_error_count = 0;
( e8 U* K/ ^# ]" g; L9 W
1 @# l! V4 R5 O
UARTPuts("\tResetting uPP buffers...\r\n",-2);
( v+ q* h& `) I% w4 |+ v# E V1 d0 I
// Initialize data buffers
" F; R/ D: i: `' Z5 c7 t6 Y
for (i = 0; i < upp_frame_size; i++)
, {; d) b4 |2 Z) w0 z1 V
{
- P4 B! N9 p3 x$ x0 Z1 O) I: R
upp_buffer_b
=i;
, F3 }: f! W, p( I. i, \3 H# \- |
upp_buffer_a
= 0xDEAD;
9 C! B, T& J( ^
}
: h5 K* \4 X! N" t. X6 f f
0 X- N- q' \2 y7 U2 E. Z$ v, V
//for(i=0;i<1024;i++)
8 J: G t5 n# X4 ?* L/ r. U; w3 ~
// temp
=0;
) z5 A+ q5 u* q; F0 k3 L2 {$ |
. B, \" z. _/ T% Y
//UPPReset();
4 E4 t: n% I* @, N' g8 Q
/*启动UPP DMA传输*/
6 ~* Z: O/ D; i3 S' j3 W+ ^% y
UARTPuts("upp_prog_dma_i\n",-2);
1 [% w( b0 e& Y
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
6 u" n6 N3 I" s) D5 _" \& i
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
1 m# F! F3 I- _+ C
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
7 l! F/ \2 u2 C; A- \9 C/ \
4 |5 p1 C* G1 j/ j6 a# r
UARTPuts("upp_prog_dma_i\n",-2);
. U# H* U% ~" G3 I! n
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
+ }! ~6 S6 q. i0 N
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
7 W% q$ ?$ p. c3 z$ S6 D- P
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
+ u! z0 X: S. p9 ]2 i& z
7 N3 F+ h, M- a/ B
/*等待UPP传输完毕*/
8 K+ c- y1 U7 V0 l
//i=0;
+ f; r) U% q7 }' Y2 J
//j=0;
5 y" y% H) J7 p
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
9 }9 n+ Z% l1 c0 m8 ]
{
4 |9 \: {% u; Z7 c# ~, M
/* 测试UPP传输的同时操作普通DDR数据
~! {( ~3 B7 O" T
temp
=i;
8 N: z9 G9 ]$ g( f
i++;
% U& s. D( U; K
if(i==1024)
# t' Y5 q+ f% t4 o
{
. s- I) T) ^4 o9 o8 G1 y
i=0;
. a' }+ i" w v+ ?8 ~
j++;
& c' i% w$ g$ Q, ^
}
$ e6 f% z9 Z/ E' _0 V- S7 [+ D
*/
0 \( G( ^' `( v9 S5 I" @, G4 U
: ?1 x: F# l7 k
asm(" nop");
" }/ F9 j* U/ Z
. m% V1 F( Q. {! L! Q
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
) T9 S7 Y7 ^& X
}
- J: K( j) S8 k. A: J2 {- k
' r. D- d, N" x- \( ~
/*检查UPP传输的数据是否正确 (loopback modes only)*/
9 s4 V' {% l* e3 y- ]' `
//UARTprintf( "i=%d\n",i);
4 Y( u3 \7 s" X" n. s
//UARTprintf( "j=%d\n",j);
! H7 z! S! z3 z! U
UARTPuts("Data mismatch in buffers.\n",-2);
3 B5 d3 ]8 G4 z0 ~
if (upp_interrupt_count == 2 && upp_error_count == 0)
' c5 J- M8 @ B( n% C* k" k
{
1 ^7 i1 w! I' U% W6 t
for (i = 0; i<upp_frame_size; i++)
; ?# x4 ^- q! o' h3 W
{
* d( B1 b. R# ?$ v; N2 @
if (upp_buffer_a
!= upp_buffer_b
)
& }( @( B) m& {) D0 v( N; L' P
{
& a9 W b: Q1 H& N1 {, P
upp_error_count++;
) h- J' V- X9 Z- v$ A9 G1 v+ @
}
; d, ]+ ?. q6 Y+ ?% B
}
% s" ~: ?4 C. |+ n* d' p+ ]( A/ E
}
; k9 L2 A! X5 t( `" x
* l# [8 }* k7 A2 O* e% O8 u/ Q
/* 报告通信结果*/
" O. w/ e$ ]" ~ g# X
if(upp_error_count != 0)
2 x% h; \. G$ {9 }
UARTprintf( "upp_error_count=%d\n",upp_error_count);
; | F1 l9 [4 @" [9 v8 _- V: K* N1 Z
else
; h7 u9 g, e6 U' g
UARTPuts("uPP transfers complete!\n",-2);
2 Z! e& q9 u4 Z% c; W: g2 q
W' K" N) C+ p4 L4 h
UARTPuts("Do you want to print all the data?(y/n) ",-2);
7 w7 P7 X1 n( U' t8 e
UARTGets(ch,2);
# B# H6 R# C0 P P
UARTPuts("\n", -2);
K, ~0 E3 ^9 o; ]1 H% q' w
8 {. e7 ^! R' l
if(ch[0] == 'y')
0 f/ \5 O+ W! o
{
8 n; c2 {) [: w5 d
/*打印全部读到的数据*/
/ _/ Q2 B5 q( l6 C
for(i=0; i<upp_frame_size; )
7 b% B' ]- ~$ S8 e* R
{
7 j5 v ~1 K' d: A6 s9 T$ |& {
for(j=0; j<5; j++)
( Z. V! A$ ] @* g! y( y, i9 Y
{
2 d- G; x. M: ^9 y" O
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a
);
7 c* T+ y I$ z: x8 V S1 P
i++;
! s8 A9 a& Q& \
//if(i >= 4096)
' G( S$ f7 E2 A7 o+ q
// break;
* s r7 U! C1 B
# f2 p" V C9 P. k
}
. D* O( y% p" C3 { K# m2 ^, S2 K
UARTPuts("\n",-2);
9 c( l1 A$ n8 y
}
& P' z8 U- ]$ s1 F9 R# N! r/ L
}
; y: E3 @# p# }2 `; Y! S
: [; q! v p0 E+ P5 g
}
2 w" e; f! n/ \( x, t" X
1 ?0 k1 d+ D( h" c, R% L0 v$ d- Y
7 c5 q8 m a1 l5 I% ?3 X
作者:
tulipyyf
时间:
2014-12-22 16:08
追加说明:任务是空闲任务,因此没有做循环。
" h# `; @7 k$ P3 L" L7 H
作者:
Lewis
时间:
2014-12-24 18:06
多次执行是没问题的,最好不要用空闲任务,优先级太低。
1 z7 [+ d, g7 ~# }
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4