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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
7 S5 l" M7 H( O' q2 Y, E; ]
Void UPP_TASK(Void)
& ^1 x" V9 a; ^/ w+ {/ s{
0 t- Z) ^) l+ ?( P) w4 f
9 Q  Z* H! [6 M& p    int i,j,k,target_int_count=2;8 \. r' K7 ]5 e4 Q& k$ r
    char ch[2];
% Y: O+ u- l1 S! ]/ P( }5 l9 ^" v* ^5 _( G# ~+ Q" w

- |# ~. \! W- q+ j  F5 Q# m( f% k
    upp_interrupt_count  = 0;
; @# L7 R& H; {9 e3 U* t, S. L$ n. U    upp_error_count = 0;7 _  B5 F2 f+ T- k6 L. \* E
6 h, A3 E5 N. ^. S- ~' M
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
4 P: h& n& l6 Y5 X! Y/ i6 v/ h! S    // Initialize data buffers+ a( d2 T( Y4 P$ T$ E% O
    for (i = 0; i < upp_frame_size; i++)
2 M  v1 i2 Z8 X/ J' L    {  s- D9 o/ z; ?
       upp_buffer_b =i;8 m6 E) j1 \% v$ b
       upp_buffer_a = 0xDEAD;
! s0 v' ]- W$ P9 b! \( D/ m( c# u8 o2 a    }/ D& f( q- ~! y. S/ \& A$ c, W6 ^1 A  R; c( G
) a( `, J8 l& C5 [' ]
    //for(i=0;i<1024;i++)
- ]6 ^7 G! ]: `. ]    //    temp=0;
. o& G3 ], P8 |$ y' M9 B* E& x* m3 j' Q6 ~- I4 V
    //UPPReset();$ |5 t( v+ b4 R8 o2 A- Z
    /*启动UPP DMA传输*/
2 y# j, [" y1 b0 w: T/ [* @    UARTPuts("upp_prog_dma_i\n",-2);
' [/ k/ k2 t+ N, l9 c, u    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
4 ^$ Y+ f# L( Z  D; I/ M# T+ m    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);) B, e, k: {1 _1 g
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
7 t2 V" E) }" L" H# ]8 X9 y
, J  c. j: k6 R- J; c    UARTPuts("upp_prog_dma_i\n",-2);7 {; b( {* M9 K* X& U
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
: n6 D$ M8 {, b7 K    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
) l% K- Z# X7 x" Y    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
( B' u, g, R/ Z: z
' @! x& [. N4 C4 z* K' M2 b    /*等待UPP传输完毕*/
5 _4 Z6 |& }1 X0 N) t& `    //i=0;' X0 y8 q; c  R) X- q/ u- b: m. u) n
    //j=0;4 u# o7 f% F8 F# c3 g' v$ Y
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)' _* R  T2 Z6 ^2 b9 V# b
    {
& [$ n& `# G$ Y        /*  测试UPP传输的同时操作普通DDR数据& O" L6 Z+ H2 ^' j
        temp=i;
6 k8 h% F9 j! {  W* x        i++;
1 G  [* z3 M" Z4 ]        if(i==1024)
1 N; Q; p7 @6 z0 O# A0 V        {
6 h/ {0 i1 z: F- J            i=0;
6 y2 o4 G+ ]) i) K' _4 R4 r- s( u            j++;4 n3 r& X% `$ h2 r) ~! m
        }. S7 M+ W' z5 M! i, i$ A
        */
5 b. ]8 z% v) O" a- V, D+ |9 Q2 W% V! l
       asm(" nop");
5 z3 n: ^; V& q1 S3 V2 a# |5 y
6 u7 `5 f) h- K+ p+ B7 p       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
  N5 E5 b( ^4 l) F+ x2 p    }) @  z) X0 w' @

8 c2 T$ f: p7 x( l$ e5 K2 {( H: {    /*检查UPP传输的数据是否正确 (loopback modes only)*/
  |% ^3 L0 K2 ^    //UARTprintf( "i=%d\n",i);" I. S! {) a1 ~( @: j: L
    //UARTprintf( "j=%d\n",j);7 [# |1 k% n4 o' O( S' R2 f7 D2 V
    UARTPuts("Data mismatch in buffers.\n",-2);% A' j: P; |' Q5 d% d7 H5 R- E
    if (upp_interrupt_count == 2 && upp_error_count == 0)' F( A! w8 o* Y+ Y
    {0 P; g, w1 U1 b: e0 i. O9 X
        for (i = 0; i<upp_frame_size; i++)
6 w  I1 v( ]  z$ O* u! |3 `        {' b) ^6 ]  E( t. C6 A' v
            if (upp_buffer_a != upp_buffer_b)  L, z" t! [8 \* ^
            {
! B/ G* Y7 E3 J( T8 ^                upp_error_count++;8 a; x( n2 J) m0 \; z
            }
/ h; d* P3 R4 c! X! V) e5 d        }0 [( d& C" R; r6 B# ?" F  }
    }+ ?, c. W% F5 H# ^" O

* f' E3 c6 p* Q' G4 a% K( K4 b    /* 报告通信结果*/  ^$ _2 ]/ G# L
    if(upp_error_count != 0)6 \7 u+ P! ~0 n" ?  K) z9 e
        UARTprintf( "upp_error_count=%d\n",upp_error_count);& y6 N- Q! P+ E7 ]& V# R- i+ c
    else! s& k! D0 c" v4 p9 n
        UARTPuts("uPP transfers complete!\n",-2);, E+ p9 w( e7 A( l6 T2 U
8 h* @$ k/ L% I; n' A+ P
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
) `1 q: ?7 p% G7 Z$ V2 }$ D  F2 s    UARTGets(ch,2);; |  N& \6 U4 v, l, n, F
    UARTPuts("\n", -2);
6 ?9 x% ?; G/ a7 ^5 R8 B3 L8 v8 T, K- ~
    if(ch[0] == 'y')
! C4 C$ l, Z* r, A5 R/ h) `    {
& u/ K: ~- k) Y4 l5 _# C        /*打印全部读到的数据*/
: C. e4 v: N$ l% X: B$ C        for(i=0; i<upp_frame_size; )
+ \/ M6 f& t5 u! X4 n        {
. }% f7 c2 k# L1 D3 c" T/ V            for(j=0; j<5; j++)
( v% a8 T+ G& [% F- ?            {% U* m" }# K, N* O0 K  m) `- i* s
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);+ @4 \2 E: [' K3 n
                i++;
, h/ b3 q+ z/ m; b! g: y                //if(i >= 4096)
) s. ?, O8 I$ i                //    break;
, _$ J3 e/ L& F* e
4 F( b, D7 y! M/ q            }
( `- e. u" [6 G) K8 L$ ~" E            UARTPuts("\n",-2);
% d1 @# @* d' }1 F        }
2 P6 e1 j# B, w% G# j* y) d    }
6 C3 r, Z( G. P, k  H% X' T  ~* C, X; G# o3 V( _9 H: h# @4 S% Q
}

- e( Y$ h4 B) n; Q9 e

* X& q' c  n/ x. ~# u0 ?5 `# V0 C" A9 w6 P* q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
) T1 ]/ {; [0 E8 M+ [* d" X
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-5 11:38 , Processed in 0.041938 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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