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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?, ~0 y5 [/ }# L- E1 {
Void UPP_TASK(Void)/ j! L7 v! ^6 o) \  h
{. T9 b3 u0 r! v2 G) m- Z

( R$ R7 _9 Q: D! |3 y' s" y    int i,j,k,target_int_count=2;
/ i$ J1 ~, r. z$ l6 f6 f    char ch[2];4 f. K+ [4 O; }5 n2 H

, r2 p/ j* T. Y
) t2 P. x4 @! N3 M: p+ C7 a3 S' I( k% T7 U. _
    upp_interrupt_count  = 0;; [! [. }. K" e$ A0 z! g
    upp_error_count = 0;
1 j. K# @" Y3 `' c3 E2 G$ B9 B% N: x3 _/ ^# q" }* `7 }
    UARTPuts("\tResetting uPP buffers...\r\n",-2);2 L% E, {+ q! r8 i, ]6 G: e
    // Initialize data buffers
) f; M( D  g5 y: g8 `' y$ H    for (i = 0; i < upp_frame_size; i++)
+ O' N. o; c1 M5 p8 a! X    {+ \' y1 k" L: |; `7 r) Y1 s
       upp_buffer_b =i;& B$ {/ Z1 x2 s5 g( g
       upp_buffer_a = 0xDEAD;
! r3 ~* u1 q! Y    }
! F0 w3 e, F+ J) K$ K1 k! b
' P* k  x5 Y. I' n    //for(i=0;i<1024;i++)
% O; W1 K5 }, n    //    temp=0;
7 X, I) O, r8 A! s! G/ x  J/ P
* D# o8 m% Q# Q5 O- \/ [    //UPPReset();* L% _% e* t0 s
    /*启动UPP DMA传输*/
0 r" X1 Y$ b" i    UARTPuts("upp_prog_dma_i\n",-2);4 k/ T* I) X$ P6 w% `
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
; i9 s: z" p5 x2 J! e    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" y$ V9 j+ E& v5 ^    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
1 {* v- `+ i; ?
' W- ?* c# A0 F    UARTPuts("upp_prog_dma_i\n",-2);# F9 g; P- G! o" S
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
- `6 ~- C7 I# E: a    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);7 d4 z8 e0 P1 b7 w3 ~; K! @) \
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
( |5 w$ k( R8 b5 ^; b5 G0 b' S7 ~3 r# s
    /*等待UPP传输完毕*/
! U( V8 |. N+ ?* Y    //i=0;) U! W' K6 D" q# \& [, u1 J" u
    //j=0;, m( a  w/ y& O, o0 B  x
    while (upp_interrupt_count < target_int_count && upp_error_count == 0), Q& P5 y& z; p0 y1 |7 P" Q
    {; p9 a) K/ h; n4 t3 ?
        /*  测试UPP传输的同时操作普通DDR数据
* L  W5 j5 g. B4 ^3 l% @9 ^; A" K/ r        temp=i;
  s* b6 |+ Q5 t0 f& `        i++;4 V! w; G/ f) c. W: _
        if(i==1024)
- M& m/ X# {  f        {
  N" `4 r1 ~$ y3 d/ |4 ~. Z            i=0;! G5 z( y- ^2 k
            j++;
& y2 ]% J' X  ]3 h! W, `        }8 e* U6 V9 Y" T2 r/ B8 Y' Q$ c, G
        */6 i3 F! L% G3 X& v

4 a1 X/ j) r' m! ]       asm(" nop");8 |0 I1 ^9 i4 }6 S
) F# K6 Y( P1 u) Q
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);. d  N/ Q; Z3 O9 ~: B
    }. J* p+ E' ?2 E

$ O$ {/ U& n8 g, A    /*检查UPP传输的数据是否正确 (loopback modes only)*/
6 U+ m' _) l4 r- L    //UARTprintf( "i=%d\n",i);( t( U% D+ s: t+ W" k
    //UARTprintf( "j=%d\n",j);
0 T+ A. F; c9 V# \" [: [: t% [; ^    UARTPuts("Data mismatch in buffers.\n",-2);
8 Z8 H5 D  Z: s/ g3 J    if (upp_interrupt_count == 2 && upp_error_count == 0)
) Y+ M$ `4 j; N0 g* ~  ]    {: E- N% N0 ]  L; g, G; m+ T1 V4 f
        for (i = 0; i<upp_frame_size; i++)/ t$ E, j7 G3 E; i" z: }  e
        {
5 n& |  M2 k% M5 v; G; a            if (upp_buffer_a != upp_buffer_b)
( @7 V9 Y6 A0 r5 n, ]            {
  Q" h" J+ i- K, B5 p% z' y# y* h                upp_error_count++;" V8 J, |$ c+ L9 F2 s6 A  x* c" c$ A
            }7 ~) l3 O$ r- v/ R
        }
* x, w% r* S0 P: ^. w8 e0 B    }8 [4 H& x# M" ^9 N. m" h

  C9 P8 E& h- K" n, }    /* 报告通信结果*/! T- T, s& I4 t  q: R, Z. }
    if(upp_error_count != 0)1 i' n0 ^" W/ T' A
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
' S' D! m+ N% {) j: k6 Z    else
6 e  m$ l  X3 m7 L1 x        UARTPuts("uPP transfers complete!\n",-2);4 Z- K% [3 b7 P: Z7 \: _2 R; Z  e6 g

7 S2 @- a5 `' S# m" ~- B; ^    UARTPuts("Do you want to print all the data?(y/n)   ",-2);1 v) s5 }4 M0 S: X% o$ B6 v
    UARTGets(ch,2);* T. b6 H- v  ?0 R: D* D5 s0 J$ j
    UARTPuts("\n", -2);
# I0 H% Q. F2 u- f2 N- m9 h# n3 v: D3 ^
    if(ch[0] == 'y')/ l8 j2 N1 L5 v' `7 T# \& P
    {. R. _/ M8 ~; \& v$ {) n, K
        /*打印全部读到的数据*/5 X; V% s3 q. B: H
        for(i=0; i<upp_frame_size; )! K) D7 m/ w* y0 T  q
        {
3 a9 }! L3 V0 f+ z            for(j=0; j<5; j++)$ }+ n6 h! S' h- b: [0 w6 l' Y. F+ M
            {$ A% |5 t" e( e5 A! v, |
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
. q0 f6 g* W( Q$ R4 R, D/ r! T                i++;% Y3 W" \6 R! u( z4 Y4 e
                //if(i >= 4096)
' x6 ^( g# y- n0 E* D$ t                //    break;, c% _2 t& n3 k' t$ A0 T

1 |1 Y! F! F+ e2 Y            }) I" T: ^: v1 y  [1 p. ^2 ^
            UARTPuts("\n",-2);1 o" _5 p; L/ a( e/ z
        }7 C- B9 U; |; q# e, u$ P: W( W
    }( O# J8 N: D  |" ^) D# R; |
7 O: f# A# G; L3 n. p
}
) K; ?3 y3 q- r  M6 G
& j, P: P( S: [* Z( t5 e6 q( {

8 c% J, n) Q0 Q* }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。6 ]& F" _: O1 ^: m$ k$ D1 |5 e
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
6 {% @& m$ A$ d$ _8 [0 J$ E
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-15 21:21 , Processed in 0.036689 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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