upp问题,在SYSBIOS下的应用问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
4 t* }/ c, Z# I) z' z) y
Void UPP_TASK(Void)0 Y3 u2 R: [6 L3 p
{, W) M0 d4 K# T
- E. I" p! \& @9 O
    int i,j,k,target_int_count=2;' Q, m3 t% e1 I1 X/ T4 j: B$ X) ~
    char ch[2];
! P) Z& ]1 U3 E' _" m: r. ~, Z# T/ V$ K# c: m: A
2 ?3 _4 |( v$ ?2 Y9 R: k, l

7 e: q9 J5 P: h9 b  O' `% B    upp_interrupt_count  = 0;4 J- }% a# j' H
    upp_error_count = 0;2 b. P; t2 a6 N: r, e) ?! @1 _

' g" t2 n& \5 J3 C    UARTPuts("\tResetting uPP buffers...\r\n",-2);% {7 Z) `  T0 I
    // Initialize data buffers8 e/ n5 @" ~* ?" T8 |
    for (i = 0; i < upp_frame_size; i++)" @2 |0 k' C- |4 y: R" M, m- q# @
    {/ l. f+ o( H2 ~5 K: {- @
       upp_buffer_b =i;
. O2 J( n( D9 c/ i1 o5 q       upp_buffer_a = 0xDEAD;
" g& W+ t: H2 }/ I- r9 E' T    }( m' Z8 j" R2 k- E3 e4 E

* L! T# z6 {4 [8 F0 d* O( e    //for(i=0;i<1024;i++)
0 W, q2 U. D0 a/ `    //    temp=0;
0 S( ]6 o/ Q# u3 k7 y) g9 z) A" i; H4 k
    //UPPReset();
, {# B& J6 A+ z/ ~; P: g    /*启动UPP DMA传输*/0 S: ~  J) g8 Q' d& _
    UARTPuts("upp_prog_dma_i\n",-2);) t8 Q7 A7 D$ b" Z% I
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;) W! b/ x  l& c# p
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);, p. [7 l( [5 K
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
' m* `8 l! R8 A8 [' I% ?+ v
7 y' L! R. H4 w3 k0 ?4 e2 J    UARTPuts("upp_prog_dma_i\n",-2);4 K9 K% C/ }% v
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
: E+ ~  ]% `6 Z8 y( P    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);: v  i% c. w, l6 `
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);- s5 V6 `) A1 e  O0 b

, P) o( y/ J9 Z$ o* H    /*等待UPP传输完毕*/4 k2 g1 d8 O4 _+ M# f$ J2 K2 t
    //i=0;- n" {, B) Y% Y
    //j=0;
9 L% B4 [  {! Y" \3 ]    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
0 Z, g0 E! y! f) T, P) T6 w& H& Y    {( }- j: r1 x: J/ P  g. l0 c
        /*  测试UPP传输的同时操作普通DDR数据: u4 A( [8 d1 a, K: @6 X
        temp=i;. I* @% i, \8 i# N3 z5 a7 [
        i++;8 K! {' q. s% P( t
        if(i==1024)
& G: M( G6 \' W        {" P+ R  z- m$ P+ a9 P
            i=0;
* e" m) a' d7 x& U            j++;9 S. O' R1 H) _, m0 P! h3 [
        }- H2 K  A9 \9 }5 @; V1 C
        */+ }" [7 J2 p% e3 F# Y
5 b  I, d9 k3 Z; n$ b6 @' R
       asm(" nop");- t5 f4 h! ]6 z2 A3 Q

5 O, Q; u  W+ ]/ J6 ?5 R; U       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);# Y9 w: c' b2 Z+ W
    }' k/ L1 t7 Z3 [9 Z0 u7 O) U
5 k! B, ^! @5 E; g% O9 H- Z, a: z
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
" l+ h4 y. X8 l4 a7 z0 v    //UARTprintf( "i=%d\n",i);# f7 }: k6 H: ~" o+ q) u+ ?9 y
    //UARTprintf( "j=%d\n",j);* J+ `. r7 u4 _' d
    UARTPuts("Data mismatch in buffers.\n",-2);
1 Q  O7 ~) E+ \0 [( N) @: L    if (upp_interrupt_count == 2 && upp_error_count == 0)! p4 [$ _/ W* k9 f+ @. i6 s
    {% |7 H; ?+ h5 M* f* K# A  E
        for (i = 0; i<upp_frame_size; i++)* F8 k% T, Z; M0 z0 r4 L5 H+ K6 _
        {
: L6 {8 u+ [6 i/ r' S            if (upp_buffer_a != upp_buffer_b)! b5 i, G# `( h: x/ u
            {" ]' @9 C! ~5 [/ f( m6 K
                upp_error_count++;
9 m& E% `' e! ]( N) {$ Y            }5 P" d9 U4 C. Y( `% D$ h
        }
2 ?* c3 p% @9 Y- L6 U    }
: j, [: v( N; \1 D! ?! z, [# U
    /* 报告通信结果*/
4 G) ]5 }5 z) l" e" |" z    if(upp_error_count != 0)
0 N/ l8 s( X$ G        UARTprintf( "upp_error_count=%d\n",upp_error_count);) E2 l8 ?0 u  x* W1 ?# s* V
    else
3 \0 l$ N" Z) e        UARTPuts("uPP transfers complete!\n",-2);& \" C0 `4 M( L; k+ ]4 u7 [# U

/ _8 o, e: W5 e+ t/ Z( D$ P  c4 _    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
" M! H3 M# O9 k+ E& y( Q    UARTGets(ch,2);7 k4 O; C! Q) T2 }
    UARTPuts("\n", -2);  a6 v  }: |, t. e( @
& K  X9 R4 E6 s+ [# j  O7 a
    if(ch[0] == 'y')
! O; U5 |) Q8 j( v    {  p5 u4 W" y" [
        /*打印全部读到的数据*/! D0 k+ A; I9 m0 A! h
        for(i=0; i<upp_frame_size; )2 I% h- t( }* @& [: g4 Y
        {
! q6 g& l6 J# K7 N& J            for(j=0; j<5; j++)% A( Q; m6 `; Z9 `
            {, X% @& b) L; ?) `9 U# n9 B
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);5 J* n& _7 ~" h- }( G/ i
                i++;
+ O: L* d- m+ W5 a                //if(i >= 4096)
5 ^/ m  x) m. L& C( p                //    break;
& x  M! _0 M4 J
1 E, T7 j8 A* y1 ^9 P+ M, S4 A            }
* r7 t  u8 }3 g. R" S            UARTPuts("\n",-2);
  l  a& z) ]( Q9 K' a  j        }0 {% ?, l/ ?7 v( F. A: u* p
    }7 P/ C* ^+ s* t; G

! \: n# j" j! R+ I4 V  L- u- S, I}

0 W  n3 A  T" a7 F+ b0 a

1 m, Q1 w0 P( t2 M8 `1 ^' O2 g+ |2 B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。: r& _( _' u* K! y/ ]/ T9 B
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
* H9 Z/ d& n  n) O0 r0 n( E
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-22 04:09 , Processed in 0.039113 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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