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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
- K  Y! {7 Z: C8 H& Y
Void UPP_TASK(Void)* o- y2 x8 z( y
{
9 ?2 A& o) _* D- }% C% ~/ F
1 r0 z# M" [- X3 A    int i,j,k,target_int_count=2;
& A' ~# U5 A! {; ?- E& D0 n    char ch[2];4 P9 m/ C: w! D2 z, U( f
" Q/ w$ J4 a8 G5 g6 a9 e. J6 E8 Q' l

, T8 p3 L0 O0 S" s! |: e: Z
+ J. E0 I5 y8 [& k2 G2 Z# ?$ ?" Y+ X    upp_interrupt_count  = 0;, O3 L8 G' |$ T
    upp_error_count = 0;/ z7 A% ^7 Y# n( m
. |& ^! o8 m7 y  w: D: ?8 d" M
    UARTPuts("\tResetting uPP buffers...\r\n",-2);2 S4 r! `0 _2 c, ]3 f- D
    // Initialize data buffers* F/ [- c% V! x( V( l
    for (i = 0; i < upp_frame_size; i++)) `( e5 `" `8 d. z
    {
4 k5 G) q2 w! O. n% X       upp_buffer_b =i;$ b& @1 q8 M, T$ u! j
       upp_buffer_a = 0xDEAD;
* C+ x4 E3 s% G) b' t# y' a& b    }' T: {% Q! ^/ \4 t/ a& w4 N# L

6 x- i/ H# X8 Z    //for(i=0;i<1024;i++)
1 M( P/ @( D/ x% m, a6 V    //    temp=0;9 z! @0 d! Z: i3 ~! |  z  Z$ ?

. M# F8 Z. Z' m) M    //UPPReset();
) W% \! V, h0 o0 R. N    /*启动UPP DMA传输*/: f; P' n) u$ e
    UARTPuts("upp_prog_dma_i\n",-2);
4 \5 d6 I+ v* o8 y/ X, X5 Y6 n    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;$ z" N, v/ K3 i: v  u
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
4 a) S6 R4 F9 |, m- l  M    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);& O& S4 U- A# I0 l! U  h

3 z$ G4 v' G2 \    UARTPuts("upp_prog_dma_i\n",-2);* \5 U6 S  d1 S3 l( U% q" a
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
6 o+ G( o6 k( F0 j' E' a! C6 ~    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);( c$ }" T# X) j( }
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
& O/ y0 L. @; `$ X4 Y2 c1 q) `+ J1 Q  r" w; J( N
    /*等待UPP传输完毕*/
1 _$ A& O" E$ e( P    //i=0;. e: S" S! m' A& D1 J  @
    //j=0;
0 k( c1 ~7 w) e& N: C    while (upp_interrupt_count < target_int_count && upp_error_count == 0)8 z& |, L6 h# ~( Z2 S1 K3 u1 B
    {
/ c9 ?$ d6 H* B. g3 I- _        /*  测试UPP传输的同时操作普通DDR数据0 V9 m! n/ C! y0 _7 b# a/ y
        temp=i;# T* q1 n+ e  R' `7 e# d
        i++;
( b8 `  K& ^4 o- p        if(i==1024)1 B9 T2 Y3 `0 t  u; f1 X: P9 E
        {, @# D5 q+ I) T; H) U4 Y
            i=0;& _) L! C# p" f% |
            j++;
, ~9 j8 w2 `, i' c# Y        }
9 a0 N% s: ?0 ^; l        */
7 T* [0 f% N% Q2 I( p
$ h* ]! R" y0 r+ x5 i5 g       asm(" nop");
1 J* |9 x8 K7 V& l7 U2 M. A$ k6 g$ R0 c5 V3 R
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);) O2 h6 J6 M$ u1 T# q5 i
    }
- Y3 \9 N3 e8 f8 X. I# J
6 b  S9 [3 B9 e$ X- E, i    /*检查UPP传输的数据是否正确 (loopback modes only)*/
) q: d  c" _7 y: L    //UARTprintf( "i=%d\n",i);/ R* x& M8 ^6 e0 Y- c6 V% _, W1 ?( F
    //UARTprintf( "j=%d\n",j);
# j# d  a& K( r0 T    UARTPuts("Data mismatch in buffers.\n",-2);" Z2 y' S! A  `% |- ]. j# w/ b% L
    if (upp_interrupt_count == 2 && upp_error_count == 0)9 j5 A2 W1 O2 f3 d
    {
6 t1 `+ _$ B/ F0 z: {7 D7 A        for (i = 0; i<upp_frame_size; i++)
. {' a5 `, G: I  S        {; K9 E5 d, H" w! s+ g) T/ u  i
            if (upp_buffer_a != upp_buffer_b)
8 @) G! y$ w, r: W; W+ N2 I' y            {" e/ h, K) o8 N3 k! S
                upp_error_count++;
4 j/ K  q! F6 z            }; D1 ^, `( H& W0 L
        }
6 _  X/ N. U+ ^) X    }1 N- a8 O/ L( n5 P. V+ ]9 J4 y
0 l8 q* n/ D' P/ v
    /* 报告通信结果*/: m0 f6 r+ N' D3 j
    if(upp_error_count != 0)
* T/ Q; `( n% z* \, k- o        UARTprintf( "upp_error_count=%d\n",upp_error_count);
5 I" Q' p2 @' S, [6 w" J    else
/ H! o  a6 \" z% ~+ {4 H        UARTPuts("uPP transfers complete!\n",-2);
1 b1 U! T" s9 g% E. l3 S: [/ V+ S6 p1 T6 n$ _" r
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);+ p5 y& r" x8 o3 i) D* ?" m
    UARTGets(ch,2);. a, {* M+ ^% n
    UARTPuts("\n", -2);1 T# n, B- c8 q. m) `- a0 q

+ s) R/ F0 ^, x    if(ch[0] == 'y')
7 n! q, Y/ C) }: Y    {1 H; v( s6 s1 J9 ?: V- O5 @! G
        /*打印全部读到的数据*/! D2 \1 |9 q3 l0 O+ |, E5 t3 W
        for(i=0; i<upp_frame_size; )
3 M% e: E" O) k' X7 T: S        {
1 P( d% N' t% M2 J* r& a; m1 w            for(j=0; j<5; j++)
1 Y" l6 q# J+ C" x/ S4 Z0 S8 z            {
/ M2 J% H/ K) B0 ^4 T                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);( Y6 w- M' e4 F1 \, i. ^
                i++;
- ~3 W3 @6 b, [! E- k% B8 B                //if(i >= 4096). H2 a( O4 l) T" ?- y, h
                //    break;0 ^4 d2 o, d' y0 M- Y6 Q
! ^8 Q1 ~, ]/ V$ {8 |6 u  z: a/ U( x
            }
) |1 @+ z& X+ i7 c4 W% @            UARTPuts("\n",-2);2 y: H! |# _7 K2 r# P1 u
        }3 l' u( F! B( ^+ g5 d4 }
    }
8 H1 y. K% H1 E4 U4 M0 l5 c/ O8 N4 a# D
}
: p$ E3 L* I+ {+ D$ A
+ y. y, k& c# q. y, @2 b- F

& b4 X& ]- N" h1 B# ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。2 {- A: p- x. j+ u8 `- n$ c
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
2 P2 l9 Y& n, M
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-16 13:55 , Processed in 0.042965 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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