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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
6 b3 }; b# q. |. J) S2 ~, `: q. k  [
Void UPP_TASK(Void)
9 `! ^6 F: w+ Y# m/ O4 O& f{
0 t2 \. w4 X5 c* F5 |' X1 @7 y7 W% ]) b' w, J% O
    int i,j,k,target_int_count=2;
3 N6 U% g& }; j/ }5 C    char ch[2];3 u/ }+ n2 d& E7 g1 N/ G, g1 A

* d8 g) @. S* J# @+ ^8 E% B8 c
" {, f7 N4 z; Y! v7 d& [; a# L5 u1 u- I5 E. h; j+ j) p
    upp_interrupt_count  = 0;: ~( m0 ]; k' u+ x4 K
    upp_error_count = 0;
0 r0 Q# V1 V7 W! b: T7 E
$ M' q3 h" r3 o; r4 S    UARTPuts("\tResetting uPP buffers...\r\n",-2);, v; D9 @7 F: h2 a
    // Initialize data buffers* u3 V) ?) T) D; l) p
    for (i = 0; i < upp_frame_size; i++)3 x1 a$ }, n% q6 Z: }* `
    {
/ |3 o2 O9 Q9 z) d' j& {5 A; G       upp_buffer_b =i;
: ~# G: C5 g2 Z  w$ S       upp_buffer_a = 0xDEAD;, |8 @3 Y6 Q( O
    }) ^. D, P/ J% }2 M: |$ m

8 E( c$ h6 N  _. |    //for(i=0;i<1024;i++)
+ s/ P. M- q0 V3 V    //    temp=0;
+ C! R& {% R6 M* m! @0 d  ?$ _- W( S
    //UPPReset();" l' \  H4 w$ W' \* d( R
    /*启动UPP DMA传输*/' U; ?" q5 M7 w' \# c: ]- {* J/ B4 c
    UARTPuts("upp_prog_dma_i\n",-2);
1 u/ S; V8 y% w5 p9 c" O    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;- U0 b3 U. s6 o* T
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
' L* A5 d4 i0 @  A  s    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% s/ ^! g2 z$ @7 y% q8 z% {6 W& Z$ k2 h" i9 v3 c
    UARTPuts("upp_prog_dma_i\n",-2);7 _2 ?3 H) Y9 d# L/ ]
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
4 j8 {; ?. b3 M1 ]+ |7 i+ p    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
1 V4 r* l& U5 |' h1 _    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
, G7 l" T0 I1 N8 _1 k+ x8 G5 B0 s; M4 M' O8 ], U. }% C) d1 S( q
    /*等待UPP传输完毕*/
6 ~6 H1 g6 f" g. ^    //i=0;  L$ f* a" D6 j* k/ `8 r
    //j=0;# j3 ]3 e8 d7 l7 P; O2 k# q3 X
    while (upp_interrupt_count < target_int_count && upp_error_count == 0): e* k: {0 E. W, B! ?9 _
    {
) k6 F" r, a2 ]        /*  测试UPP传输的同时操作普通DDR数据
/ r; K- E: |5 p) u( A        temp=i;
. [7 q2 h! \- V/ D# t        i++;
  e  L) A7 O& M7 `# x        if(i==1024)
0 }# R7 K' X, F+ f        {
+ v; c) Y! T0 Z0 q            i=0;$ |/ @/ [, L8 C( w( P1 o# u
            j++;
6 c# l& v: @7 `$ s        }/ U0 V2 ]8 H: Q2 Q7 @: @$ S+ H
        */
8 ^8 b" \# I- v) E" E. }. k2 A# I, H: G1 C, b
       asm(" nop");: Q+ O  X7 o3 W8 m" T; M& V
# O$ H" \- l6 }! I: s
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
( E. l. C% X: H    }# r( H* B) N8 X, \' Q' z

9 c% U' Z6 r2 b9 O* i    /*检查UPP传输的数据是否正确 (loopback modes only)*/
" c+ O# Q, |& K7 N    //UARTprintf( "i=%d\n",i);7 {4 b# w7 |  f+ @- w  R
    //UARTprintf( "j=%d\n",j);
1 S8 G) C+ I' P! w4 H; s# m& [  z  \    UARTPuts("Data mismatch in buffers.\n",-2);( t7 Y5 d# T6 R* s( R: H7 K4 g
    if (upp_interrupt_count == 2 && upp_error_count == 0)$ Q: Q" f  A$ n1 J7 W
    {% m$ g8 m* o7 x8 d, D
        for (i = 0; i<upp_frame_size; i++)
. i$ H* C: |1 H; R6 q$ C        {
% W$ L" L& g. q" A% l5 H            if (upp_buffer_a != upp_buffer_b)
/ u  z. S/ i+ ?/ M            {/ m7 E- C' ~6 Y7 e5 e- L0 n
                upp_error_count++;4 Y# _* N2 N: p& Y5 E; u
            }
! e) _" Z% o! [! R        }4 S" f1 ~) w' Q
    }+ t5 u4 N5 e) |- S# E

% \' M7 `; b& u3 k: d2 [    /* 报告通信结果*/
1 F  D# H6 [9 T( ^, l) t8 z    if(upp_error_count != 0)) x. o4 t4 a) n
        UARTprintf( "upp_error_count=%d\n",upp_error_count);/ W% n# g( _5 g
    else* P- B7 R9 n- y. |7 D
        UARTPuts("uPP transfers complete!\n",-2);7 n8 k: l: P! R

2 r$ A9 p6 y( \8 y    UARTPuts("Do you want to print all the data?(y/n)   ",-2);5 [6 a* |' R; s
    UARTGets(ch,2);/ u- A' v6 l' F- H$ r" a
    UARTPuts("\n", -2);4 V& |% R: O  M: A# s$ k  Y% U; n

, ]  o+ T/ Z" Y% c( Y# |6 u    if(ch[0] == 'y')
9 ?+ I7 A* ?) C7 p    {7 _  }  x% C0 M; s2 v
        /*打印全部读到的数据*/
4 w& i- E) t4 Q        for(i=0; i<upp_frame_size; )
; v; s  k+ W4 N        {0 e. G. o" Z! l# t) H
            for(j=0; j<5; j++)6 e6 G8 {, t5 G+ G5 }
            {
7 Q* V3 E. n, [9 D6 C                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);3 |2 f1 ?, |! Q  {
                i++;
4 k0 i  ]  p2 i8 a                //if(i >= 4096)6 ^2 H! W  t, A
                //    break;5 i' j6 _# g- V* t4 C/ a5 m/ L

) U; ]: n% \+ O( E* q8 T            }
/ k  u7 e" x. l, O# I            UARTPuts("\n",-2);
  o9 e- @& m! J  J6 k        }7 M4 e4 ?9 {- G( d; b8 q
    }
# p, z8 o. I9 d; {1 g$ n% m1 ]
: i" g) U# ~& R}

. I7 X) O3 ~& b
' _* D# h+ `! X- d/ G) b$ \& E' \
( J7 K+ G5 h, F8 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。# v6 U+ W) y1 d5 S4 n! A! y
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-15 20:02 , Processed in 0.043463 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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