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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?% J9 g( Y* }; }8 x: C
Void UPP_TASK(Void). T" x' r1 K3 O9 }
{% i3 A7 i4 T: R$ H

  ~: g1 T, O1 E    int i,j,k,target_int_count=2;5 t, h2 c" `5 t: x1 x
    char ch[2];
8 o3 M) }& w% J2 m) Z) I
+ I6 s9 U) `0 o3 Q9 F& z- O& q8 A9 x2 ]5 m

# y# s& b2 V8 V* N6 ^8 V# a) _( y    upp_interrupt_count  = 0;, }' N0 l% c( `- m# Y" |6 @
    upp_error_count = 0;6 X- Y3 Q1 e  R/ R0 L# I
# q9 w, I5 j- N" \( s1 W( f4 u
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
- W+ U2 ~: J& }: p2 {: q9 s7 ?  {3 d$ V    // Initialize data buffers# b' Q6 M  K( I) f3 g
    for (i = 0; i < upp_frame_size; i++), m6 C6 ]' B: L6 \$ N0 u
    {
9 N- b3 A/ W% p/ N       upp_buffer_b =i;
% n) A% I0 H, ^4 ^       upp_buffer_a = 0xDEAD;  L3 ?8 U& K& Z3 h7 b( m9 p
    }( B8 p1 D$ @9 G1 J4 u2 ]

2 z& R! s/ O0 t% `6 K    //for(i=0;i<1024;i++)
+ z  `7 r4 U. D% k7 ?$ w8 t- @    //    temp=0;
, _  i/ E( E0 N1 n
9 \% q. |& x7 ?  k; j3 y( q    //UPPReset();! r9 L1 B' j# ?8 {& Z
    /*启动UPP DMA传输*/' h, V- q& n1 @- R( i' J/ v
    UARTPuts("upp_prog_dma_i\n",-2);9 c) p. ?) Q! {' E  g% t7 }
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;: _' N$ H/ F9 u& t5 N
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
7 \- l2 v9 H& U0 V. [    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
5 W7 i1 [/ b7 ^; M* G+ {4 g; d2 n$ y/ M9 j& y; P& E( H
    UARTPuts("upp_prog_dma_i\n",-2);& p# S  [( Q# l4 N$ ?' _
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;, m2 o! B0 U8 b) ~9 r! Z; O- `
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
8 a: u( T8 a' T. I  O  ]    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
6 D* `5 d0 d, r/ z6 D# x7 l
+ U( R/ a3 {" T* U3 O    /*等待UPP传输完毕*/5 T: r- k1 I7 I$ G! u
    //i=0;
6 D& i4 }& a  e  w9 P$ N    //j=0;
/ D% `# s" h1 W# w% ]2 e; A    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
5 N0 L9 h" h/ [6 f3 ]* g. C    {
; `* j+ }: b4 `9 {1 C" t        /*  测试UPP传输的同时操作普通DDR数据
' `1 r0 D) c) ^  U" d7 j  p8 N        temp=i;/ {. V+ H5 M+ l7 W; ^  V5 y- l$ p& G
        i++;
1 X% _8 ~: y; f8 y        if(i==1024)
) B: T  ~8 I3 u( o        {
& ]% h$ B/ }+ c2 O4 d- g7 N            i=0;
- k& E/ V. R+ O. ?            j++;
8 J' C$ i3 I# B/ p4 p* K5 m        }* I# ?# \( @. r! ~9 z2 S  J4 D6 u
        */( E/ O, Z6 r& _9 ]
# p. _- T5 c1 f7 G+ V0 u
       asm(" nop");
9 w6 J7 [& q, \9 Y! b/ x. F9 J( j+ d. K  _: [9 X3 n
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);' G! |" d' A7 a, _/ T: U
    }
$ Y, B; C5 q% v- z9 r0 u: X$ g4 X1 K" j. c7 Y$ J; {* X9 o
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
2 l& }7 q+ T* H) a" h    //UARTprintf( "i=%d\n",i);
' j" M" _6 `2 k/ H    //UARTprintf( "j=%d\n",j);
# v! e, k& w3 V7 L    UARTPuts("Data mismatch in buffers.\n",-2);
; Z* |: N$ e6 J+ H  g( [    if (upp_interrupt_count == 2 && upp_error_count == 0)
# L2 ]& a2 [7 }- G3 A    {# p% |- b8 P* ^4 A9 k  a) A
        for (i = 0; i<upp_frame_size; i++)
# b+ l6 g) K0 U3 i9 Y1 \' w        {; j( P! f' b: O7 r. i8 S
            if (upp_buffer_a != upp_buffer_b)$ q) M8 p4 x! B& n: V" t
            {# w# F' v  \7 R) |/ q2 l1 ]* e  ]
                upp_error_count++;
3 {/ e! D2 v1 X; V+ M8 ?9 w. R9 ]. B            }
" e  t0 T# f: a5 V6 t        }
8 y3 r/ S& j6 w& l    }. w2 |& D; ?) r. x+ h- [/ q$ X7 w* x

: m% _8 \1 q) d' B" S& e) P    /* 报告通信结果*/
: C7 E  P% I$ m% Q- u! P0 m    if(upp_error_count != 0)
% d2 \$ i/ X4 Y. X5 V$ j  V        UARTprintf( "upp_error_count=%d\n",upp_error_count);
  E: q" X: d& p    else
& E/ ?1 g6 P& l5 K        UARTPuts("uPP transfers complete!\n",-2);8 b( r5 t2 n& p& n4 o

; o( f% D( S1 {% h9 Y5 W    UARTPuts("Do you want to print all the data?(y/n)   ",-2);! U: ]  C2 |0 w4 e) x  l
    UARTGets(ch,2);0 ~' V5 D3 ^: A& \& h" ~/ p
    UARTPuts("\n", -2);( m* j& Z4 E0 O% [5 n

2 J' K7 V  N/ m+ O! N8 M    if(ch[0] == 'y')* h( d2 W; H/ Y$ T& ^/ V
    {
+ J( c6 o% q3 Q+ i! w9 f        /*打印全部读到的数据*/1 z, b5 x7 l2 N. s- U
        for(i=0; i<upp_frame_size; ). o9 E+ a; |1 s  f3 A
        {0 F" K  i8 F6 p3 j" f$ h  }
            for(j=0; j<5; j++)) z" K8 o: }7 C$ q0 `
            {
8 k0 ^" X$ ~+ z( F( \4 c                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);0 x8 ~; [4 W/ x& g2 q1 e
                i++;
8 L& B/ {& E: y& d                //if(i >= 4096)
6 M' c* c2 M$ I3 k* Z+ b& x0 C                //    break;
- I3 b8 p- `8 w% f8 Q/ U- Y5 }4 D5 q8 i# g) D: K5 J( l
            }
) v, E8 K( a2 ^            UARTPuts("\n",-2);7 ]: ]9 z, ?( N( @' a7 Q* ]
        }
) b# P$ |; Q( E+ L4 T    }) W+ r+ }# c0 i' r. \
! B( w' ^6 E3 E0 p
}
7 n0 u$ `8 n# ^: a: q7 V: t6 k
# \) d- a& W; W( f
5 B# P6 s) O. q( V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
  Q4 u7 ~3 n8 D" P/ G  c  H
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。# w/ X  @% Z& I+ Q* v" m( v
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-12 06:55 , Processed in 0.043608 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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