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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
4 I# ?+ ^/ [# }: W
Void UPP_TASK(Void)
) E- S6 H3 w* t$ T{, l( L0 D# g- d3 E: n

  o6 p. z; O- O9 I    int i,j,k,target_int_count=2;& q3 U# P4 Z% y
    char ch[2];' e' A6 s. W( A' X
" @/ r$ d, A$ D2 \
0 `2 v$ h# h" z1 p0 ?+ E
$ E' d! ?* B9 R1 A7 V
    upp_interrupt_count  = 0;1 p; s) M  _/ P. E" A: `  }7 M
    upp_error_count = 0;+ u' m5 K8 X. Q
6 p! |0 m3 k7 w8 ~% n$ p+ v- v2 h
    UARTPuts("\tResetting uPP buffers...\r\n",-2);8 k5 n9 F& `; S, R
    // Initialize data buffers
$ \3 o% t  {" F9 W  W+ t; ], f  H    for (i = 0; i < upp_frame_size; i++)
/ ~/ F- p. X4 ^. Q9 f6 W    {3 n- H" P0 ?) v; q
       upp_buffer_b =i;
" \5 O3 `- c  E7 m6 e" L8 k       upp_buffer_a = 0xDEAD;6 i6 U# h4 r% C1 @6 }, ?2 q
    }
; c, X6 p$ i0 j" E( H6 p& P8 r) J+ b/ q9 p
    //for(i=0;i<1024;i++)
) U5 ~5 l$ S' Y) A6 C9 c    //    temp=0;
+ D' E! q0 `0 V" n1 }7 G$ D2 ~2 m2 F& o/ @
    //UPPReset();( _2 R6 o+ l' y; m, Z4 M8 Y
    /*启动UPP DMA传输*/1 T  X  ~* ~0 F) p0 O
    UARTPuts("upp_prog_dma_i\n",-2);
" d" B+ K' ], u; W/ e- s    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
' x: N% _3 }  M9 C) h$ K    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);! c, O5 }0 v! c, n8 Y6 m. ~: y  o) y
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);1 Z7 H8 t" y' C/ v
. _0 t# B2 G5 ]% K' ]
    UARTPuts("upp_prog_dma_i\n",-2);& O( f1 T2 o" _' E- \6 _
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
3 H2 z' f+ h  F" m    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
3 J" x2 G, w* w, C    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);( H# u! s) ?, }* \" ]  K) L
8 k( j/ h& L9 r! U0 w# x3 `
    /*等待UPP传输完毕*/  \8 g8 H; y" x- i! x! {+ |' _
    //i=0;
( r0 P% p- E, T# T# d    //j=0;
4 p% N+ n) {5 k! q: S  b3 _    while (upp_interrupt_count < target_int_count && upp_error_count == 0)/ a/ q9 r7 z5 z  H. ~
    {
( e" S! f" Y% F% \  R5 }        /*  测试UPP传输的同时操作普通DDR数据7 e  o" u) ~7 f  ]& P
        temp=i;$ l; _' O4 q8 N, p+ ~
        i++;
+ {! T3 H" T* t  i- P        if(i==1024)4 S* {! V$ S( w: A% B
        {3 [8 c5 Y, H: B+ A( a( G
            i=0;
$ ^) O  g! k$ M5 i            j++;
0 p1 x: M, o' ?2 I; y9 l        }7 S0 a8 a+ b9 k9 S7 s
        */: B, g0 E2 k7 U9 X7 t) s. L
$ K# k6 v* e8 _6 q2 \) X4 i( m
       asm(" nop");
9 R% s0 p# r4 _  j/ E( O  Z7 J4 P
  Q" r( l5 J3 @       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);( J$ w2 k; }+ r) x: `" ^6 Y
    }
  H& B/ r6 s  M2 C6 O
% U  l& K# U# X* D1 }2 B( N    /*检查UPP传输的数据是否正确 (loopback modes only)*/5 b8 @) i; @7 U! e' [2 [  ^
    //UARTprintf( "i=%d\n",i);
( C7 g$ \. a  e3 c  J* C! k    //UARTprintf( "j=%d\n",j);7 }' }+ |3 [1 Y
    UARTPuts("Data mismatch in buffers.\n",-2);
6 U, {, k! ?8 c5 c5 U/ ~) M    if (upp_interrupt_count == 2 && upp_error_count == 0)) i# A* z; i( F4 z" x" G* j  [: P# R
    {
' |4 ?' }1 ~! x8 ~1 z+ C7 X) w8 I        for (i = 0; i<upp_frame_size; i++)
3 X( {7 O, K0 x5 q. ~        {/ u0 }' x) ]( {- \) D) X- Q: m
            if (upp_buffer_a != upp_buffer_b)
! I' V0 H& ?2 N" b% W            {7 \. V4 q# H0 ~" c6 \
                upp_error_count++;
+ Y8 J2 K& u- _+ L            }
: H  Q8 h- ^  }' D! y        }
1 r8 n  l3 S! J+ s4 ?    }
  W& o+ c$ A8 O+ y
4 Z7 }% X: b* h) S3 x( c    /* 报告通信结果*/
( I9 D& m, ~" w) z    if(upp_error_count != 0)
, A0 ^' y9 @( e% `9 C        UARTprintf( "upp_error_count=%d\n",upp_error_count);
, T" b" t  h" `& o! G    else0 ~) @2 R# U+ H* [
        UARTPuts("uPP transfers complete!\n",-2);
" Q6 B* f; d- ]( O: W7 b
2 [+ {& t0 L( b    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
2 k, \6 s0 q5 s- a    UARTGets(ch,2);
8 b6 O) ^" C: Q7 K7 T- c: ~    UARTPuts("\n", -2);
8 v6 O& \+ I/ H
# Y) s- w8 R1 f! y6 b; K9 O    if(ch[0] == 'y')
7 b8 H4 j. i' Q- \    {
6 |# J- Y) B0 U- b        /*打印全部读到的数据*/
3 [# w3 M& j9 S* ?  o8 D  _, s9 ~        for(i=0; i<upp_frame_size; )
3 E) p7 [$ m! f) {$ |) a# k+ j        {
8 z  G6 o$ b( ?) w/ u6 K' F& a( ?            for(j=0; j<5; j++). M* G9 o6 X2 K# x2 Z8 j, K6 u' ]  x2 [
            {
' r; Y8 x. @. _) W                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
+ z7 h+ E8 M) W/ @                i++;
) n3 G9 M+ a/ P& N  W: y. q& ^                //if(i >= 4096)4 r' o* {5 _1 E" G5 i7 E: j
                //    break;6 r. a" `( l* q
: g; I" R2 a" i' N7 n
            }: R: m$ }+ g9 P
            UARTPuts("\n",-2);& A5 h) S; \4 w$ T) T, l" m- Y
        }# I( B4 d# n& ~. Y' |
    }
6 \/ l* L: A) O" h& q  R4 l* m3 {  g
}

2 ?# E4 M- ?+ u* Y" G

* e9 Y8 }' a/ M. d
+ V- N" B( p" c. j  W9 _: U) J" Y- D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。/ K9 Q- \" [* y$ P  j( p0 I- u
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 00:43 , Processed in 0.036570 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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