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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?/ `5 [% k) Y9 c' h4 v
Void UPP_TASK(Void)
7 G3 ^: C' J$ M  B{
2 K8 G2 ]8 P7 H2 p* o' P) u+ A# G. {' G2 q
    int i,j,k,target_int_count=2;. k! |: Q! V5 c: W* g
    char ch[2];
$ h2 x6 [1 Q" l6 C
' ?) W( ]) O9 O  m+ [4 b  b5 F
7 g$ {. Y  Q0 o! M6 J' F4 Y
  ?1 {0 c  u5 {) j- U    upp_interrupt_count  = 0;- s9 w: ~7 x# \- }
    upp_error_count = 0;
$ }5 Z7 H3 B, _* Z0 ]+ k/ P, G) t1 A0 V
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
5 v& @( O: Y. p6 W    // Initialize data buffers' {! d" G6 n/ W: }" N
    for (i = 0; i < upp_frame_size; i++)
' c; `/ }+ O( R    {
6 p- ~$ r- s+ {; F4 U       upp_buffer_b =i;6 }( }0 f; A  R- a' |
       upp_buffer_a = 0xDEAD;
- N# o% W& K2 o" u; K    }5 J# C, e  }  r+ y: [3 G0 `& t

+ `! M& @0 x4 X+ l) M. i    //for(i=0;i<1024;i++)0 B# |6 K. {) l% m- J4 x
    //    temp=0;' Y' G2 ~* C3 \! M! R
$ |* x6 I1 ]8 F# U9 b( K
    //UPPReset();6 o" j1 C! i9 r) W1 b+ n9 v6 t; v
    /*启动UPP DMA传输*/7 w) c" }( l  w) U1 w( o# H
    UARTPuts("upp_prog_dma_i\n",-2);
0 M) N6 N7 L% F+ p0 }    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
) P& H  K9 [" L- C) @3 D1 e    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);! _6 S- F' o1 U6 c4 L' \
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);# f8 G! I+ Q, {7 A
/ @5 P& h% d+ C  s8 M- I2 U
    UARTPuts("upp_prog_dma_i\n",-2);$ i5 _+ k2 @7 }# b  y+ E  P
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
  Z! U" u: O* L, |) m& ^9 O1 v    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);8 o1 ^4 Z+ K. @
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);( _% _+ D, m1 d3 W
! }* v# D3 Z+ i' d4 r+ `
    /*等待UPP传输完毕*/( ~: ~" O9 h9 i3 Q0 O
    //i=0;: }* B4 S- N1 ?/ _  x( O
    //j=0;
3 j% U: x/ j) T: _" Y    while (upp_interrupt_count < target_int_count && upp_error_count == 0); S& o$ k6 ~! V# @- E. Z* s
    {
1 B/ c: b' I! E+ x  }        /*  测试UPP传输的同时操作普通DDR数据
7 ^9 ?$ r$ F# o% I6 P5 x        temp=i;+ P5 R- N6 ^" r/ y! h' ^. A& P* c
        i++;8 T6 `5 P% l$ Y6 B. g! X
        if(i==1024)
+ u  o& I( C- T        {
* q. f; H! I: {9 v4 a6 b            i=0;- o8 P. z9 X, g" G( }7 R
            j++;9 }* K) _2 c5 e
        }$ \9 B6 ?5 n& H3 m9 z  W
        */
( }  O) m8 Z4 [# M+ Y" E$ T
/ r7 U1 d) _5 U% y       asm(" nop");! p1 w: y2 ~( m

; Z$ \: y) |4 z% [       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
' u& X4 ]6 G1 s% r0 `) a    }$ o! G2 I9 }1 w: W& S) s( G2 }

, ]7 N) f$ }+ w$ m& N    /*检查UPP传输的数据是否正确 (loopback modes only)*/& o1 j0 U8 Z7 ~. \
    //UARTprintf( "i=%d\n",i);
4 F0 u1 @6 G2 H9 x; h$ Z    //UARTprintf( "j=%d\n",j);" f3 [; u& n* J" ~9 l/ v
    UARTPuts("Data mismatch in buffers.\n",-2);8 Q  U2 H9 A4 Y4 ^3 U8 A% A" E( l  \
    if (upp_interrupt_count == 2 && upp_error_count == 0)+ b( g8 ~  P4 n2 V! A% k9 o$ ?# T
    {" y1 x2 A/ |# ~) I: t/ M
        for (i = 0; i<upp_frame_size; i++)
# B/ `  v* P5 t$ }& ^        {
9 i  l6 @4 I7 V% z; w            if (upp_buffer_a != upp_buffer_b)  p' C6 A, s9 j1 F
            {
# x& P) g. S& V                upp_error_count++;5 n6 V: t4 X- s+ f7 G/ ^  e$ i4 p, b
            }
# p- _% F' u3 i% e  d6 p& c) O0 ?        }% {/ U1 R, ?3 q1 ]5 [  i3 o
    }
8 b( t2 X4 ?! w; s4 [4 F
6 \2 v2 N2 W# A5 M5 ^+ c+ x7 a    /* 报告通信结果*/
9 P/ L+ d" u2 U6 i! i    if(upp_error_count != 0)) i+ U8 j' f6 k6 f
        UARTprintf( "upp_error_count=%d\n",upp_error_count);2 Y- i2 v7 ?; T# y- Q5 a
    else
1 @" _- `" Q: o3 w' f; T        UARTPuts("uPP transfers complete!\n",-2);
- y" r4 v( I. r% k4 T; A: T1 Y
2 T8 ^, X" w, r9 U    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
* I" W4 l8 w$ J    UARTGets(ch,2);8 N( g  C; K5 T1 y+ W0 I
    UARTPuts("\n", -2);
5 L& E2 U; _4 _5 e  t; R8 z& }' a2 t. ~9 Q7 W& z6 p/ I. e) _" T
    if(ch[0] == 'y')' O3 ~8 ~" F9 s# q
    {; u1 l! ~: d, {2 `, W0 _
        /*打印全部读到的数据*/
/ e) A) ~( |) C8 P, U* L        for(i=0; i<upp_frame_size; )  m/ G) H+ ~$ H: Q
        {
/ K* L0 Z' p* d( e            for(j=0; j<5; j++)
- U3 s2 }: `! S' C7 |# t" q# v            {9 N; c+ o; Z8 V# ^5 o- Z/ z8 o- R
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);2 B% H( H4 O: O' G" _& @# }( ?  }2 Y
                i++;
3 H9 z5 p1 a* A                //if(i >= 4096)8 l, Q/ r  I! |$ P9 i/ N# @: F  A
                //    break;1 p: ~, k: w2 J2 O6 n( n0 j

2 r5 u& @) z. b  T            }
; [  C# U% b5 V1 w% W% J            UARTPuts("\n",-2);, C, k9 n5 e7 F& r, Y, K* U; }4 n
        }
4 Q7 ~- {2 M4 t    }
3 n* g7 `7 o* Z) I3 }/ t* w; B3 p' B5 m+ j! {, m& u+ R7 X
}
6 c+ y- A/ Y3 [! O8 F

2 S- h3 h8 c! X% o9 C. z* w. `0 E4 H. Y2 x& h7 b6 d* u: _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
. o- N  W" v; s- n
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-17 19:25 , Processed in 0.039717 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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