upp问题,在SYSBIOS下的应用问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5633|回复: 2
打印 上一主题 下一主题

upp问题,在SYSBIOS下的应用问题

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
0 r$ y# }. ?) ?; J
Void UPP_TASK(Void)
( C6 h9 W% S, N  U- b{
* ~8 l" a2 q8 ]- d$ m$ ?! ~5 _
) L9 L7 z- A! s    int i,j,k,target_int_count=2;4 [0 w9 T# X+ O; N$ x
    char ch[2];+ x: m* q4 t* V
5 C- ?: z1 a4 O1 D

& h  E7 c% ^. {# V4 x' d( `, e0 P) X# y  a* N, U9 Q
    upp_interrupt_count  = 0;
! ?& W7 s7 N7 p    upp_error_count = 0;7 ~8 q7 s* y* t# R# }
+ S/ U. t( i0 t
    UARTPuts("\tResetting uPP buffers...\r\n",-2);. `8 `- @' W  K" j, ^; h. f; v- j( P
    // Initialize data buffers
8 s* S' u1 C5 c    for (i = 0; i < upp_frame_size; i++)4 t$ P2 \- n! j6 e
    {
- E& q0 f. |) c2 e) v       upp_buffer_b =i;
) p) R1 q. o; J$ `9 w       upp_buffer_a = 0xDEAD;
( K# Q; F6 ]- M3 a" E% _    }7 U" t/ D# r8 S0 z

  ~7 m8 x% C9 M9 Q' x    //for(i=0;i<1024;i++)# P7 L& m" T) e& C5 m
    //    temp=0;
5 p: S; Y! i4 o3 o1 I. p
" r% v" ~) m9 f% a( N# s    //UPPReset();
$ Q9 x2 D& f7 j0 M% t    /*启动UPP DMA传输*/4 [  ~6 ~9 f3 k9 w3 {
    UARTPuts("upp_prog_dma_i\n",-2);
1 ?1 M1 ^4 Z; j# P1 `    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;8 i0 q  r" r1 S# D- T) `6 y
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);6 ]( E( X  y  m, `6 x: [0 H/ g; Z
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% O4 c% B, _6 p. h. j  j* ~. V, }) y7 h/ y* {" @
    UARTPuts("upp_prog_dma_i\n",-2);
# k  x0 Y( ]* o' g/ U    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
# I4 [6 M9 K* e7 t+ S# I$ X    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
( A- D) a- F: N! F7 D    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);/ q% m9 J3 J. ?

9 x# J" h2 [$ i4 t, [5 j    /*等待UPP传输完毕*/
1 R: H4 k: @. ^6 [1 V# N    //i=0;) e' K) p% A- _. n* w
    //j=0;/ n) i: C6 k1 P2 b
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)9 e) [. Z: K/ ~. u3 |& f) t# f5 _- v
    {
; y" z- e* |/ e7 \        /*  测试UPP传输的同时操作普通DDR数据
0 t. w2 a: I& G! ^$ u        temp=i;1 @1 V  t: @- }. ~/ ~% }
        i++;
3 t! h  R( J. B( a5 ?        if(i==1024); O* A; `9 @! Y: b4 N! [1 o' I! g
        {( q" C, \+ u. j! B( R" i5 A7 S( I
            i=0;
- N3 F% U' _1 z- e) q3 l6 v            j++;
! m4 u7 I, e$ b. s. M+ k0 Y& l1 o        }
: X3 d- o; q5 I& X% t# P* W        */! N3 L1 }) s1 ~- d! {

+ w4 h- Z' D8 I- S3 ^  [5 Y1 b       asm(" nop");
, |. y1 m- L9 Y
& I4 W, p  n3 w0 e3 F9 O! ^  ?0 A       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);! S$ [/ [- Q7 K( I, P0 X
    }. _: j+ C5 T3 v7 `2 ]
& c( w+ J! D* z0 ^1 D* `# ?) ^
    /*检查UPP传输的数据是否正确 (loopback modes only)*/" G2 r3 ^/ J  p1 _' j7 [5 |$ x
    //UARTprintf( "i=%d\n",i);
5 C$ u; @0 M+ l- Y, e  Y5 A    //UARTprintf( "j=%d\n",j);& R, A4 U# T& k( P2 R4 g% z
    UARTPuts("Data mismatch in buffers.\n",-2);
0 c1 \9 v1 ~6 U6 }    if (upp_interrupt_count == 2 && upp_error_count == 0). V' J" X* Q3 s2 Y. A2 D
    {
8 v/ o% F6 O6 q: W0 Y9 b        for (i = 0; i<upp_frame_size; i++)
0 B. B$ Y+ |& [        {" W& h) z7 S" R/ ~& r9 j' f8 s8 a
            if (upp_buffer_a != upp_buffer_b)
( i" E9 K8 v( b" X( }            {
* v+ s! _. t6 c3 |/ K3 Z                upp_error_count++;2 Z! C2 J' q3 J6 |0 c: c
            }9 A  x- c* N/ O" ~; @  t
        }
: @# \, t, X" x+ |- \9 p5 [' L    }
8 }9 o3 q8 N! l5 ^6 t0 ^) l4 t
    /* 报告通信结果*/
! W/ B. {. k3 Y    if(upp_error_count != 0)* e9 K% l2 B7 R. c3 R3 _( I
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
. @' N9 Y; n% j! W1 }. x    else7 v* }2 g0 ~3 U  H; g6 w
        UARTPuts("uPP transfers complete!\n",-2);$ \5 K5 ~# e5 O4 p% X5 F

1 Y. u6 p; ?$ j6 d    UARTPuts("Do you want to print all the data?(y/n)   ",-2);8 O% ~+ l2 O, P' P) D; v4 t; i
    UARTGets(ch,2);. ^; u, T+ G( H
    UARTPuts("\n", -2);7 q( p0 w0 t2 w/ m) X( [; @7 z

7 `  j. b& `  y% k# c9 x    if(ch[0] == 'y')
) t- H; w" R0 U; ?    {
. X% r9 L6 b9 @& {+ ^        /*打印全部读到的数据*/
9 y1 V! ~( k* S2 l( D+ N        for(i=0; i<upp_frame_size; )
, @7 w. R+ E3 i; l2 ~5 o        {
1 R: B$ x: _7 Z; c' V' q            for(j=0; j<5; j++)
( ^+ U: o& p8 a& _5 [; {            {
2 C, a' N. o7 b8 ~$ ?9 }9 t& _+ Q. a                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
& B5 `8 F6 ~% P- b2 [( ^; |                i++;4 h9 g2 j. N$ ^  Z
                //if(i >= 4096)
0 S& b# H5 s& F% m8 ~                //    break;
  {: [9 O& j  @' I1 y  _- ]+ D$ X% y/ D% ]
            }  }7 O0 x; e  O2 i/ K
            UARTPuts("\n",-2);( E/ J( F0 T  o8 N4 I- |8 w5 |
        }9 H# F+ @, j. ^- Y/ Q6 G  b4 z
    }
5 o- Z$ ]# l$ S( |7 z- X- _) y3 A6 E( K# w) D% p9 n$ ?
}
( H# j: n1 N; M2 b  {1 }

3 q# [* \# T6 ~& Z8 _: {, m' C. }
; W0 X) A( Q  i- K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。( n. A5 B; N# Z6 s8 g
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。% \) Z- e. u$ {8 i& O
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-23 20:04 , Processed in 0.047611 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表