upp问题,在SYSBIOS下的应用问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
% P3 H' u( u3 k" D2 b$ v- V$ R
Void UPP_TASK(Void)3 B! m% l% N6 d/ B
{4 h* r+ c% x6 b' D

$ o1 r' R5 J- q6 z0 O! P, O    int i,j,k,target_int_count=2;
$ l# [4 W8 W7 T% e" O: }# U    char ch[2];, M* S2 c) ?, [* I" r; @' `5 m
& |! I# A* o9 h# L$ Z

4 w! G5 a5 _7 D0 S$ @2 K# o) F" O/ v/ {; \+ e
    upp_interrupt_count  = 0;& t( N- Y: l/ d5 X
    upp_error_count = 0;# F& ^7 C, ~- j

2 Z7 v. {2 I- S    UARTPuts("\tResetting uPP buffers...\r\n",-2);* s' L2 }, m- a
    // Initialize data buffers
1 h' z; n, r; K* L: `& {    for (i = 0; i < upp_frame_size; i++)" z2 I# l5 g1 v- @
    {
- V: v: ~- P- O/ l! C5 `6 @       upp_buffer_b =i;/ b! L( b3 O, }+ ?
       upp_buffer_a = 0xDEAD;
3 o4 K" t2 U. A; @  h    }& `% R, T0 \1 Q

: M7 O; q  j( ]& s5 b8 D% \7 f    //for(i=0;i<1024;i++)! m3 ?& C: G$ w4 w
    //    temp=0;
4 Z. _9 s. _4 M7 m4 }: q$ A: B
2 ~* x/ p$ m4 @) X" {    //UPPReset();
- I% @" f, c& k8 A& Z$ C    /*启动UPP DMA传输*/7 }5 ?, y& l1 i) c1 [7 z4 \
    UARTPuts("upp_prog_dma_i\n",-2);
( Y) R" R2 {, o& ~$ m/ W    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
, o" ]5 \; n/ C( M$ m: ^) T    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
% O1 Z) {+ }$ G, z2 G5 O9 l  @' s. g    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);( P+ j. f( P5 z) U

  _) c3 u5 X2 G+ k$ n    UARTPuts("upp_prog_dma_i\n",-2);
1 C' q( w! p9 k: ~- o    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
7 N8 i6 a7 [$ X3 i' X" m1 g9 w5 Z  @    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" x  e" k1 M& F  V3 c5 R: A    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);4 j7 Z5 [/ c+ c4 [! L; ?

7 A7 ^5 O6 p7 T6 y& k# [) X1 d: h    /*等待UPP传输完毕*// S8 S! A0 e8 m4 A7 [1 o6 r9 Z
    //i=0;1 n# L8 w" R# S! N
    //j=0;
0 V* h8 K( F' s4 Q8 {    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
3 U7 X' q: x( W$ Q  w    {
+ C3 y6 G+ T; F$ p5 T3 E1 \        /*  测试UPP传输的同时操作普通DDR数据# Q2 F0 I5 W- v: @/ d5 z
        temp=i;
2 w& o2 D7 A0 ^8 S5 l' u3 h- K  X7 _4 h        i++;# q: r9 r( o8 n: e
        if(i==1024)
9 ^4 B; _: g3 w        {, }( s3 V0 _7 i+ h# _
            i=0;
$ ]8 k1 W2 y+ K" F: p: L; h            j++;0 f* m) n. v4 g  D0 h3 ?
        }
/ ~0 f' G. f; q( z! K        */
- e  r# G/ n! G8 P; w& ]5 ^
8 \  a5 x% O; P7 U  K* ?4 [       asm(" nop");
2 |3 k- u8 @* K+ M( ~# ~5 c0 s/ j  ?
: ^4 k2 Y$ K4 K" N) R5 c$ Q/ x       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
! t" E: W0 z: D/ i5 b. Q    }
. W' V/ B2 w6 I2 P! w$ s6 Y
& z6 A6 S, d- O6 p: q6 A    /*检查UPP传输的数据是否正确 (loopback modes only)*/
  H6 I2 q) m% Q5 I* ]( |8 |- D    //UARTprintf( "i=%d\n",i);
( H) N3 v9 s) l7 e, @& S/ Q    //UARTprintf( "j=%d\n",j);# i# {) w  q, q) j8 {
    UARTPuts("Data mismatch in buffers.\n",-2);
' r/ o6 y, u) p/ S( K    if (upp_interrupt_count == 2 && upp_error_count == 0)
6 w% c9 R6 Z0 R. U    {
# o. _# J, k& A& z0 c        for (i = 0; i<upp_frame_size; i++)3 W+ N( `% t; ~
        {
! }; B5 U9 E* z: n            if (upp_buffer_a != upp_buffer_b)
- s' P9 l4 P7 Z$ i, B7 P3 F" Z2 ^            {: k( y  v5 w+ ]. j5 N
                upp_error_count++;. g! f6 B! d" q% I, e0 c# t
            }
- f0 K' n, P6 q        }3 C6 f( J/ e5 z* Q# P9 G
    }* u# f- w; J0 x  o/ U  P4 q
7 m5 h. E4 }* L
    /* 报告通信结果*/
8 H- e3 L. P  H* |3 S    if(upp_error_count != 0)9 h5 Y9 K/ `  x* y5 l4 a
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
, X( {0 x) R$ V, _    else
4 ^) S6 k# S8 F8 O* G0 K        UARTPuts("uPP transfers complete!\n",-2);/ }. u* }1 a5 g' F
; ]3 n" h8 S4 }  r6 M% \+ u/ v
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);( N6 A0 H3 d( Y9 T
    UARTGets(ch,2);
; N2 v( E& d( }/ ^$ H: U$ `: b    UARTPuts("\n", -2);, B" }0 c, P; l+ m, H, y
$ u; y0 {( K( R, e8 _
    if(ch[0] == 'y')
' e2 v5 E% o: \3 n    {% T6 U" X) k3 Z' c# ?) J
        /*打印全部读到的数据*/
& n+ ~( I& s3 s7 y( h& Z* B+ E        for(i=0; i<upp_frame_size; )
( Y& a0 G9 V, L8 A8 Y! M        {: _( g; U- ^: p
            for(j=0; j<5; j++)& P% v- H; _4 v" v
            {
- [- b' p# U3 k: O& F                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
  Q# u& T7 U# A/ G                i++;
/ m5 B; B( Y7 H6 p. ?2 `                //if(i >= 4096)3 e) ?  G/ ]/ c2 v
                //    break;9 x8 ?3 F7 m& x9 A/ b
3 c; w$ V; c4 ~' ~9 r
            }
  q9 ^6 q9 v- `# Y4 p8 m            UARTPuts("\n",-2);/ Y/ @- @: e% I5 _1 z; K6 _- F
        }. U# G" [2 O4 s
    }% P2 k. @6 N) @7 N0 l: r
$ D& z8 P* C" ^) J. q( _
}
( R. ?9 q: T! w$ c# i8 n

/ N+ H* n( c! F( w( g
2 F2 q/ B; y" D* U. L7 m$ f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。1 {& }& y7 w  e
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。* M/ @; I: P& J2 D4 H% [5 [
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-23 13:39 , Processed in 0.046565 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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