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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?8 v5 q1 F3 O! S7 f  s# Z
Void UPP_TASK(Void)
2 r% L+ @! A/ ~% V4 K0 ]{
) r6 |  d) r6 m) v
8 o' z8 e( Q7 r  |! M  `" O) l3 g6 x4 I    int i,j,k,target_int_count=2;
6 P$ V0 u+ Q3 K1 I* c: L    char ch[2];* [6 m0 @# L# Y: F9 v* o
( h% y. E" v4 i7 a, F! d$ i

' Z! S2 e' S; m1 U- C4 v- J. O! s' F% q- d
    upp_interrupt_count  = 0;
5 Y# U! N* E. a  p# F( a" R# j    upp_error_count = 0;
& Q9 q6 M+ i6 C0 e6 I8 C5 I8 F
6 J" L( ~/ S" K5 N  U    UARTPuts("\tResetting uPP buffers...\r\n",-2);
- ]! K# O; {4 b# \8 P3 L    // Initialize data buffers
" J# U  g: _3 \6 K/ ]9 M7 _9 I    for (i = 0; i < upp_frame_size; i++)
' m& p  N6 d" @: h    {. `, O9 N# |8 ]( b) d* @3 L8 U
       upp_buffer_b =i;, U9 c7 d( r* b* u" ?3 w/ X
       upp_buffer_a = 0xDEAD;, [5 x) j. V2 B) `2 Z( ]6 X; g
    }0 h/ b. L1 }" o! T. s

: _- u9 ?+ J; X3 }" H# f    //for(i=0;i<1024;i++)
0 X) f! O2 n/ J2 c" D* b+ b    //    temp=0;/ |5 u0 ]: p, A# F

1 y: p& e) [+ }$ P    //UPPReset();
+ M4 n4 y8 w1 L    /*启动UPP DMA传输*/
. T8 H* c' Z" Y, n    UARTPuts("upp_prog_dma_i\n",-2);
% q- \, c5 U' p9 D% d9 @8 Q; k    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;3 {9 a& ?$ n* E( j" j4 X
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);6 `+ D9 S' e$ C9 |1 }. f3 L' ?- ]" k
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);& y" t9 e/ k: {2 z' e  V0 Q

" s: K/ T" b  w) R    UARTPuts("upp_prog_dma_i\n",-2);# ^" x* ]2 q5 F4 Q& K/ c9 f
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
9 |! E+ y1 U3 b# Q9 f# L    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);. D8 U6 B7 v! |; D
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
6 ~* L# l0 U! F$ f+ F5 W( ~" i
  k$ y' [3 }) E* g/ u    /*等待UPP传输完毕*/- k1 s9 ?, X0 S0 e8 ]( d8 V8 _
    //i=0;/ _. V' T# T+ ^
    //j=0;
" k7 e% L6 c. y) M- @9 y+ c    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
# P* {3 f! }; {- N3 a3 _$ a    {
6 D  G% n* A7 O$ u; B        /*  测试UPP传输的同时操作普通DDR数据
$ S& H$ u' F9 a  R1 a, J        temp=i;
8 ^. f* @. e5 o* F0 Z; K        i++;
/ r0 ~6 `# k$ s8 {* P        if(i==1024)3 }& \7 ~2 e$ _& `8 q  S
        {
: z- P, t" W# R! H            i=0;
# N( p; o/ M0 t( }9 N5 x6 ]0 O% N. |            j++;; \& }5 p. c' O% T, E9 a3 y
        }1 C9 a# d3 _0 A7 z! Q
        */& u8 L% @3 `; C$ A; U

5 {" S( z9 O, [  E6 }       asm(" nop");- M: q3 G: \- `. Z$ u7 `( h

! m* v6 X9 _* T% I- q       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* ~$ K# ?! Y% a6 s4 P& v0 {5 ~
    }
) t, e; G6 ?, d4 v7 t! w
+ Y( O% q9 D# w4 o6 k5 g7 D: M    /*检查UPP传输的数据是否正确 (loopback modes only)*/
. y! S, ~2 H; J/ l0 r) L    //UARTprintf( "i=%d\n",i);
# r; t" ?6 R3 J! u+ m* s- o# D    //UARTprintf( "j=%d\n",j);
, |  }/ w4 c$ X6 R6 f( J6 j) Z    UARTPuts("Data mismatch in buffers.\n",-2);1 P( w) h' r; o5 E& ~
    if (upp_interrupt_count == 2 && upp_error_count == 0)
& n1 T3 b) `$ @    {0 U  X7 \3 a6 E0 O
        for (i = 0; i<upp_frame_size; i++); t5 X3 h6 }' Q/ _1 |
        {9 b- ~( U) _+ b7 w2 c
            if (upp_buffer_a != upp_buffer_b)
+ L* V0 Y/ D  e* T% O1 P; D            {
! U; b' N* |( ^7 e. U                upp_error_count++;; a0 y3 @% ]2 k% \+ M  j7 X
            }
3 y7 l3 E$ w, S) R/ |0 Y        }
, V! ~& H) Y, Q+ C    }
& p7 [: }) I) A0 H) U0 U" D5 A6 _2 t. J( _1 t; @
    /* 报告通信结果*/
4 _: ^* n  w8 X: N+ W4 @9 E8 ]    if(upp_error_count != 0)
8 I" l: T$ _7 A5 V        UARTprintf( "upp_error_count=%d\n",upp_error_count);- g- @+ b2 J- w3 r+ e# C1 ]
    else
  Q" G1 Z5 t* C- H8 ~        UARTPuts("uPP transfers complete!\n",-2);
5 r; m' s" Y0 c  g8 @
* v+ D# b8 b% V0 X, E4 Z0 h: C    UARTPuts("Do you want to print all the data?(y/n)   ",-2);$ {9 q8 g" D% n& F0 D
    UARTGets(ch,2);
2 C+ ]( z2 o. D. d  R; q    UARTPuts("\n", -2);; F+ D3 w8 D& n7 N7 g
, s, e0 X" `; h: B- f; g
    if(ch[0] == 'y')  y  ~# e  w  c$ Y
    {8 q5 K$ X, n+ e+ o! [
        /*打印全部读到的数据*/: U' y- `1 b9 T7 w: v2 W& Z
        for(i=0; i<upp_frame_size; )
- q$ P& U: \7 q        {6 o7 Z8 h8 n9 H5 e, {/ g3 t
            for(j=0; j<5; j++)
- U0 Z3 _) [7 S+ C9 a# d' Z9 V            {
2 E1 c2 V/ h- O+ q7 D                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
/ `4 G8 u" k8 ]8 ~                i++;) V8 f- _# V2 q! y4 }
                //if(i >= 4096)3 }) o# `: i1 I- y
                //    break;" Q: w6 r2 ?) H

' J: z0 Q! Z5 \2 Z  A  R* `% ]2 t7 Q            }, O0 `" s. }; Z
            UARTPuts("\n",-2);% e" Y& P% _. P3 n8 B1 L' \
        }
/ c* m/ }% |3 X6 N$ ?2 O+ Z7 \    }
+ v7 G# d  ]# j7 @" H' A9 V6 B, R1 ~1 d
}
5 H* E& T1 ^; T* a- N5 ?

8 R4 |( T+ W" ?) R% F9 ~0 `0 F+ s% Q# g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。8 @5 A& \  S* t( L# q
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。6 n, I8 @0 v  C7 j9 ]) O
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-26 01:21 , Processed in 0.041421 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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