嵌入式开发者社区
标题:
upp问题,在SYSBIOS下的应用问题
[打印本页]
作者:
tulipyyf
时间:
2014-12-22 14:35
标题:
upp问题,在SYSBIOS下的应用问题
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
5 |# L6 s3 ` m
Void UPP_TASK(Void)
_- g: D/ ?, l* ]$ s& |
{
4 Y; Z: A, L3 t' k( S# }9 ~! O
o+ H8 S* [( w" e, d0 y% \+ l1 K& ~
int i,j,k,target_int_count=2;
* S" F9 I! |. r8 I
char ch[2];
% \* V6 x5 I. h/ |* P+ b j
% I. O' \, o' U
# _7 N* T* r2 _/ h5 e
, O: I8 T3 y, g4 Q% N
upp_interrupt_count = 0;
% n8 T8 G4 g, a; D
upp_error_count = 0;
- x. [5 {. C' r8 l. C2 k4 b: J7 Z
5 V( L+ y" E2 r. s$ h+ y1 K6 I7 a
UARTPuts("\tResetting uPP buffers...\r\n",-2);
% e5 W# }5 l( M
// Initialize data buffers
) H0 v! U" Q6 l
for (i = 0; i < upp_frame_size; i++)
0 ^4 J' o4 I0 e) R% M: a9 y5 r
{
! F6 @3 J! L/ r# [' E
upp_buffer_b
=i;
0 L3 x* r: e) k2 R3 y( @
upp_buffer_a
= 0xDEAD;
6 N- H1 l1 `3 G- q
}
( T6 i' N9 B- o
4 i9 x8 q8 a9 h
//for(i=0;i<1024;i++)
- e" _0 p5 U* E9 ]" M2 `
// temp
=0;
1 j. A' J5 e+ X4 e0 g+ k: z8 U
" ~, _. [1 y% j
//UPPReset();
$ `5 |) E1 |" r5 p- W4 K
/*启动UPP DMA传输*/
1 }: {5 ^/ K0 \9 d5 U
UARTPuts("upp_prog_dma_i\n",-2);
- q0 q4 B3 D% O( q6 Z" F6 p. v# t
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
# D: ?! O4 L; ~, _2 l* x; s
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
! M6 Z ?3 A+ e+ J4 G/ k
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% `% h1 \7 @ l1 f
. R" z. n( D( p# f0 J
UARTPuts("upp_prog_dma_i\n",-2);
( q1 T, ]' O# j& ~5 F$ N3 R
upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
! R, `" j" R) N' \6 `
upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
6 K! a5 J0 S. p! b0 r( J8 F: A
upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
, P t. Q6 N) }* ^3 H
6 S5 [" Y; G, r; J
/*等待UPP传输完毕*/
9 _9 W, N' g( K
//i=0;
# S: p3 z' e$ C) q2 T9 _) j
//j=0;
8 x- [2 @1 L) a( Z8 c
while (upp_interrupt_count < target_int_count && upp_error_count == 0)
/ u/ I0 `! F& a) m' c* v
{
7 X% n7 D7 n+ S* F8 |/ B( l
/* 测试UPP传输的同时操作普通DDR数据
" M# v7 l2 e- |2 ~
temp
=i;
% E' n* h: B k4 J* t/ O
i++;
; _6 X L9 k P B
if(i==1024)
+ b* ~9 F" Y3 o5 w; W& S2 K
{
. p. {* G p/ w/ V, L) q
i=0;
- C- A9 v" K+ J: y8 i
j++;
r2 U- P: \7 d$ [$ g. w
}
0 h t* r! T7 A+ q" k) @" M' G
*/
, a2 e _: U9 l$ @9 c
/ b4 p; H l) E/ k- L/ z
asm(" nop");
& a) S/ H2 r# N7 U- i
* z# p! L q6 N- j+ V) t0 s1 V
//UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
G* x5 D3 f' k! a
}
+ y! T T( Y$ @
& u" u. f6 S4 Q# E
/*检查UPP传输的数据是否正确 (loopback modes only)*/
# c/ _* Q8 j, ]
//UARTprintf( "i=%d\n",i);
$ T7 F# G& e3 K3 K& s5 W% c
//UARTprintf( "j=%d\n",j);
3 K% K* p2 ^8 @
UARTPuts("Data mismatch in buffers.\n",-2);
6 I; d& k3 ? o9 ?
if (upp_interrupt_count == 2 && upp_error_count == 0)
* h" v; U! k/ L# w9 w
{
7 B h6 ]% u( R% C
for (i = 0; i<upp_frame_size; i++)
' {: T: `: u( L. J
{
" i; b* k+ D( S/ m9 D' [
if (upp_buffer_a
!= upp_buffer_b
)
9 z' h( s+ \# ~
{
' U8 P* l% k) e l, N! G; T7 ^* ?& Z
upp_error_count++;
( W& R; U, ~+ z9 |' @; e
}
* ?7 m( X" Y8 s- I
}
1 o o' y' r) L G4 J, e
}
6 O: u' Y% P: U. O$ }; N3 L' X2 a
9 Q. D5 H5 u3 _& v( E
/* 报告通信结果*/
5 y7 e& t( L( N: ]( a+ s
if(upp_error_count != 0)
; g6 X( @% ^2 U) M' h
UARTprintf( "upp_error_count=%d\n",upp_error_count);
, v+ ^# B0 Z( r
else
) F- n) E9 S U' x1 |
UARTPuts("uPP transfers complete!\n",-2);
+ c- q% F$ d7 c6 E
7 `2 Q' r5 f/ y; v1 _& Y
UARTPuts("Do you want to print all the data?(y/n) ",-2);
) v& @# U5 @7 _& u
UARTGets(ch,2);
1 [# h( |' w5 h& j: v4 P
UARTPuts("\n", -2);
/ W* H; Y6 e5 K: x; F8 N
& g- i3 G/ N% g5 J8 P" K u& O
if(ch[0] == 'y')
' J d! U" S$ N; [) L* f
{
" k* v1 T; w3 b& H1 E
/*打印全部读到的数据*/
$ ?& c1 y6 N* F0 D9 ?) ^
for(i=0; i<upp_frame_size; )
+ j% _" |- g9 E4 C
{
# a9 T% A8 p( y) p7 \% p( i; H
for(j=0; j<5; j++)
) E6 e0 p5 {* @4 x6 ~
{
( ]+ u4 l" H9 J( m# p/ D$ l$ m
UARTprintf("upp_buffer_a[%d]=%d ",i,upp_buffer_a
);
2 Y& q3 [. r6 i
i++;
/ ~& m8 ~9 [& v# _! i7 t1 `
//if(i >= 4096)
0 S% i* X- d# }
// break;
; O$ d) O k5 w' S# R
/ Q: k9 J7 r; O; v3 g5 L
}
' T3 `/ I# V9 Y
UARTPuts("\n",-2);
9 L( R1 n% Q/ {8 }7 S
}
3 k( B {1 c; `
}
2 e& W# V( I% E
* c- x2 D% v- ^2 ~3 l. t
}
3 ]+ |; n% s: [( b$ g" F
" e) p- H1 f, [# m
$ F* ^( n3 S0 ]: |; A. N5 Z4 U
作者:
tulipyyf
时间:
2014-12-22 16:08
追加说明:任务是空闲任务,因此没有做循环。
5 S# ~7 C+ o! L, h& v% \% t
作者:
Lewis
时间:
2014-12-24 18:06
多次执行是没问题的,最好不要用空闲任务,优先级太低。
" p1 o4 y: u) i% s
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4