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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?8 D& S- P0 x2 l1 F1 s- [+ g( v
Void UPP_TASK(Void)
. c6 z: _# n# i% i( w# r! a{1 k" ^" T! z2 j
. V* s" T! R; n; [  [% g1 ?" k
    int i,j,k,target_int_count=2;
" F2 P% O/ Z. T    char ch[2];
' P& L( `& _4 T; k) @& R1 l: U# ?% j3 {& m5 s

( y; |5 i0 @2 n, M# B' K$ J1 F4 A, U  y1 o. y5 t4 Z8 U
    upp_interrupt_count  = 0;
) {' `) \9 R% P! ~& c    upp_error_count = 0;  _5 c4 J2 I) ]: g- A
% I6 _& c- i3 s
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
- t+ g8 `5 [2 ?- l* S: q  y    // Initialize data buffers
3 F/ s9 x( c6 e' @: c    for (i = 0; i < upp_frame_size; i++)
6 u" x/ R' Q2 J1 |    {
3 V1 Q, G  z' Z) s+ \       upp_buffer_b =i;
# Y0 r+ U! Y3 w       upp_buffer_a = 0xDEAD;4 A/ w# k1 B$ L& j' Y2 m. C/ S# W
    }. I. Z+ G; A* m5 u; x( D* G/ p# \

- B: _+ P3 \; T+ u    //for(i=0;i<1024;i++)- A9 n4 A: t9 k) m
    //    temp=0;
; ^. u3 f6 |) f# b0 P3 a8 J: t0 g* }* }9 w
    //UPPReset();
/ m( e; t% ^5 D! T    /*启动UPP DMA传输*/% r  [3 P: I4 o
    UARTPuts("upp_prog_dma_i\n",-2);
% w# J5 M+ `. N5 c& t5 H) O& T- r$ }    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;0 \+ j/ s3 u3 v: `% M0 K7 w
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);+ g' U: e2 C" `) Z& h4 F% C9 ]  f, I" w
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);6 l; ?: ?/ F7 V3 S% q

! }! Q0 R( p5 A- a: i    UARTPuts("upp_prog_dma_i\n",-2);5 z1 f; P! i) P5 O1 m% r1 ~
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
$ C- \  v3 k0 B6 Q+ h: `# J& o    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);' P: D) b, \: |/ L4 Y! c
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);6 I" H6 O1 w: i
1 V9 h; D  [( d0 f% J  s
    /*等待UPP传输完毕*/9 ?* h, W- [: k7 w( p9 P
    //i=0;! v4 d% N6 o7 k4 `
    //j=0;( V+ `/ ?" z2 D  |8 j* |, A
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
- i$ |+ W$ n5 C9 V% ?$ T1 ?    {" p$ J0 U8 s* P2 X3 }) L8 D9 e
        /*  测试UPP传输的同时操作普通DDR数据
7 s$ v5 Q" \: m0 j" f        temp=i;( `, [# U9 q5 p
        i++;
* ]2 U+ G) e: i5 ~) x4 V        if(i==1024)$ l) H0 R6 |4 }5 t. U- _
        {
9 @4 K; q$ \/ Q( k1 y            i=0;
, ^% _% J, z6 ~1 }! [            j++;! P5 p* \" {* o, r% o4 S0 D- ]! q
        }
# F- p+ N) w  z+ n0 T% U2 c! L: ]        */
5 v, P  ~# T: c$ f# ]9 z5 e7 ~8 Y! Y
       asm(" nop");. j& S# v$ r' D
4 u( D. h& U  t* B5 X
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* o/ V8 e; d$ O" P% b+ I  C; i
    }/ ?* y5 g/ L+ b8 r
8 k. z/ w& O( P7 b& d
    /*检查UPP传输的数据是否正确 (loopback modes only)*/8 n7 y: L- B# G3 `7 V
    //UARTprintf( "i=%d\n",i);7 _- D9 G8 c% Q/ }
    //UARTprintf( "j=%d\n",j);
! D3 k6 i% d7 A    UARTPuts("Data mismatch in buffers.\n",-2);
1 T; g: c/ v- O3 t, s$ A6 S9 f    if (upp_interrupt_count == 2 && upp_error_count == 0)
5 y7 d0 D4 r: H( Y4 r8 B: ^9 c& ^/ k    {
. r# o: }4 ]  M) F6 V& G        for (i = 0; i<upp_frame_size; i++)
% d1 q1 d' u  t$ U4 E        {
& g  [8 V+ f  I% O! V            if (upp_buffer_a != upp_buffer_b)
$ H, A$ ~7 `3 F. f; S' `9 _( y            {
% P( S+ n, B. h# e; S                upp_error_count++;6 E( L/ m( a2 Z# w5 I! W) z( c
            }
8 ^! F' G; @& a% B' T; T        }
6 h/ |2 r3 V3 ?8 {: |" S    }( o' v9 R7 f9 W& h# o

  H. v6 k0 p& P2 G. U" W2 n( u    /* 报告通信结果*/
  K3 N6 ?! e; ]- }    if(upp_error_count != 0). \. e3 g) ], ]9 B/ [
        UARTprintf( "upp_error_count=%d\n",upp_error_count);$ Y: c4 e$ q% \2 @5 V
    else8 x8 `3 z  b; D! N: r! l
        UARTPuts("uPP transfers complete!\n",-2);
* ^4 m+ H0 A! f- Y; S( ~6 E4 X
* {% X* T0 d$ X6 z2 c    UARTPuts("Do you want to print all the data?(y/n)   ",-2);. a$ n4 T+ x) g+ W5 I! p6 t- S8 C
    UARTGets(ch,2);
+ u6 ]. y; I, U- A7 C  @    UARTPuts("\n", -2);
* o/ B, h" G; ^' x- C6 b; P& T* R
. g8 a7 l' {4 I0 x- k9 F    if(ch[0] == 'y')8 |( g" j( f0 v$ P; d8 I  [" o
    {; f% i- Y# I* b- Y! i
        /*打印全部读到的数据*/
; V' s7 V8 ?5 q8 f+ n7 q  p        for(i=0; i<upp_frame_size; )
$ f. D* r$ f. X1 k* _        {3 z2 W) C5 Y5 O$ n( U
            for(j=0; j<5; j++)9 r" j; Y3 s' c# h, u- `
            {8 {- |5 r0 I6 A3 M+ c, h
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
6 U1 Y) h& a2 f                i++;
9 b8 C7 c" T9 d3 t                //if(i >= 4096); p% p  e  q2 ~$ ^- t+ \+ M
                //    break;
1 J) A7 F: s( K' @- C! N: F7 t6 v
9 G( H2 h. ^  x# U  t) h6 {            }
- t2 \7 Y2 p9 y$ G) e4 Y2 p# Q            UARTPuts("\n",-2);5 \" p8 Q( V7 v
        }4 h( H+ y! B- r) F
    }
1 Q1 H8 T( W8 o0 L; f( R! k7 q
  _* X. A5 r, ^3 k}
9 F  ?, C1 j5 k* p8 F

3 [( f: K+ F" q/ _9 I1 M4 ]
7 i6 r+ @3 A  g- u' Q  b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
- w. `; f- @/ S* F. N
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 06:34 , Processed in 0.039826 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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