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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?/ f# }' p: D" |" ~  a
Void UPP_TASK(Void)
5 m0 n; e$ C$ E/ ?9 J) ?) t' a8 p7 a{3 M& G6 S5 c9 D- y3 b
% G" x5 G: H- B9 S; O  T$ Y: y) c
    int i,j,k,target_int_count=2;
% W4 n" q8 M; z8 P8 _$ _    char ch[2];
) J$ m7 Q) H# L2 }* `2 O2 M1 N4 P1 i/ K$ k3 i1 h

8 }' f7 K& n& C8 @( ^6 ~' n$ }: c  t
    upp_interrupt_count  = 0;0 |. V, v. V3 J6 p! W3 z. m  n( w9 H
    upp_error_count = 0;
2 I" y$ C2 V1 u: R8 Q0 @
* e$ S: S9 q' q( Z: v: V6 z    UARTPuts("\tResetting uPP buffers...\r\n",-2);
& i3 d& l3 @" D- t6 C( e8 x    // Initialize data buffers
8 o- u8 L: E3 |0 M    for (i = 0; i < upp_frame_size; i++)6 K$ `1 n0 w; E6 p
    {, @1 \) T* }( g5 O" S
       upp_buffer_b =i;# @0 o4 x) P) J
       upp_buffer_a = 0xDEAD;! f4 Z8 h; G8 d: D
    }' `, a8 O0 [2 y7 L2 H
2 G' x% s. S# Q2 q
    //for(i=0;i<1024;i++)$ P. r/ x9 D- n. K! t
    //    temp=0;
/ Y& I- ?7 O9 x2 |" I4 [3 a/ L2 d. j+ L7 S  I. d* S$ q% X1 Z
    //UPPReset();
! E& r6 K5 c. r. j    /*启动UPP DMA传输*/, ~/ V0 K/ G( E& r
    UARTPuts("upp_prog_dma_i\n",-2);5 T& ?+ d/ `6 ?+ q" k
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
- N5 O2 O& [2 F1 y    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
8 Q! f9 m2 V( i& w6 V8 R    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);1 I3 {0 ?' D" Q; b6 G' t7 t2 X: a
& k1 ^7 I  n8 y( G# m3 D
    UARTPuts("upp_prog_dma_i\n",-2);
- Y* ]2 @2 `* ^# \2 h    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;; H& }. [4 p3 Y: H
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);2 u8 O: S* Z6 B  |8 {2 c
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);/ Y6 _2 @2 u  l6 w

4 L: b7 \2 {  o, C    /*等待UPP传输完毕*/
2 ^" a% ~* Y$ B( K+ O/ d& z    //i=0;
4 R; F+ N0 V+ p4 X  t0 C, x    //j=0;( p% b  t( Y% R* N# v4 r
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
- W3 I; F: J2 Z  w    {1 r; a! ~0 w) ^2 e$ t; g0 L5 i
        /*  测试UPP传输的同时操作普通DDR数据
' X3 y+ {0 u6 u# l# Z; \9 O$ g        temp=i;
6 z6 X; `3 w( h7 k2 \8 S        i++;
: r4 x* {/ f! Q) q        if(i==1024)
6 T  {% F, ^( E9 s" Z; i1 G3 U6 x        {; ~- d) H/ Y9 i; Q. l. U" d; M
            i=0;
" g3 H; o3 ?1 ~/ Z4 P            j++;
5 J$ D+ d: y  e- [. P  r        }
# _2 g( Z$ t5 k5 T4 D        */. v% X" w9 B) Q) `: v0 U6 J

8 W& w1 a6 h7 f4 A       asm(" nop");
! q* E# U' s1 ~; ]6 ?( o$ Z0 S. c/ v6 l% H- D- b2 E7 s+ H' M. p
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);6 j/ c* P+ s) Q6 Q
    }9 E, N4 E. P; s3 p! b

0 A/ l7 `) G  z1 M" d" C    /*检查UPP传输的数据是否正确 (loopback modes only)*/* J' P1 _5 D  d5 p3 v+ f4 L  I
    //UARTprintf( "i=%d\n",i);. d) t4 C9 W* v! s9 F, R6 O" n/ G
    //UARTprintf( "j=%d\n",j);
+ K/ z( M* O; ~) n    UARTPuts("Data mismatch in buffers.\n",-2);9 h# H8 ]2 U( w1 [2 e
    if (upp_interrupt_count == 2 && upp_error_count == 0)
- Q+ W1 h5 z, i" k* u* W    {
: ~2 R4 n; a; O/ u- a/ G8 V6 L        for (i = 0; i<upp_frame_size; i++)
. C( x8 |, L" D0 `  a        {5 b+ y0 E4 ~8 C& O) C
            if (upp_buffer_a != upp_buffer_b)
' R4 F* \5 V6 `" ]) u- j            {' m# `" Z- K. d  @9 c
                upp_error_count++;
  N7 ^" D* d, E) A            }" B4 g8 d# P8 i7 u4 n
        }
- n0 ^( j9 {" i9 ?0 x" z$ Z    }
# r* s4 T  D( g9 y
. N0 @$ G5 j4 S    /* 报告通信结果*/
# _" y7 m# b: E    if(upp_error_count != 0)( D, Z( k7 T% D( c5 n/ |. R
        UARTprintf( "upp_error_count=%d\n",upp_error_count);. Y6 t( y& `+ }! j0 f, M
    else
- @; ~' K& T+ f! K) y: G        UARTPuts("uPP transfers complete!\n",-2);( u% [$ l$ B- H3 L

: ?( ^* C. y% O! K3 O    UARTPuts("Do you want to print all the data?(y/n)   ",-2);  u# n6 f7 _) z! L. W
    UARTGets(ch,2);
' P% z$ `- @: h, w4 E2 T    UARTPuts("\n", -2);
/ l5 h+ `) y+ v6 q: i1 @; d  o( X/ A( C6 ?" c$ ]3 n$ S
    if(ch[0] == 'y')
6 i% s, P0 I3 H; m# g    {
5 @' W. W! M+ D' Q  C, x& T        /*打印全部读到的数据*/
6 B6 }& s$ t/ o6 B& B0 v        for(i=0; i<upp_frame_size; )* J" `+ H# I7 [: R7 r. o6 p6 \
        {' W6 H, Z* `. C$ e
            for(j=0; j<5; j++)
/ \+ @8 ^& _6 b: ?2 k% {. C- E1 J# U            {: Y2 b! R  D, I1 @! z
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);1 O) y# k, k% v. c4 L
                i++;
; l1 e/ j, t& B& t                //if(i >= 4096)$ g* A+ A3 K2 W0 @  V# j6 h6 V
                //    break;
5 O4 |) Z- J/ F9 x  E# T8 L* r( N5 p4 @* W  b
            }7 K, x  M3 w( G; B
            UARTPuts("\n",-2);
  U5 X+ Y+ m+ ?4 X        }1 ^6 h. j/ E% {8 J
    }
1 l# j1 B$ g9 N
( @% B& P) ^. n9 k" Y+ u1 k8 [}

/ s' f! L8 r1 T: O  z

5 o0 ]6 e  l6 i& ~, a8 Z, O( T( r- l+ x4 b4 d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。# W' Q; ^4 v4 J# z; Y
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
  i) ]3 Z" n1 Y8 k6 G
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-17 17:39 , Processed in 0.039646 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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