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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?1 o. y9 q4 F( ^: m3 k+ n% H6 {
Void UPP_TASK(Void)* C! C" L6 J+ h5 h2 F
{, F: I$ O. ?# E3 J" V6 X

$ Y; O9 E6 _8 d3 ^9 w1 G    int i,j,k,target_int_count=2;4 @7 A. V4 ^8 d' H7 n
    char ch[2];( y) T, A. n- F
8 s" Y+ T$ F: {
9 \3 U3 @% v* m  t4 B& t! b( x& e

* d1 c0 G7 A  K1 ?    upp_interrupt_count  = 0;- w0 a" e* Z7 \" R6 L9 b
    upp_error_count = 0;
0 Q' l6 B( @1 n6 ^/ J8 h7 y+ `3 m$ l$ q1 d
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
' X: k5 C* k; x, m- s( e    // Initialize data buffers# ^: A. s6 V8 t1 I: |
    for (i = 0; i < upp_frame_size; i++)3 D0 c* o, n; c- u4 K
    {/ f( h7 v$ z2 [0 y
       upp_buffer_b =i;5 X2 T) r# O# F5 `, g$ y
       upp_buffer_a = 0xDEAD;
" j; r& g' S. J" h. `    }
/ s: T& O' W3 Q1 C; G. l" m7 m" w( j" G3 B! }) M9 ]6 E
    //for(i=0;i<1024;i++)
; A/ s3 e# m) l( S    //    temp=0;
! f9 _! N+ u6 w3 z( U! N& U  U% m0 v0 H
    //UPPReset();
; G: h: T, o- m8 j+ {, b7 `    /*启动UPP DMA传输*/; g& T; T3 s+ w4 P+ O
    UARTPuts("upp_prog_dma_i\n",-2);: I  D) }6 i  S1 O/ N% t2 V  t
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;$ i, [& e" C* r
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* h6 A6 r1 |/ n& Q    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
- E' h* c& s4 U% @
- X& j$ r/ }! a! e  i3 b+ s    UARTPuts("upp_prog_dma_i\n",-2);3 U' _5 X4 n! ^! m3 z+ y3 T
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;' _5 v2 F) i2 [5 k7 ~! S4 c3 t5 c
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
3 a( [6 F% ^* a* f9 L# c. V    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);4 {& D  f* E+ D2 @

  e( Q7 g5 ~4 ^$ X    /*等待UPP传输完毕*/% K8 g. r5 b4 I6 O
    //i=0;
9 m+ q. o2 F; S- p    //j=0;
; M% o6 @% T; [) K# S, p    while (upp_interrupt_count < target_int_count && upp_error_count == 0)/ C3 o/ F( ]" Q6 O. s1 p5 ~7 T
    {9 o; f; ~8 o" R7 P' m) q: K' f3 `" R. `
        /*  测试UPP传输的同时操作普通DDR数据4 j7 _4 E4 }. S; S1 |+ @7 Q3 ^
        temp=i;
" E" m* ]& u4 I        i++;
* [* V' \% h7 G# h% L. b" k        if(i==1024)! B. `# r% e5 V* W& S6 B) e
        {3 m4 R9 h1 m# L( p
            i=0;+ I5 D2 i+ j% q2 |2 n7 K/ U5 Q
            j++;. A  V; ]* n# Z4 n0 G- X
        }
5 |4 N* ~8 o0 J; k        */  E9 b5 J2 i1 [, ^* r
  F2 w/ N" y- b  [! R; g2 _
       asm(" nop");" l3 O% q) w/ ~, ]6 U  S) ?
' D% q  ]4 k8 C7 y# D
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
; C3 A6 ^& k3 k- J# U% J    }
7 V+ x7 `& v" ?  t: V3 k5 P
; f9 }& w5 u8 O: x2 X    /*检查UPP传输的数据是否正确 (loopback modes only)*/: u& G6 G/ i; u: E6 K! l
    //UARTprintf( "i=%d\n",i);
1 ?  g9 C3 ^0 m1 G4 e+ G0 [    //UARTprintf( "j=%d\n",j);
" X8 W' v/ f9 m5 ^) Q9 D    UARTPuts("Data mismatch in buffers.\n",-2);
/ c; P, Y. h  ]* a9 U" E    if (upp_interrupt_count == 2 && upp_error_count == 0)
0 z$ h; Q# E( R7 k' k0 s8 s- \    {
* T! }3 a. [3 Q& U        for (i = 0; i<upp_frame_size; i++)
1 R9 `$ _! j8 d2 T2 w        {
8 o/ x0 c( D4 |            if (upp_buffer_a != upp_buffer_b)
) D1 |2 b3 J) C/ V9 P2 y            {
0 p* M9 |( g, ^  j2 p2 l, C                upp_error_count++;3 `: W4 k# K1 r9 [2 w
            }4 P% U# o$ [! g: i% p/ z
        }
& w' f. J4 |3 g; H- r) \  {    }
/ a/ c  l3 i& ]$ F3 q# C& j5 M. J' t5 C7 b! Y. y  b* @
    /* 报告通信结果*/0 R& Z0 n+ Z( ?3 a2 t( o+ O7 y
    if(upp_error_count != 0)
4 p$ W. X; ~7 S, O        UARTprintf( "upp_error_count=%d\n",upp_error_count);
8 `! \3 F: p; [& }6 x4 j    else
& C% m( E: j) I# C% Q* F! D        UARTPuts("uPP transfers complete!\n",-2);  b$ w) Z; R2 n

# X' [. n, x# x& W. n    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
) }3 A& J5 `/ A  g    UARTGets(ch,2);# f& E, Q5 _' `2 w( j+ G
    UARTPuts("\n", -2);+ V( F3 S; w% w8 y& j' g
$ U, L9 ~  ^" F) g7 a
    if(ch[0] == 'y')! \! h/ U& r' M, W) c& k
    {% n' e5 A" k2 G. U7 ]
        /*打印全部读到的数据*/
# F4 [2 Q# s7 n/ Z+ e        for(i=0; i<upp_frame_size; )
. s! Z# X' ?0 T! \3 y        {
$ U. C/ H/ \/ u/ ?  @" [* A            for(j=0; j<5; j++)
- W, x8 u; O7 O3 C            {
5 w; L" d* y) g9 e& u                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);4 E- F- w  ]4 r# D" H" j. K
                i++;
8 ?2 \) j* H  Z5 W                //if(i >= 4096)
7 B; U' J$ ^" u                //    break;$ o( A& `3 Q) D! ~
1 T6 e$ D/ l" H' n) K
            }* }+ I: I& T- R/ v& B- Q2 E+ J  ~
            UARTPuts("\n",-2);
: R6 ]$ n) w6 J' U! c( s        }* D3 Q% r9 ^* i$ F. J8 _
    }, @- F. d; K- T. E" ]  {! \
, K6 p! J5 u  g! R' ], }
}

: \" y2 l4 J' N- k% I

/ N, b* ~6 V& w% L- d* @
! Z- x+ f% E+ \. R) T) l& E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
7 I4 S5 R1 S. ~! P, n
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。4 D# C3 g# s( f" ?4 l! v
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 08:34 , Processed in 0.037740 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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