嵌入式开发者社区
标题:
upp问题,在SYSBIOS下的应用问题
[打印本页]
作者:
tulipyyf
时间:
2014-12-22 14:35
标题:
upp问题,在SYSBIOS下的应用问题
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
( C2 f* O2 V% x4 ~+ l5 L' S" _
Void UPP_TASK(Void)
9 F$ @4 ?! @! }6 k, H
{
. y/ N# r' ~0 w7 j* U" \5 F) A$ [8 }
: o' O& H2 R8 V$ Y1 i
int i,j,k,target_int_count=2;
$ `8 k( K {+ g; j
char ch[2];
, P; }$ n) h0 J+ @) u4 Q" y
: v) \3 r" ^4 x) |
: t4 @- n! e; ~4 l2 z) G7 b8 H
; H* y7 d- u \
upp_interrupt_count = 0;
2 J9 X `" @1 J" Z! n8 o" \
upp_error_count = 0;
+ D) I2 b8 F; `7 u
l4 j# }- Z: V( i
UARTPuts("\tResetting uPP buffers...\r\n",-2);
7 [: ~9 [$ _4 A7 X
// Initialize data buffers
, O/ d! S* h7 M. K
for (i = 0; i < upp_frame_size; i++)
$ w. y, ^+ v; ]: \* X$ q {% N! r
{
1 Y& W% ?8 U% o
upp_buffer_b
=i;
* P& a$ @: c4 n+ [( l
upp_buffer_a
= 0xDEAD;
# a. Q- N, z) V, h
}
1 Y& E0 U6 u: ]& O
) j2 C% P$ V: {3 V' G# e
//for(i=0;i<1024;i++)
( p) K V" @9 T$ e3 p$ E9 |5 E4 ?
// temp
=0;
e$ n! m4 K* v$ m1 k1 o2 i) ^/ M
; v: B# J6 ]3 h- J$ @' t/ x1 [
//UPPReset();
# N. [- V* Y6 O) D6 `' L
/*启动UPP DMA传输*/
& F# a5 i& O1 X8 @: S
UARTPuts("upp_prog_dma_i\n",-2);
/ `' F3 K9 E; [
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
, a, S3 T1 e3 U# p- w! L' Q7 v
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
9 }4 }$ z* E# a _! U
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
; w$ ?" g- A1 p
0 s: W F5 R3 ?1 |
UARTPuts("upp_prog_dma_i\n",-2);
% G; D d4 ?/ O0 `) b9 D( W# o6 ^
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
- P. V5 u1 ?0 e" z! i/ k
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
1 l0 h( E, r3 I# }+ x; |% C
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
9 r' q$ z5 A' \/ o, S9 s0 o
: T, A n4 g; d1 b( ?' R& Q
/*等待UPP传输完毕*/
* k& | t0 |' v; @; W: N! \1 i
//i=0;
9 I4 \8 d$ q: E/ Q: `
//j=0;
4 b* `0 Q2 ]! U3 |7 X7 k/ i! V. g
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
( n y0 K) [7 _1 x
{
) H+ X# j! ?: L% {6 h
/* 测试UPP传输的同时操作普通DDR数据
# `; ^. X" ~" c, W* @
temp
=i;
2 X0 g0 D: l& M6 ?
i++;
8 J% O- W' ~4 w" q
if(i==1024)
: `2 R5 n0 k' i- ~) ]" k: ]* j% L
{
0 {3 i) y, p* z x7 V9 p" e
i=0;
1 T8 J( ]' I9 }6 d7 \0 o5 }* K
j++;
2 x4 R9 p6 @! I" G% [9 w: h% Y
}
. N) A7 {- @8 f7 k. }7 c" A' p
*/
% Q2 I0 {' d5 u) E0 ^* U3 K
0 ^" S( q' s- l
asm(" nop");
5 a% W8 c" w0 j! N! H0 M, b
. p& M' P0 i, j" n7 N% s! |
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
8 Y3 g$ i) Z( i; B
}
* q3 ?2 I3 n' I3 `$ f
$ O# {6 y0 s/ w
/*检查UPP传输的数据是否正确 (loopback modes only)*/
- S9 f) W7 z3 k% q$ V
//UARTprintf( "i=%d\n",i);
g& _. O! X# R: [- T u$ Z
//UARTprintf( "j=%d\n",j);
( p, T g: i% n
UARTPuts("Data mismatch in buffers.\n",-2);
8 p" j2 q' G- a
if (upp_interrupt_count == 2 && upp_error_count == 0)
: E( I: M0 O ]& N6 {
{
" o' ~1 w: W# [$ l+ w( U
for (i = 0; i<upp_frame_size; i++)
0 r9 Q% p8 C* N8 G+ w+ }, C8 E* `
{
: F8 n; F; u; `, n
if (upp_buffer_a
!= upp_buffer_b
)
* ^: k% F+ r- ?. O
{
0 N- d" y: a; ~2 j- m6 N
upp_error_count++;
7 v& p! ?2 ]$ O7 e$ u
}
# B/ Z- Q& I/ Q
}
' G% z9 u) a- T
}
% K7 V3 A1 U6 J" Y# b# ?
6 t6 c1 B" W2 g8 J5 U3 Z0 K$ p
/* 报告通信结果*/
9 c) ^, x, |; y0 h. ~( s
if(upp_error_count != 0)
2 o/ {% ~4 X) ~8 Y* Z( n' x
UARTprintf( "upp_error_count=%d\n",upp_error_count);
) Y- }/ y- y# @% C
else
6 Z* o! ~3 f4 k: T& D) I9 F' O
UARTPuts("uPP transfers complete!\n",-2);
+ e n. \* c9 p" f
. D. i% _1 C0 U5 Y- x& ?
UARTPuts("Do you want to print all the data?(y/n) ",-2);
+ W2 _9 e$ A5 _& d
UARTGets(ch,2);
3 d( G( J0 y/ w* g7 x7 Z$ u
UARTPuts("\n", -2);
1 z4 x" f$ D+ D2 O! e6 {: P
7 Q7 `+ _; m. ^6 c1 P3 r
if(ch[0] == 'y')
/ b) H+ ?" T! E% i! g
{
: z# |! l) U7 b; R% i; M
/*打印全部读到的数据*/
6 L" ~1 v' A' C; o; X1 N9 g# p
for(i=0; i<upp_frame_size; )
& I6 q6 l+ E; e# K
{
. Z& p. [/ y; d" q5 \
for(j=0; j<5; j++)
/ j- f$ _$ P/ V s$ T) \$ B
{
8 _0 h6 b1 R; i [
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a
);
9 l! }8 T5 k0 d# y
i++;
2 R; n% n: Q* V8 f, p
//if(i >= 4096)
# W! _/ e! z, H8 y
// break;
/ W# V: o1 m7 A4 d
7 z! ], I6 @" D4 x3 z
}
+ D! o) @! q. {% |
UARTPuts("\n",-2);
% d8 P( y, n0 Z7 ?8 L6 [9 q
}
- q- e1 R$ c: r {& g$ R
}
7 S( t' @: H9 R$ t/ P t
' E$ ~: m h* C9 k4 c/ @
}
3 {* f( g l( q5 J
1 Y% ?/ Q7 Q7 ~3 p' k' L- W0 p
# x4 \2 d0 a5 A6 R4 E& L9 K. x# s
作者:
tulipyyf
时间:
2014-12-22 16:08
追加说明:任务是空闲任务,因此没有做循环。
% B1 x0 _5 @* i' b
作者:
Lewis
时间:
2014-12-24 18:06
多次执行是没问题的,最好不要用空闲任务,优先级太低。
: b- N3 |$ D( |( ?* m/ m: H. w" k8 ?0 U
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4