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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
2 p& v6 p' h" ?  j" N
Void UPP_TASK(Void)' Y, c  d) ?/ h" G0 m/ G: Z
{
; ^- \; _0 i6 f; f
$ m: G2 _; V! P2 Z' p& d    int i,j,k,target_int_count=2;
# w0 y4 u2 b/ i# i* n    char ch[2];
5 t5 J& c8 ~8 m& H8 t% s# R4 ^% Y# H5 P+ c9 e
. g' g3 z: K/ u! Y5 U2 M2 m# O
/ J7 o  v! |& m+ m0 X
    upp_interrupt_count  = 0;9 J; ^) e) m4 H( u# J
    upp_error_count = 0;
3 E0 T8 E, ?, @3 |: Y% c6 v3 N, S. M+ o! r# B
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
- O. o' r  B& P) ?) W% [    // Initialize data buffers
1 T3 V% R  A0 C3 [5 M' X  S    for (i = 0; i < upp_frame_size; i++)
4 e# v( h8 {) }& n( r' s    {
4 J+ t4 s2 T: f1 t* @) b! ~       upp_buffer_b =i;
' b" S9 Z3 }2 p$ h' e       upp_buffer_a = 0xDEAD;  C0 z$ Q0 {8 E$ M: h7 c
    }+ e2 v3 g- l1 n$ Q, ^

. G8 W, {8 y9 b: G. ]    //for(i=0;i<1024;i++)
0 R% j3 [& b% `3 b0 ]8 T2 O    //    temp=0;% |; r; x* s# y. t! U' ~
( I  A! _: ]% c
    //UPPReset();
3 e$ `( Y. g( |, `/ Y# [    /*启动UPP DMA传输*/. ?6 c7 e) b6 ?# K( F
    UARTPuts("upp_prog_dma_i\n",-2);6 X0 g2 j1 ?3 F0 ?7 y
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;2 a8 u/ p0 C  g3 }
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);5 W9 S/ s3 a$ K9 N, I4 r$ ?
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);: e! e- ]( p6 B. I2 \

1 [1 j" w2 D9 O7 u    UARTPuts("upp_prog_dma_i\n",-2);
0 \4 L! Z; T' l$ N    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;4 F' Z2 U4 z  K+ L: J
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);: ?( `6 y; K1 G0 ]- B
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
% v$ L: T$ [7 H8 W) x% T( ]+ K' r) g
    /*等待UPP传输完毕*/+ L9 \+ m3 }+ h+ e" T
    //i=0;" u$ `6 O$ [* [" O
    //j=0;& N  G; K' k0 h" J+ I
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)5 w, q0 W3 m8 H( j! y
    {& Z$ W% a1 x) p+ U' |
        /*  测试UPP传输的同时操作普通DDR数据
3 x- G1 ^1 n- b7 j2 u; H* v        temp=i;
& u' E! t9 Q' g' X9 k1 q        i++;
' S1 R7 b0 |# y        if(i==1024)
8 Y: S. i, Q+ W  G  S/ F! R: L        {# k: r7 f& W! D8 p
            i=0;0 R  q0 }6 ]( _3 i
            j++;
* ^# E" U( @5 Y- }1 d        }
( u! m/ g) W  k# ^& N* m' x  G6 J4 M        */1 b( c8 [7 W$ Y& V) }* O

$ e4 }- B# d* L) J6 T  @, {       asm(" nop");! K. n# A3 L% n$ }4 q/ P
3 a3 C4 g" X5 n
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);. j! Q8 j5 K( z, c3 {3 \
    }8 r9 X: N6 D( t9 t+ p, {

- j/ ?6 z) V& l, _' P) s) h    /*检查UPP传输的数据是否正确 (loopback modes only)*/
- a  P- i& k( n& E% x5 g) p$ o% u    //UARTprintf( "i=%d\n",i);
, v; S. ?* ?7 p2 }6 \  Y    //UARTprintf( "j=%d\n",j);% p3 O6 E; Q" \5 k# e! Z
    UARTPuts("Data mismatch in buffers.\n",-2);2 P6 v" W: ~3 x( j0 k
    if (upp_interrupt_count == 2 && upp_error_count == 0)
) S1 L( y, o( {6 |% F* F! I4 e2 s    {
2 Y$ b  f; B1 n& Y: {, V  w        for (i = 0; i<upp_frame_size; i++)) b8 M8 Z7 P7 L4 O
        {7 G( C" O$ s5 B7 i* C7 {9 t7 O
            if (upp_buffer_a != upp_buffer_b)
; `6 M# T% n8 F9 P            {
! {: h( v, f' K/ X6 [                upp_error_count++;
0 u- w6 N/ f# H0 ?7 G+ ~            }
# D+ ]; M+ Z  M% Z        }
7 Z9 j# i1 ]# R" k$ {7 |. [. p8 s    }. o% G. H0 w1 ]$ m* W
  i3 ]* R, o% y5 K
    /* 报告通信结果*/9 r6 q8 f& e0 I$ {
    if(upp_error_count != 0). H5 ~3 _$ p. y. Z" ^2 t- g- H& ~
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
. j/ t2 f; R* }( v0 X    else$ j% d  C( p& b$ K/ J' z6 l* _
        UARTPuts("uPP transfers complete!\n",-2);+ K8 V0 I% ?# J; p

+ ]$ a) d" R0 t- a: }& H    UARTPuts("Do you want to print all the data?(y/n)   ",-2);! E9 j/ O6 B3 u7 j* b
    UARTGets(ch,2);
1 \% y' u  J% c1 r1 w8 A9 G    UARTPuts("\n", -2);
6 Y: G  c6 ^+ E0 B% n$ |7 v3 `/ c) w. q, a- |- k
    if(ch[0] == 'y')
, A1 b0 ~" l1 q% p    {
/ ]; \/ g2 |' \2 S$ _* A        /*打印全部读到的数据*/6 T" `1 P0 g% k4 s, K
        for(i=0; i<upp_frame_size; )
& U" B. c% L  V0 T  |  J        {
! j7 Y* T% ?7 [" X/ C/ W, Z& ~: R  z            for(j=0; j<5; j++)4 }0 I9 ~  v  }+ _7 P, a6 p
            {* l* a6 k2 d: X" H' W$ b7 h( N5 n; B
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);, B/ P6 |/ S. ]5 k- q
                i++;% ~/ a" o. O. h6 _% A" B) \
                //if(i >= 4096)
8 G! m3 }9 k' j, [7 j                //    break;
9 ^$ J) y. L! z# H. ]: a- I+ h. n! X! L5 p
            }
; H) }) s% d+ m' j' P            UARTPuts("\n",-2);0 o/ }7 \5 n! Z& w! Z2 D" b$ _
        }( V% b4 s: ]$ J
    }2 S4 D, i0 V# _5 y7 t
0 Y( w+ @# s0 S
}
- v, Q# B" N8 }7 Z. K' B  {/ |

: ~. L0 u, _9 D/ p/ f+ U7 q7 G9 R1 X. j$ T2 l" y( @: U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
- f2 v0 o: A& K3 @0 k- \4 W3 C* G
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-6 10:14 , Processed in 0.042731 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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