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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
4 i) u  b" ?1 X( R1 A1 I9 d- _5 e
Void UPP_TASK(Void)( `# C' s( v' r5 a- S5 k
{6 y& n# U# w7 c
* h, g' R0 V, J2 _
    int i,j,k,target_int_count=2;
: g- R5 v2 i8 [/ L& N    char ch[2];. |5 J+ f. q6 `, X

8 l8 X7 D% X4 k: A6 E+ u
: w% V$ x8 F4 Z2 i! ~& s0 f/ u8 X
# x! C: u, j; R' \& Y# r7 A    upp_interrupt_count  = 0;0 F5 F, X* |% p  }7 P. U
    upp_error_count = 0;
! b% w; U' }8 _% S2 b8 I0 _# e  h+ ?" x; _; h/ N3 i
    UARTPuts("\tResetting uPP buffers...\r\n",-2);0 K! h. T" f1 n' v2 g1 w* p
    // Initialize data buffers' ^; l3 }$ c4 X+ q) T
    for (i = 0; i < upp_frame_size; i++)1 C/ T2 W6 Y7 e6 R
    {8 w/ i' P) z# i2 v
       upp_buffer_b =i;
, q9 L% ^- u2 M: j/ T. @: G       upp_buffer_a = 0xDEAD;- G  }- O9 [% b% O
    }
9 D! V) d/ U, }" _1 h/ Q$ k/ [+ @$ e6 i
    //for(i=0;i<1024;i++)
8 n' n  h3 h: r0 n. \& V7 r    //    temp=0;! }" q+ H4 i; n: T
* T- {* t- R2 I6 Y
    //UPPReset();- f5 x  G+ x) M) S+ \( Y
    /*启动UPP DMA传输*/4 A: M, L* x1 q3 @6 I$ H
    UARTPuts("upp_prog_dma_i\n",-2);) E1 S) G, `8 N' b% L4 ~! w* i5 e
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;5 w: @+ V5 w& L& d3 C1 [7 I
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);5 R2 n  _/ x2 a( ^5 X( y6 e
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% k! k: p% X; f' z1 v" ~# j9 C! ~+ w0 [5 u$ y
    UARTPuts("upp_prog_dma_i\n",-2);
* J9 r7 u/ N0 @$ I$ L    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;! x& n  l% _3 p4 Z; W& E
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
& S. Q& G' e, X4 S7 }; H0 K    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);' b) ^- `, @5 `/ b+ k+ d
! S8 Y% I0 X* d, `4 @7 y# x# Y
    /*等待UPP传输完毕*/8 ~* m3 k! U  t) b
    //i=0;
9 e% n5 H% v- ?7 N' f    //j=0;. l3 _( c9 U6 O3 a4 |
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
! P7 v7 J& [' e% t5 {# l    {! s' ]3 q4 F6 T% Z, o
        /*  测试UPP传输的同时操作普通DDR数据
; D/ i" v+ W6 F8 N& k# v" @, E5 N        temp=i;7 @8 f! T& M; C. x4 {! ~
        i++;
8 M$ c2 j3 ~/ T$ v8 ~        if(i==1024)# Z/ ^7 R# `, c
        {% Q6 m" c/ L3 O- L9 D& I& C
            i=0;
2 \9 h4 {- H8 e; W+ w- g  l/ N            j++;
9 e% |( n$ Z6 L, V1 C! i0 x+ N+ J5 B3 F5 k        }/ _* n( ]& K# S8 }
        */
2 Y% F1 U& Y/ `. l* V' Z
+ z  y% ]6 {3 Q/ @2 r% r7 P       asm(" nop");
# l* Y+ s6 R2 Q  g4 d+ f4 x' _
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
3 i  w  ^8 K# s, Z2 d9 _    }! G: O( _- v" @* v" d# o7 K* f3 w
( V/ \2 W  ]6 y" v
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
* W# j& {8 W7 ~    //UARTprintf( "i=%d\n",i);$ N  d* X; r  n8 T& q; D& v. f
    //UARTprintf( "j=%d\n",j);/ @& f, J/ x$ Y! n% b
    UARTPuts("Data mismatch in buffers.\n",-2);8 b# `! n5 b7 L9 E- S
    if (upp_interrupt_count == 2 && upp_error_count == 0)
4 K) G7 i+ ]  @: W; P    {
6 @( |% m) D# i/ z; _2 }( [        for (i = 0; i<upp_frame_size; i++). l$ l* s! S- {" _8 A
        {6 h) N7 h' H+ Z5 z: V9 \( }
            if (upp_buffer_a != upp_buffer_b)
' g9 s8 y2 i1 g6 r            {6 _( y4 [! s; Y) D$ ]  T
                upp_error_count++;- [/ F2 f8 j8 @; Q0 ~
            }+ y- e7 |  b# A2 p8 P5 T' v3 i1 F
        }
: J6 a2 H! p/ M! g& e8 B/ {  V    }
- r; H/ T) p8 v
( h8 h$ E# S* [  s# q& E* ~    /* 报告通信结果*/
3 y7 \  {! H, h- u- E, U    if(upp_error_count != 0)
1 p0 M: ]+ C3 ?0 v# ]        UARTprintf( "upp_error_count=%d\n",upp_error_count);
- M7 b3 c  E$ R( u. }' L    else7 m9 r* l9 t2 v% P4 C9 [
        UARTPuts("uPP transfers complete!\n",-2);
) [8 L' Z8 K- L
2 Q- p7 K1 ?* R  t8 l    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
; P" r) P- }3 f! N# N    UARTGets(ch,2);
. T! }% U( ]6 `2 U# o1 F: [  L    UARTPuts("\n", -2);# c( L  H4 t3 N; P7 b9 B

5 ^# F* X! U7 H& k. ~- j2 t    if(ch[0] == 'y')
/ ~4 u% A* H7 m) q' E    {# o1 S' ~. f" R
        /*打印全部读到的数据*/% |( N& a7 ~1 }: e1 {# k: O
        for(i=0; i<upp_frame_size; )
! B& _) l6 L7 |8 S        {- ^: i( |6 M" i* G
            for(j=0; j<5; j++)) k' k  |0 Q6 p( {/ n7 l
            {
# a: Q+ b& o8 e8 y0 k. M7 A/ f% J& Z                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
7 x1 b3 v% K1 X0 a                i++;' Q. }; _3 _6 [1 X2 E/ {
                //if(i >= 4096)- W3 W1 B( K- a8 O- C5 p. L. u+ l
                //    break;% g* t% a7 m7 c$ _4 E; y+ K
9 A( D2 d4 `4 c9 i0 e  V& N3 X# O
            }
" v4 p7 a: t. O% Z/ V9 t& g            UARTPuts("\n",-2);4 x( F/ s9 v) @/ H  A. K9 n) S
        }
: n3 G9 ^2 ~% K, Z; u- U    }
. P+ {6 A7 P( O* g" o- l* k$ e: i# d8 I0 w/ A  T0 }3 m7 j
}

4 R' V, }% D8 O0 p5 D' E( Y

$ u8 g( U& M4 r( F) m, x5 H$ D7 u$ p
1 r  e2 J2 h# f( G* m8 Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。7 l. }( ^$ ?9 B8 S+ a$ M+ A; U
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-22 20:38 , Processed in 0.040711 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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