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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
1 j& S+ t# }3 ^; o) Z1 d
Void UPP_TASK(Void)& r1 X9 F/ c/ P9 T6 c  w# q/ g
{
' b/ m6 j- h: _) W# I, X5 U# L( i( M5 d4 ?* [3 e
    int i,j,k,target_int_count=2;/ n1 P- v, G/ s4 V' n- D. c/ Y
    char ch[2];
9 ~( e* v& ~8 \8 g& r
7 t3 |: A5 Y. S6 v* V' p! ]& l- C% R3 ^( K* q/ @( ?. _

/ @. v2 F$ z4 U0 |0 a! Y4 ~    upp_interrupt_count  = 0;7 p; J  Z/ X3 Y
    upp_error_count = 0;/ w% E0 k  U6 O4 W+ A' s+ _; R! v
2 a! M7 W$ E$ q8 r1 A( L3 ?
    UARTPuts("\tResetting uPP buffers...\r\n",-2);# O. L, O4 w. }! t: U
    // Initialize data buffers2 l/ m& n. S1 H; `
    for (i = 0; i < upp_frame_size; i++)+ D9 J5 D4 E' p( l  g+ E
    {% s# _; O8 a, f0 V# F: I
       upp_buffer_b =i;
5 i, U- p0 \0 e& Z! ~/ [       upp_buffer_a = 0xDEAD;
5 f1 |. D- H2 }6 |: V    }+ P: c/ t' z. h' d0 L  q' W

. _3 c0 S: k8 G    //for(i=0;i<1024;i++)
8 n" |  @" F% h8 `1 L, @3 o    //    temp=0;
4 V, v1 I* w  L) i" }. c' k+ @0 F, n" J: `$ r& r
    //UPPReset();/ B* _, I# z5 O* d- g/ @3 }
    /*启动UPP DMA传输*/
' Z7 j5 k, G1 x    UARTPuts("upp_prog_dma_i\n",-2);% Z3 O% ?* o6 M
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
  W$ I3 P) d1 T: L    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);# G$ ?9 _9 F( G4 _* j$ |# `" F
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
. S! K3 j" A* T/ N/ A6 W; q. r' Q5 Q5 K
    UARTPuts("upp_prog_dma_i\n",-2);
" b2 z; l3 O; n3 }6 ~    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
0 }* G0 h/ c9 i& w# `) N* R    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
& d8 u* \3 |5 o/ k5 y* t9 f! D: _    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);% x2 g, Z  Y9 {. O2 q4 [; @

& m  {5 @, i, c3 d2 J    /*等待UPP传输完毕*// o7 B) G" R8 X2 j. X0 m3 L
    //i=0;: z6 S7 t# h5 W  R' n) c( Q2 K
    //j=0;
( {: a$ F1 E8 ~9 A6 n/ C    while (upp_interrupt_count < target_int_count && upp_error_count == 0)/ h4 B; h3 ?! T; h6 F" s: g& a: b
    {2 `/ x( j" k( F9 l! S
        /*  测试UPP传输的同时操作普通DDR数据
& G9 G5 I7 M9 d        temp=i;
; X& I; K0 n0 ~5 x- f% B0 X5 p        i++;3 T' U/ n( O3 F$ _; I# ]. G" ~
        if(i==1024)( |1 P  K! w# p* V9 c$ g7 Z
        {
- `3 V" T- Y9 t% ?2 j" @            i=0;
8 c) Y8 |! G! o9 u! q+ }3 C            j++;
- M2 }6 E* K- b) ~& M, Z* H        }
6 i" a! D  y$ f8 F9 S3 H+ h        */, F* [7 m& u$ S( P

6 d1 ^1 l8 ~+ g2 x9 D       asm(" nop");
1 Y% K6 {' i, {: F! u8 Q/ R5 _+ i  h, o5 `' T( M
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
7 I" H0 w3 w' ~! E+ E; {( j0 }    }) P+ Y$ @& R6 x# [7 O0 c( T
; |4 n4 U9 e; T
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
% I  T8 I3 x2 Q& K. y4 U' ~* I    //UARTprintf( "i=%d\n",i);) J6 s/ [  W- I4 B+ F0 t
    //UARTprintf( "j=%d\n",j);4 b: w5 ~: K7 T, ~
    UARTPuts("Data mismatch in buffers.\n",-2);2 v0 C4 q* ^; ]: `. ?. C
    if (upp_interrupt_count == 2 && upp_error_count == 0)
. M- Q0 [2 y# i' g* ^    {( K3 m! N+ M/ c& c5 R6 Z1 d
        for (i = 0; i<upp_frame_size; i++), \% o8 J, Z; ]6 x: K6 R
        {' |8 o; R- L+ S5 S
            if (upp_buffer_a != upp_buffer_b)
* S$ N, {6 _+ @- t/ r( j            {8 S' G9 T$ a4 Q# K( K
                upp_error_count++;/ m: Y5 ~* \& m% S2 s9 b  p
            }$ b8 s$ h8 l6 M* {0 ^2 ~/ T( B1 f
        }9 q$ S7 @" e4 |2 j" V  ]
    }
3 R/ T8 t9 e7 z& P0 J1 q3 p' J2 r/ [- q3 M( v' l  K, _1 P% @
    /* 报告通信结果*/
! z% V9 X- g3 g; z    if(upp_error_count != 0)" K$ P* ^: T& i, F+ n4 J7 w7 G
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
8 W0 q& ^1 E8 |% g, C. |3 }    else: l& K! S/ ?# T
        UARTPuts("uPP transfers complete!\n",-2);
$ d  L! A" ?0 s+ i1 J! e7 w' h3 Y/ Z  s/ v' m3 b$ m
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
0 N( F9 e- @. c& g6 q    UARTGets(ch,2);
! ?8 v3 L8 f% s5 ]( s  T    UARTPuts("\n", -2);% G4 @+ V7 G* x8 c

4 j0 B/ r: H9 N+ t3 |& H) p    if(ch[0] == 'y')
& H9 c/ E: n3 _- i  c    {! }1 L% L3 W/ E% h9 C& P% y) {
        /*打印全部读到的数据*/
' F( R5 p1 T. h2 V+ b1 N+ {        for(i=0; i<upp_frame_size; )2 @9 S! G+ j5 J9 [# @
        {" {( p, L3 y9 r: c8 o* z: m5 J$ l
            for(j=0; j<5; j++)' m  O8 m* y4 ~8 T! t& V5 w
            {) g% S8 M6 @2 }7 _
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
- M" J# h/ N% }. z                i++;! L2 B3 h0 K9 K2 N; r
                //if(i >= 4096)" J& N2 M" o! Z9 M
                //    break;4 S2 E! M. M/ ?# Z& k7 p- d! ^
: J  h1 p. H. j9 U
            }! F! Q% f& Z6 Q! c; d0 R6 [
            UARTPuts("\n",-2);' M# y' {8 g' y( I& S
        }& m9 X7 k0 l/ E% ~8 N
    }3 ]9 D; d, A1 r  b5 V

, b' o: X+ n" h  |" Y$ S+ M+ y" G}
4 y0 V8 [8 c: ]: }
' e) k. N( ~5 l

1 e6 r: g* m: l# _0 |4 b% c* g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。2 t8 s/ g  W2 m" k9 ]  X9 x3 R
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 10:30 , Processed in 0.037786 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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