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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?& j3 S$ i+ b* Q! E# C. @' V$ |
Void UPP_TASK(Void)2 I: h8 [. X% ^: J2 h7 n! [9 \. C' _
{' P0 p4 B0 |4 \
. U( l( |8 ^. U6 J4 A
    int i,j,k,target_int_count=2;8 n  ?0 S' G! e$ O4 C
    char ch[2];7 f, K; K3 D2 \) A2 l7 x
1 P$ g$ }7 l# H# C5 i
8 E8 ^5 W: u" M% Y' _# K4 Y
# O* c6 I! }3 d  V" D
    upp_interrupt_count  = 0;
3 Y1 M! O* r9 x0 k& ?& k/ p# t    upp_error_count = 0;: A2 O2 S9 N- T" M- ~6 z
' Z0 b6 Y. l% [
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
1 T& Q0 v4 J( _; x    // Initialize data buffers+ V! P( Y$ t7 {8 q/ b+ ~
    for (i = 0; i < upp_frame_size; i++)! r* X" b+ Y8 R1 o
    {6 \) {# @' G' t8 q  m
       upp_buffer_b =i;
5 C- @3 |5 t4 p: o6 F$ e1 _       upp_buffer_a = 0xDEAD;8 Y( j7 [! r/ [! u9 f% i
    }) N, E) k7 h' ~! i

& M/ h; Z1 }. `  c    //for(i=0;i<1024;i++)3 A7 X; U: I8 q1 @! p
    //    temp=0;
8 {+ N6 `3 D; Q$ {) B! J
0 f8 j5 j" W$ W$ t2 |" u# P: V" K    //UPPReset();
+ B* j* |3 O& d2 n+ E& k    /*启动UPP DMA传输*/
% e2 U  ^- }+ U8 j2 m3 x    UARTPuts("upp_prog_dma_i\n",-2);0 U$ Q, f4 n, I/ w3 C
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;& g* N1 u7 g! E  q" q% _
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* t& G" {; c1 h: L$ d. S0 W- j6 @    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
) I6 n0 F) h" F" q/ A% A
4 T% ?( z1 d) k( i    UARTPuts("upp_prog_dma_i\n",-2);8 M7 I% c7 _2 G
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;" Q! j) j: V6 q( ]7 I
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);  v5 t8 d! m1 o. f4 @
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
5 Z) J0 _4 J; F6 F$ ~! ~
/ w5 ?5 d- T' h) [- o2 {  w    /*等待UPP传输完毕*/4 X' T: x3 u% b. @
    //i=0;
9 J5 N, c0 C! y. U    //j=0;
9 V5 b3 s. D# R. s    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
9 R. U3 }5 w' ]3 p, f* R/ B    {
. R" f, @; }' E  Y; v0 u  Z        /*  测试UPP传输的同时操作普通DDR数据
+ G6 n2 J: @/ }3 V        temp=i;& G' K, P3 S9 z! s6 V  @
        i++;0 j0 {& E$ U% z! a
        if(i==1024)9 P- Z# E5 a! O& A
        {
# m" f- i  Z. V5 e            i=0;( i- H1 m; U: i( O( }  x& g) c0 o
            j++;
& i! E) P. ]8 M        }
6 _; X6 T2 i2 Q" C$ t. _        */
- F( y6 g. ?. Q* p8 J3 y7 O0 f1 y
+ R( r$ y' d2 S0 V' z3 i0 m       asm(" nop");
* u' r$ D# J9 |9 @- Z4 X
+ W1 X: g) o, K2 _$ ]       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
1 X9 ]; S' r, g, x2 Z$ O    }
2 I  {7 A! Q# S9 @
4 R0 Z# @! E" b5 }    /*检查UPP传输的数据是否正确 (loopback modes only)*/
' G9 E. Q$ V/ y6 n    //UARTprintf( "i=%d\n",i);) g/ A6 [- ]4 q
    //UARTprintf( "j=%d\n",j);& _) V/ M( I& d" {6 ]# E3 U9 u
    UARTPuts("Data mismatch in buffers.\n",-2);: V, O& M, U5 F6 p5 @
    if (upp_interrupt_count == 2 && upp_error_count == 0)
$ @8 l. R) }! [8 i6 L2 U1 M. q: i    {
- V$ Z2 N: c% X9 s- W4 H( @( u        for (i = 0; i<upp_frame_size; i++)
7 v: {: }% m5 O) n/ `1 f        {
; f5 m$ T4 o& I6 ?$ m$ H1 f+ K            if (upp_buffer_a != upp_buffer_b)
0 E# f% }* y( t6 J, f- ^            {6 r! i) U6 B) d. Y) J
                upp_error_count++;$ }# x9 F0 ]" [1 @& Y( U7 @8 Q
            }& n, ~( Y" [( @5 |1 x4 z
        }
0 u) o( i5 [, o0 H3 G$ ~* Y( _    }7 D1 w* U# M2 o" T: z
5 v; t+ m: r  g3 D8 V
    /* 报告通信结果*/
# C( b$ p4 i3 h8 X4 b! ]' j+ D" j    if(upp_error_count != 0)7 R( \5 b) {9 {0 f: P! @
        UARTprintf( "upp_error_count=%d\n",upp_error_count);- m1 `0 ^6 k8 [6 @2 D
    else( a/ b! m( d+ b
        UARTPuts("uPP transfers complete!\n",-2);
! p$ y5 v8 w* D, _' C- U/ G' C/ _: L1 x
" m! C4 D5 U* W0 S    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
) M" i. l' T, f: e# v! K7 Q  {    UARTGets(ch,2);% r! Q% D, Y2 P% d5 c1 M0 l. d  k% `! W
    UARTPuts("\n", -2);6 Z( j% t- _: N7 S+ T, ^
+ `  P* [2 }/ r6 M  o
    if(ch[0] == 'y')
' J% R3 w2 M. }# w    {+ _0 X, f% F/ X8 E; l" ]9 Z: I' {
        /*打印全部读到的数据*/
- ~7 }! S5 g& _3 _; }" y7 A        for(i=0; i<upp_frame_size; )
  a" [0 d# K: J, e; _5 D8 Z        {8 z& L4 ^2 ]7 f. B6 G. q
            for(j=0; j<5; j++)
: C( p$ L  s0 M            {2 `: P7 o0 K4 w! V$ {% Q
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
7 q% s$ v" H: v; U$ j                i++;2 C6 Y4 a4 w' @; q- J
                //if(i >= 4096): s2 s+ G! M; L4 r
                //    break;
' D6 R) l* X+ X/ I, `# D
- S, m! T* l4 }            }
) D% ]5 m# W. g( i            UARTPuts("\n",-2);
5 S) h  Q1 P! y$ q        }
% K" _% h( Q4 ]( V9 h3 E* M    }' e" m4 j, g0 |+ b
- d% L6 z4 U* _9 z
}
4 y: k% \# X1 K* N5 R. }
) I  M8 \: J. k4 k$ n

( b) v: e6 b) i8 s9 v, v- q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。1 H% o! {7 C  {. f+ `
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。0 K" L6 s' m* h( {" ?1 I
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 18:06 , Processed in 0.038800 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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