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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
$ s) m  K- O# E2 o6 P
Void UPP_TASK(Void)% v" c9 c+ O& ~& q
{
, g; G; H, s; {# b1 [( r) C% J
7 Z# C3 y2 j8 @4 V' U- Z3 l7 M    int i,j,k,target_int_count=2;" Y2 k1 Q- M" l7 F* k, X
    char ch[2];3 m1 N) {5 p$ T

/ e: K- o7 ?# _. }6 D  W1 g. A
) a. N4 a9 p& [/ T! X0 f
4 p- r, J7 ?  v; f% }: [1 [* i    upp_interrupt_count  = 0;
6 N8 O  n2 ?, Z& k. x/ W    upp_error_count = 0;
  \2 z1 j% b3 n2 O5 |5 A* }- `
/ w- M6 O0 P# X" y' [* d/ h; N8 j    UARTPuts("\tResetting uPP buffers...\r\n",-2);
( ]6 h" u  Z- |; O4 M2 H    // Initialize data buffers6 U, S) R3 R4 T. Z: i) _
    for (i = 0; i < upp_frame_size; i++)0 z: t2 T6 j9 @, ?" h; a0 n
    {
4 Z& `! k) Z: @       upp_buffer_b =i;
# b# W# B8 d2 W. I4 u: O# W       upp_buffer_a = 0xDEAD;
" v" Q" |' |* k# f( x! c- x    }4 T8 n+ r& F* q% b4 u. l& x

2 J" `8 h# ^* y    //for(i=0;i<1024;i++)( q" b8 z& o% W6 S8 _6 s
    //    temp=0;4 a8 w- i9 o$ \. @* w
" P- h# _! Q' @  v
    //UPPReset();/ g& t; X; t! l6 p% s* @! S4 ^- W
    /*启动UPP DMA传输*/
$ Q9 m# ^5 x4 D% D4 O    UARTPuts("upp_prog_dma_i\n",-2);# y7 g1 U) r" H0 Z
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;' E5 X: x8 {( A+ f
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);9 s3 n) D7 z1 R1 V2 D( O
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
4 i7 L, M, Y2 r5 T) V! d- t& W$ p' ^8 E0 F3 g
    UARTPuts("upp_prog_dma_i\n",-2);& n& d' {# \) ~/ x0 ?2 b
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
# I2 e/ X% z+ @5 F    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);5 _1 I  v9 m1 j2 y- j# Z
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);; H! s% H5 o) v" v. d0 \

1 _* z* Q; ]$ U) a    /*等待UPP传输完毕*/
: k, r" u( X4 H" i' [$ T5 I  X    //i=0;
- C3 u" n$ N  ?# S8 g" q: q    //j=0;7 H& n* y- w: f8 ~2 V) J# Z
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)! r$ u" S. `! h0 X
    {& X' s/ E, M3 q
        /*  测试UPP传输的同时操作普通DDR数据8 D/ ~7 ?  F$ {  B$ {8 a0 J
        temp=i;
% @. K, d& j# ]8 \        i++;
* b* c) H( _* |1 ]) G" L& g3 u        if(i==1024)' y* _; v7 N/ Z0 s6 i8 \/ v) n
        {- ^, U- [/ E+ V0 _# ]- l8 J
            i=0;9 q5 `: q/ B$ D# `# ]" e" T! H3 Y
            j++;& z- `" W% c7 Q! `! g
        }
' ^6 B6 T1 D3 Z8 v# L        */: [2 J* t4 C+ A/ M* y0 t. S
; o6 Q& X/ M0 c" @0 g- t1 d5 e
       asm(" nop");" U# r1 z& n! ^; y

3 P9 t1 L* ~2 J; U# {/ B$ V& n0 \9 I       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* M) s/ y: u$ D; c* a
    }  _$ ^4 \. S; U& \8 e4 G
( W! w: J$ m1 Z2 _* i
    /*检查UPP传输的数据是否正确 (loopback modes only)*/" j7 R& C+ l/ j7 j* o/ i' N
    //UARTprintf( "i=%d\n",i);
. I: q: r& C! y/ T7 T, a0 |, c+ R    //UARTprintf( "j=%d\n",j);
, R, q9 U$ r* `& j' r: ^! J( X    UARTPuts("Data mismatch in buffers.\n",-2);
# l- _6 y' E. `+ i    if (upp_interrupt_count == 2 && upp_error_count == 0)
/ \- B1 {5 D* G" _& k. m    {9 y% @2 V$ f& E3 v# l: }4 w8 N
        for (i = 0; i<upp_frame_size; i++)
, c" B" V/ P5 Y0 [4 l) }, t* \        {: V1 k  j, t$ V, k
            if (upp_buffer_a != upp_buffer_b)  K1 G* K' H5 N( g" b
            {. l% z! x- u) ~
                upp_error_count++;
4 o" ~3 [- q4 ?4 H5 r8 _3 a) S            }
! @$ J% {5 r$ L* M, ]        }. m9 R6 `: a$ z, ?( N
    }/ Q" X' \6 P7 X8 I( ~
% F: b  W, i' h. i
    /* 报告通信结果*/
; S+ G% W" K' B+ z2 |    if(upp_error_count != 0)) _9 E/ z1 g) O& C( F) |$ R: M+ }- \
        UARTprintf( "upp_error_count=%d\n",upp_error_count);3 F: U# @: H( c4 d+ J
    else
/ r' T! T. g$ k; s8 ^1 c        UARTPuts("uPP transfers complete!\n",-2);
- i& ]* I% Z+ F- K  W4 G" _# x. @9 Z( m9 E
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
* i! h& ~. [  f- P. [/ H* c    UARTGets(ch,2);' S* m  O: c9 e9 ]7 _
    UARTPuts("\n", -2);
0 t. @) H( v0 x% S4 l- E7 o6 B: I4 `+ o, h5 q0 A2 u- P  C' X
    if(ch[0] == 'y'): r9 a3 ]# C7 p2 x3 q
    {
; L$ y7 ~6 ?. z, N3 ^1 h        /*打印全部读到的数据*/
' W- L) b$ [" g- ^8 l        for(i=0; i<upp_frame_size; )% U1 w4 K  M  _5 t2 o8 d+ X' @( g
        {
3 ^: A2 n" C! m6 M& i8 e$ L/ S            for(j=0; j<5; j++), e; |- `2 x, d. x( G! F+ r
            {
* R; }+ v5 V$ P% |9 p7 r                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);) ]6 C" @9 b! h1 a3 g$ h- T& b
                i++;) d, D5 L5 T2 z. O
                //if(i >= 4096); |. s& N4 N3 g' V7 v% v
                //    break;
" |' c& H; e) Y1 V9 x8 C6 ~, R. H* }% H5 U
            }
- w) x. n) ?( J4 t            UARTPuts("\n",-2);2 y8 Q5 ]+ c4 J
        }6 F; k& _* \1 M! D
    }4 q5 N  L% I7 p0 s, m/ ]
7 W$ j8 k4 p# L2 i: P* ]
}

# c+ ]9 I5 }/ E. |

5 f: s" Q- }: R! [: s8 E. r5 G6 p+ z+ I. ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。  L& M" J' l, i# c  s' f/ q, s
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。; i7 z5 Y! @! h
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-22 19:06 , Processed in 0.040217 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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