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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?) w. N- I1 y  v( m# W
Void UPP_TASK(Void)6 w% e# `/ _5 D4 \9 p" @3 b* O
{
; C0 L) y% I( N% k3 ?( C
( ]) o, u" f5 o/ L: {    int i,j,k,target_int_count=2;
6 l4 I9 P6 \  N/ H4 \4 S" G" F# b1 a! T% a    char ch[2];  e! [4 k% U+ a, f% _/ w

  @8 n0 C5 c. C* E3 i/ Y/ w
- t+ T7 L" ~  E) p1 x) z0 k/ v: y2 f2 r2 O: W4 v' Y8 m' E$ Z
    upp_interrupt_count  = 0;
* g7 D5 g4 b  _. v) B5 Q    upp_error_count = 0;( X" h( ?  i9 g8 K8 H9 P( z

3 U' |* x: u) j! |    UARTPuts("\tResetting uPP buffers...\r\n",-2);: I( X6 Y# ^, r' t# Y  Y
    // Initialize data buffers
  U1 b2 F. U3 D$ I& D. |    for (i = 0; i < upp_frame_size; i++)9 B4 _2 M2 H# w+ P8 k
    {
) Q. N) B8 D- f6 I2 P# \, I+ p       upp_buffer_b =i;
3 ]+ J5 O+ `3 n( C" E       upp_buffer_a = 0xDEAD;1 \* F' t  O5 `- m
    }$ i3 |$ Y: T8 h; n6 k) q; ?

# K9 n$ z* L& S" B+ h    //for(i=0;i<1024;i++)$ q5 F1 l: A" u: |7 k/ c
    //    temp=0;
$ s5 }; R2 ]% C' B
4 Y5 s) v) l/ ~' j: u2 p6 p* J    //UPPReset();
2 {9 ]: Z0 C- ~; w0 X! b    /*启动UPP DMA传输*/
  F) T/ ~' w; d& ~0 s2 ?    UARTPuts("upp_prog_dma_i\n",-2);, n9 K, P) i9 @2 M; H3 q
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;) k4 R" X) ~0 Z( @
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
. P7 l( W6 n/ ]    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
/ b" v3 N* B. \5 f
7 Z7 S, p+ g% w4 E" u# g+ _& A( g    UARTPuts("upp_prog_dma_i\n",-2);8 Y; B* z5 S8 X( e
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
/ k" X/ C9 g) L- e! N- s    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);0 |& T) ~) @: R) f/ l; x  ?1 \
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
0 w9 _& a1 a  k( d6 \# t* H; m( E& v% X. B* |8 C$ w. O
    /*等待UPP传输完毕*/% F  W( w( i# x
    //i=0;& P: }$ M' [- b0 Z4 P! i
    //j=0;
/ x% F( E* U9 o" A* c# ]# J    while (upp_interrupt_count < target_int_count && upp_error_count == 0): @. @2 |- a9 M* \
    {4 p( U. T! Y0 P- `
        /*  测试UPP传输的同时操作普通DDR数据
8 Z  r* V8 K% O8 E# D9 [; Z        temp=i;& ~2 k7 K3 \( D
        i++;
6 ^; |2 j3 }. K% `        if(i==1024): V6 R( D9 L4 H& m0 b
        {
! x' I2 v# P- ~8 Y0 I$ f            i=0;+ U8 Q  ^+ a( `2 r
            j++;
' o) z$ \! R# f. @        }' C) \; Y3 f5 S' s
        */$ [+ j3 h1 c% l- W8 ?/ ?

+ h$ U0 n' p2 T: v       asm(" nop");$ g, O- r) D" S+ p

" m1 w2 c) K! f3 O! S       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
( m* c0 N! G' ?    }
6 h0 {3 H  t% y. A  ?% H' z
: t0 i( s7 h( _! l% J    /*检查UPP传输的数据是否正确 (loopback modes only)*/! J1 I% Y) e/ G
    //UARTprintf( "i=%d\n",i);1 c% P& O6 Q9 l+ V6 G. }$ a
    //UARTprintf( "j=%d\n",j);
: r" J  X3 G9 ^0 ]' k' ^    UARTPuts("Data mismatch in buffers.\n",-2);
* c% f" ?$ ^3 `/ A9 _    if (upp_interrupt_count == 2 && upp_error_count == 0)
, g8 w$ u0 ~  a- q( A7 z    {( e; z4 H9 J0 I- h. F
        for (i = 0; i<upp_frame_size; i++)$ r6 k9 ^0 c, U: _! _( D
        {4 j( L- p* u& U, i, v
            if (upp_buffer_a != upp_buffer_b)* w# j# ~: h2 `+ `2 B& U8 D( A. Z
            {$ i. k% ~& `6 j& V
                upp_error_count++;: D* V( s, x$ h! r  h! e: Y# }
            }& t; U& o; f3 }  Y4 Q2 u- H
        }1 x1 s) |$ b4 v+ f- j$ ~
    }
" N: v" z, I8 ?4 ?) u" H
& _5 n* U/ V+ L; g! \1 G* ]    /* 报告通信结果*/  H6 _$ m, X6 r% k) L$ `7 q
    if(upp_error_count != 0)
8 [  A5 G- O3 c        UARTprintf( "upp_error_count=%d\n",upp_error_count);
7 h& O0 x# g( L5 @9 `( B, T    else
8 Z* C/ e0 E  g        UARTPuts("uPP transfers complete!\n",-2);
! Q/ o* R3 M: D  P+ k  X7 M0 t3 Q) Z" w
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
- O; |, u7 R" G) E    UARTGets(ch,2);3 u  R" X3 m& P# V+ [
    UARTPuts("\n", -2);
! p& l9 `& ^# ^9 D5 G1 }( _; h' l9 ?- D' g
    if(ch[0] == 'y')  F! Q7 M  M2 ^8 L! H! r+ ]
    {
$ x& U/ P$ q7 i# z7 [        /*打印全部读到的数据*/3 [* N+ ~% Z/ I5 `
        for(i=0; i<upp_frame_size; )
9 x. W3 u4 Z; D6 B# q        {, M# f; z' l2 O) B1 e3 H
            for(j=0; j<5; j++)
; l3 X' x4 K5 @- p/ W* u            {
+ L# p; s- p9 D                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
& a. X( i5 ]$ z( c8 N                i++;
5 G4 Q8 `; o1 |& v1 d6 Z" w                //if(i >= 4096)2 D$ e- q* b* s' W5 c$ ~
                //    break;- ~! Q0 P. Q1 q6 c

: r7 W3 C- |# D' Q% p# }, L            }
9 W4 A' T- p+ f2 L- u2 }            UARTPuts("\n",-2);
0 H' P8 d0 a7 e2 l5 X5 ?        }
4 _0 A# C& C! K" T    }/ c/ |) Q! _- P' f  F' C/ [' l9 L
5 n. f  D& z/ f( j  _, @' M! s
}
, @$ `0 ?% u; w0 H
/ Z8 L/ L$ _( V/ s$ B

+ R& D! \/ F& w" \8 \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
, O& S$ ]/ g% v- M# T' {
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。& |" @3 e1 H# M. I4 c
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-17 20:01 , Processed in 0.038495 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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