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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
( W: }, p6 n: ^2 ^8 L0 D
Void UPP_TASK(Void)7 Q3 i# ^2 L0 w6 ^+ B! r9 u
{+ e! D; K1 ]' x! Q( j2 F

  R# Y# _" i/ ~1 p  U! u    int i,j,k,target_int_count=2;' I' r0 n' Z& `2 h/ R
    char ch[2];* w7 a- @. g9 o4 r. Z2 X: n, e2 P) P1 c
3 ~, Q9 s1 P! g/ a3 v
" u" w$ J6 T( a2 d" c: L

2 A$ u* o/ w+ W5 m# C. g3 l  j    upp_interrupt_count  = 0;8 D  A1 ]; G% E6 v5 |" N
    upp_error_count = 0;0 Z& H) i# J3 E9 e4 q2 O2 B
" {# R7 a2 n+ r5 m
    UARTPuts("\tResetting uPP buffers...\r\n",-2);* G, m! k, I$ @. ^9 ]2 |" \0 v: O. s
    // Initialize data buffers
  f7 y6 M: C2 \- h9 T8 H; m    for (i = 0; i < upp_frame_size; i++)& B. \: B# F1 }7 C/ }& m9 Q
    {
8 d8 U' p/ z% w8 F+ J       upp_buffer_b =i;+ K0 f2 X; U9 ^, X* c: _4 F" O9 f
       upp_buffer_a = 0xDEAD;% z4 J, J; I5 L& v8 W
    }3 s1 }  S* N3 f2 R& t  n2 }
& o$ W( C2 r- a
    //for(i=0;i<1024;i++)
7 h3 v! m3 f1 m# x5 A7 e3 q    //    temp=0;: `9 z# N3 E8 \

: T. c1 w+ i& l) H' {    //UPPReset();- l$ \3 x1 {! p/ j! P- z7 j9 U; c
    /*启动UPP DMA传输*/! w* A8 b8 f# }, j( i
    UARTPuts("upp_prog_dma_i\n",-2);
7 i9 M% m$ [' _' t( R0 b, q    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;7 L# t2 h+ r/ }
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);( @$ C: S8 J1 |+ J
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
+ S! h& d6 G; v# }: a& b/ l$ ?* r6 ?: L" J1 s  D: H
    UARTPuts("upp_prog_dma_i\n",-2);
/ V$ x$ E5 E" L3 n! f1 o    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
' ~. q7 S4 ]- G) o: ]  [$ J2 k! j    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);  `) K  }3 M( T  A2 f
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
1 [& j3 F( o. X& l8 S% A2 P+ Y7 P  c3 _% V9 d" T$ @
    /*等待UPP传输完毕*/
: _6 ^! O$ v1 d$ w. p' a, i1 t    //i=0;' u3 m5 M# f! t8 T) v4 r$ O
    //j=0;) C$ F6 Q* x& r2 H& y4 \
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)7 l( ^) ^$ a0 G
    {" G0 `% }% p8 Z5 Y+ C: @" O
        /*  测试UPP传输的同时操作普通DDR数据
& O7 S, a* E2 k" V  c        temp=i;
. G2 ^. M- l$ {( b9 P        i++;4 ]+ B+ f, d! d" a6 J- r8 q4 Y
        if(i==1024)
1 m, v: g/ r9 n        {
8 z5 R; z2 o/ h; K* @4 F# H4 V5 k            i=0;
4 l) q# x1 ~! B$ v9 }/ ]7 w1 M            j++;
; u  ^; O+ W5 M0 ?1 [        }! f: S3 y$ j$ c& t7 _$ `3 M9 ?
        */
5 D. a/ y$ J! F% F" w% M, c* ^& `- f+ c' m; Q$ }) |
       asm(" nop");
! W; R  V8 a" z6 B$ u6 |. i
2 a1 [7 m5 P  r       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);. Y  s6 D. E% _: C% a. Z7 b
    }9 u* ]; T1 {2 g" \/ U3 g7 N# o& p, H
0 A9 F  \' l% l1 V6 }  @9 \
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
7 j$ W5 O- d6 X8 ?    //UARTprintf( "i=%d\n",i);
4 |9 `* A# }. g0 n* W    //UARTprintf( "j=%d\n",j);7 b5 M4 [) D( y( ]: m
    UARTPuts("Data mismatch in buffers.\n",-2);0 J# f  s+ n  n( W  P
    if (upp_interrupt_count == 2 && upp_error_count == 0)6 W0 M9 [2 d0 ?! N
    {
. i/ D* m3 e4 m$ f+ n! X        for (i = 0; i<upp_frame_size; i++)' T6 R2 y+ R) \
        {1 R% i& |5 R0 }2 @5 f3 ?" \1 |
            if (upp_buffer_a != upp_buffer_b)
/ O* ]* A: W+ o) @2 V" B, y  b            {2 l' U/ K2 E) M! ~1 ]" \
                upp_error_count++;, \2 z* v" |5 j7 ?; G* U
            }
# z% @( P9 i6 k) [( S        }5 S% D9 K( K/ Q, b8 K
    }* v. {; ?7 N" w- u! l: h# \
" t8 W! L/ z. G1 t0 I
    /* 报告通信结果*/; F( o2 K; N& B4 w1 u0 k
    if(upp_error_count != 0)
3 T; `# q* a9 G' \7 ?        UARTprintf( "upp_error_count=%d\n",upp_error_count);3 r9 @, ^! P7 J
    else
+ U8 p, P; u3 {        UARTPuts("uPP transfers complete!\n",-2);( t+ ^9 D' a- {" I, v: p
1 V6 R5 n( ~7 U' u% E
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);$ Z* P! c5 }: b# ~# o5 H
    UARTGets(ch,2);! J; [4 h& B6 k& B8 Z) ^8 \' ^+ g  r
    UARTPuts("\n", -2);
( e9 N" w: P! E' T
% k! E9 S; T2 G, x6 c4 |6 R    if(ch[0] == 'y')1 u5 I2 t$ a8 G+ q( }. e
    {" ?6 v2 S; R9 e3 [6 p
        /*打印全部读到的数据*/
* v1 K) H/ ~( j* g4 U& o        for(i=0; i<upp_frame_size; )  ]* m- _, @5 m  T  {
        {
. h2 @+ s8 k9 j            for(j=0; j<5; j++)
0 Q6 W" e% U/ p& l" h- b# j            {  b; p9 S; T" F" w* M9 Y+ I* c
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
& @1 g  S4 o/ a  s7 F                i++;# c" b; r. ]/ d' A. F) ^$ ~3 j
                //if(i >= 4096)1 R6 j, I3 n4 l5 @9 s
                //    break;! B1 W# T; P2 F2 `% Z& m( x6 i

+ s- q" _/ z, r& y            }3 D+ @# ^( E/ j6 l' D2 h' r
            UARTPuts("\n",-2);0 [" j# G' r; l' m. _2 S% r* Q" G. |3 T
        }/ X1 }4 [6 N+ E, ]
    }
. R" `, U# O5 ~# z  w0 L" o' B8 K# L
}
" f& I  P0 M2 Z6 e6 T
/ u, M& ^9 D: L
' m5 {7 B& o( w9 C  D, C# P* k7 j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。3 }6 a& M5 G. v4 V. d7 ]' P) v& Z
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。6 Q" Z; u+ J, t: S$ S
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 03:26 , Processed in 0.044186 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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