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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?! n5 O; F& L0 @* g
Void UPP_TASK(Void): P6 w2 s" P5 @7 e' h. r5 d
{5 m6 V! P7 d* Z  U. p
* y3 a% S6 @1 C% _) w  V, L, s
    int i,j,k,target_int_count=2;" g/ c( B  V. n, [% x. A
    char ch[2];  }6 v- x  A3 r

) r' X6 a0 W2 [$ K- R
5 R+ L+ P9 {9 x) x) S+ L! G* H. B$ p3 f' {8 I% ^
    upp_interrupt_count  = 0;" I6 `( p, R! D0 N
    upp_error_count = 0;( J( U" q2 r; O% Q. o, J9 O1 b
2 j4 l. s& d9 B& b4 j% m
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
0 l& o- p- E! X5 Z; m    // Initialize data buffers% Y0 o. p/ Q; w6 e3 O
    for (i = 0; i < upp_frame_size; i++)
* h" `% T! I$ a0 o  V    {
. A% s1 y+ V! E       upp_buffer_b =i;% f1 Y* ~4 V# ^. v8 `1 n; l: E0 \
       upp_buffer_a = 0xDEAD;
) i+ \* d( w$ r& V% _    }
6 |5 n6 {0 @5 A) w& }+ F7 {  c3 m9 ]  G7 e3 e; Q! [1 ?  l' t
    //for(i=0;i<1024;i++)
6 r( I4 t' e7 Q0 z$ r# c" t    //    temp=0;
9 i! }6 S8 c" E  d' M/ g9 w4 W
; a9 `3 D  v& e+ A7 ^    //UPPReset();
/ S# U: j3 R8 t' W: I    /*启动UPP DMA传输*/- [  N$ X- P' \) T! U
    UARTPuts("upp_prog_dma_i\n",-2);
/ p3 m7 M) I& z) _4 b$ }( \, s    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
! h4 M! j0 p) J# ^    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);0 g- H1 D8 L7 C$ b7 x* T; V
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
, t9 _1 d7 P9 R/ ~, @$ a* c
2 O3 T4 a* ?. K! }# `1 H    UARTPuts("upp_prog_dma_i\n",-2);
% t* h; w6 [, T' X5 }    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
$ e) n' O/ v5 V/ J4 g    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
/ S! X5 K, K, O% x: k7 |6 I    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);" [6 M0 P. C3 L, ]* H

6 f9 |1 X& {3 {3 j( [$ |6 {' l    /*等待UPP传输完毕*/0 n3 ^( T' ]% F0 o! j
    //i=0;$ m4 u2 P% S4 S6 U) B5 o/ k
    //j=0;
9 g: n7 X7 [! ^    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
  w7 |. C5 u& G* r    {* \3 s+ f( h3 @
        /*  测试UPP传输的同时操作普通DDR数据
- e! t% e; q0 E6 c4 Y8 K        temp=i;
5 j9 {3 v9 s# p4 e        i++;: r* Q: q$ x, i5 ~( M/ y* _
        if(i==1024)
: z6 l! i% t8 D- R" Z        {
8 o3 u5 |# u# q) o- M            i=0;/ f1 b8 M' g, {7 ?0 Z
            j++;
. {5 M2 Q8 J" _2 Z) N        }: L8 F) w! \. |9 K6 Z" P
        */
6 o8 p+ o  [) A& \0 x+ r
6 P0 Z! o: I: Q7 |       asm(" nop");' n9 r9 E8 `7 H8 [4 B
( _6 a% j9 T1 m9 D2 k3 ^" K6 \
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
3 m3 [% A  Z/ y8 F/ W$ ~( s: ^    }
/ X0 t" t& L3 J7 C0 L  Q7 N- Q
- J% ~8 [1 E5 Y: d& Q    /*检查UPP传输的数据是否正确 (loopback modes only)*/8 ]  E# }" {0 b/ P% q% a
    //UARTprintf( "i=%d\n",i);% Z" q, P8 k# K. e: ~9 A
    //UARTprintf( "j=%d\n",j);0 Z. v  n( f* R+ B5 P
    UARTPuts("Data mismatch in buffers.\n",-2);4 M' C8 M" |& u7 K
    if (upp_interrupt_count == 2 && upp_error_count == 0)+ l+ h2 E2 M3 V$ Z# g9 S+ Y  c
    {
, `5 E+ A3 `  k        for (i = 0; i<upp_frame_size; i++)* X$ f: _+ f8 D/ P5 Y
        {
  O* m2 j! W0 h; t( e( u9 o# Q* V( `            if (upp_buffer_a != upp_buffer_b)
- y2 K1 x8 y" ?' I9 ~            {- k/ n0 g$ V( u, @1 g0 f
                upp_error_count++;
, G* ]/ D" @: ]" M0 ]2 B            }8 {; r1 l/ A9 [
        }) b7 p. j/ D; i( d; x* G
    }4 @# d6 d9 w6 t9 X

% D  R+ x0 J( E    /* 报告通信结果*/$ M8 T4 t3 \6 z6 E
    if(upp_error_count != 0)
5 ]' c6 q- B1 s4 T- {0 s        UARTprintf( "upp_error_count=%d\n",upp_error_count);
( _. \8 i* ]3 B6 p# _( N/ `- J+ C    else! m" {% l8 h+ U6 D4 F6 U
        UARTPuts("uPP transfers complete!\n",-2);
9 F& Q' z4 i; F+ H" ^% Z0 w2 x9 A* n
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);0 s9 u/ _- K5 T! V9 _# N4 R
    UARTGets(ch,2);- `* K* u9 ?  L' L
    UARTPuts("\n", -2);& V/ |4 T8 a/ y, b! p

  c  q* Q  n5 i* N0 y    if(ch[0] == 'y')+ R, @6 P$ p# ^- c) Q7 f
    {% I( _- ~: ~+ j
        /*打印全部读到的数据*/
: a2 p* _, [0 C        for(i=0; i<upp_frame_size; )+ b" C! p) J& h0 y; M: s( N6 g
        {, g. R4 ^; d* N; j- Z+ C
            for(j=0; j<5; j++)
3 N& n! \; A" E! u. C" Z- `% X            {
7 P; _  z" u$ B' Q  v" O7 k% ~                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
) |2 Q1 m3 \( a, l  w                i++;
$ J- i; Q0 d9 X                //if(i >= 4096)
% A  r8 A$ f( E                //    break;, y, T& U5 B4 N0 h) N) o
: A+ f+ w) B3 z8 I5 |6 [+ x/ p
            }
- F- w: d+ Z7 @' A  o" P% Y            UARTPuts("\n",-2);
/ d8 a) ^$ g! V) ^        }/ ?0 A4 G4 i1 o: Y
    }
  f2 L, ]* X' F2 ]7 g4 o# \4 b2 i- I% n7 k# c
}
- }) g8 |3 s# m& l5 Q
, x9 }, n1 b  m0 b9 b# Z

6 J) K. h& `) X. Y% }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。1 H& w5 L' e4 G0 [- P
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 17:53 , Processed in 0.041932 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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