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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
6 Z( c5 N6 C  J) K6 L* l
Void UPP_TASK(Void)
( i! Y# O5 C0 I# Q{
5 h' y6 M) s7 A0 _2 I
5 V0 R2 H1 w. ~    int i,j,k,target_int_count=2;
0 N. V& }2 k7 ^" J4 G7 I    char ch[2];7 `1 x4 X3 U$ Z% G; u/ O  Q
4 A1 E- |) |, d, E- W
) D% l% u! z1 J! N) k
" @- d9 Y$ a( p0 {
    upp_interrupt_count  = 0;
& w2 }, _4 X! E/ ^1 S) i  \    upp_error_count = 0;
9 U2 V5 ^, F( k" A: T1 h+ F7 r4 _* E8 b0 s6 @, ?# V
    UARTPuts("\tResetting uPP buffers...\r\n",-2);' [( E% U" _$ |, P: R
    // Initialize data buffers
5 |$ w; S4 \6 S2 G    for (i = 0; i < upp_frame_size; i++)
6 W& S; r1 Q$ H* `    {
/ m  s( ~* r3 _2 |       upp_buffer_b =i;
. n1 c9 @- Z) P) g. W4 i5 _1 W       upp_buffer_a = 0xDEAD;6 F- d) w! @: G4 X4 z, M
    }9 |& U; s2 o3 w1 b3 R$ B0 E
/ y. _6 C; W2 E  P# p
    //for(i=0;i<1024;i++)
6 {& D0 ^. q7 U3 F0 u    //    temp=0;
2 x, X9 O% Y. u* r1 T4 g- e9 E) u0 V
    //UPPReset();0 l2 i; ~' Z( ~0 B8 u6 l& S: G' [
    /*启动UPP DMA传输*/' q( ^, }* r  [0 X
    UARTPuts("upp_prog_dma_i\n",-2);& _( d# r: t1 w
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
& R5 x( t( w3 S7 E2 z3 c7 d    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* F# o& [0 L* `1 [+ m    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);: p2 [: X! [% {5 w: Y6 j: t$ g

. T) T' f$ a6 e. W# @. H    UARTPuts("upp_prog_dma_i\n",-2);1 R4 Q9 N! |/ R" i9 M- `! h
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
# [5 K9 |- e# K  S1 G    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);# E3 l; |, w) T4 U; q' ]
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
9 t6 \- b, z6 T2 D4 I) k2 N5 p& H. `3 A1 L
    /*等待UPP传输完毕*/* ^( a2 G) \9 Z' y% V3 n
    //i=0;
  \5 j) t0 Z4 A+ T: X. z" V    //j=0;/ U! B0 f/ }$ `% o
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)9 A2 F1 i  b9 x+ S3 i* K" e# \
    {3 \, n1 O# U' I8 O4 b' h% B  R7 t
        /*  测试UPP传输的同时操作普通DDR数据' {4 s- B+ F2 g
        temp=i;
0 V* V" K& D5 f4 R; f        i++;
- }( _# t6 K# M$ u$ Z& u        if(i==1024); W. [6 p+ g0 v( W' r7 Y6 c; J/ m5 F
        {
* Z# ^+ S, d" a, t# [( T! e            i=0;
- H' L' Y7 q8 C  C: L- z! b1 W            j++;& Q0 _8 u5 z. U+ ]/ j
        }8 r. f; z7 P- M" a" w: ^; H6 C" }/ H
        */
. b- U: a- p2 b" l) ^3 @+ T9 u+ H8 `; ?
       asm(" nop");
3 L! ^" z0 U6 m- f( [' q5 X/ u( O  x1 z- L" O
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);. \% k4 f  Q+ q/ L" }
    }
7 U* J  P2 u. G9 `) f5 k( S' T3 Q% z
& G, ?$ I* h1 C# r6 G+ g    /*检查UPP传输的数据是否正确 (loopback modes only)*/1 Z3 D: D, F& a! f* h
    //UARTprintf( "i=%d\n",i);
5 h9 _; ?9 o5 J. W/ w2 N    //UARTprintf( "j=%d\n",j);
1 j/ O" I  G5 u% A( k9 R    UARTPuts("Data mismatch in buffers.\n",-2);% T3 J) V9 ]3 ^' u/ O
    if (upp_interrupt_count == 2 && upp_error_count == 0)1 F& r' n+ ?& u8 ?0 v9 ?
    {
" u" i. Z! t3 y% E/ G) a3 S        for (i = 0; i<upp_frame_size; i++)! a( l( i, Y+ _. W$ r* q7 q- G
        {
9 D/ x# }+ S+ I# P( I            if (upp_buffer_a != upp_buffer_b)
5 s5 p( c* F1 @4 H2 W  T+ y6 k            {
( @* R1 b' n) y8 V. M                upp_error_count++;! ?. ?3 Q+ M! O7 h# c: D$ T" d
            }, P* R1 Z* y2 ^! [/ _: f# p
        }5 `; ~- v6 \; `5 b2 h
    }2 T" Z, k  n0 i+ r

  q/ ~/ t, R4 c2 c    /* 报告通信结果*/
) |: p8 q  i6 k, A/ d& k: G2 P    if(upp_error_count != 0)( @8 b6 m8 `9 Z
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
' c  B% b* @& ^1 x    else
  \4 o6 f. \+ N2 J8 b; R, y        UARTPuts("uPP transfers complete!\n",-2);4 q5 H; Z; Y+ ^8 c6 F4 }, Q/ ?

' S( `' o8 e( u    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
  H" p4 ~/ D: U( E. x0 _    UARTGets(ch,2);
) w2 ]5 B6 g9 o4 n    UARTPuts("\n", -2);6 f( `  f5 U0 l$ x
2 h3 D+ M9 a1 A$ V( |
    if(ch[0] == 'y')1 r0 u# V, f1 q, p9 H9 |
    {
2 v; q5 w1 d3 V. F$ ^3 f. P        /*打印全部读到的数据*/
2 _4 `; [5 f8 `' z9 \( z) N/ G        for(i=0; i<upp_frame_size; )
6 r7 @9 B0 Y3 G% D" x        {
( s6 N/ s9 ^$ B2 D$ e& @7 j            for(j=0; j<5; j++)
; W8 p; d4 q1 F            {7 h3 e* ]) E) E9 I. U% A0 j
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
; j7 u& d5 X# Z' P' u1 y                i++;- t/ [: k9 a9 @4 ~* v* z$ c
                //if(i >= 4096)
- n% f& a' j1 a                //    break;
& t4 a  C' c+ j3 o7 u6 |: }9 ]8 G. U% n& F
            }
5 ?2 Y8 z% O8 j! s; i0 d* K8 D            UARTPuts("\n",-2);
3 \" n5 x1 h1 _7 c3 h  S, u6 {        }3 V* ?0 C- D" s+ s# @7 x
    }6 b, v. E3 e3 [, [+ L* t
) d% x  i; D! i
}

6 h0 |0 E8 L8 d; E
: R: S7 P$ K  ~" n1 G. n& ?$ H! V

2 {! U/ j+ M% O; `, U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。" h* ?! a# U8 F( w2 A) N4 A# h0 R
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
5 _2 Y* k% Y, d
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 01:21 , Processed in 0.044037 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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