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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?6 q/ x$ k/ d& {: d# [  _2 |
Void UPP_TASK(Void)
1 A& M  _' m) B% B8 x) E+ i{0 e( k& F" X, x. V( ~1 M
3 ~) [7 k) _! U: C6 Q
    int i,j,k,target_int_count=2;% M# ^" \" E& T' U6 d3 z
    char ch[2];! i3 {4 L/ H; O3 b8 o" H" F8 k
, N2 d+ L/ F$ }. c( v
2 Y' ^8 }4 q. \" K

' r8 A/ ^5 \' Q( a    upp_interrupt_count  = 0;
. B# m5 V- c- [; G0 A) @  L& s    upp_error_count = 0;" U' J: r, _( A9 h

. f' \0 M! O! A$ P' `) ?% Z; Y& `    UARTPuts("\tResetting uPP buffers...\r\n",-2);, K) Q! J+ t- R% L; l6 l! f2 Q  \
    // Initialize data buffers
: R) B+ d6 y- `* c: e    for (i = 0; i < upp_frame_size; i++)
' X* N6 C& p& o3 Z$ _    {2 Z. c2 B; x  W: r6 D3 i6 a& b3 s
       upp_buffer_b =i;
, ^" m1 ^3 x; _" @8 E6 Z( L, y       upp_buffer_a = 0xDEAD;
; j1 j% Y; |$ r5 d    }
/ i# }  j. K9 L1 @7 s# N5 n
! R8 S6 ]& J  V+ G3 Q0 k- D    //for(i=0;i<1024;i++)6 J6 }1 p. `- T
    //    temp=0;
/ n) \0 {2 h  g1 y! I( I
9 Y4 a# p! A( u9 m% T    //UPPReset();7 v7 _5 S( r7 P( M; B) z! ]; B: X& E
    /*启动UPP DMA传输*/
/ ^% M+ X" y5 N7 B: c3 Q* J( d    UARTPuts("upp_prog_dma_i\n",-2);
/ s6 |, T, k/ j- P2 u8 [* A7 g    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;5 v. K) g: S  r$ T# b
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
5 U6 U# J! V; X0 e6 H+ @8 J    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
6 w6 P- W( d/ L3 ~3 Q& i8 A/ A+ t' C  L: ?) N. [
    UARTPuts("upp_prog_dma_i\n",-2);
. l0 z& G. K9 V) R7 l    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
# G" h: V* v1 L& D: O; }9 f    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);7 u& {! I2 y0 C. n4 ?3 Y
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);3 i6 A% e5 z, }/ P" V
3 \. p: m) M- N+ X) A. M; p9 s( a
    /*等待UPP传输完毕*/4 w1 V/ Y. y5 Q1 X- K' T3 s- C+ v; R5 v
    //i=0;
$ T% q3 |2 }5 t2 G7 I. j    //j=0;
8 e& E/ J! z/ j0 G0 R) A; g; A    while (upp_interrupt_count < target_int_count && upp_error_count == 0)3 H: l3 {7 c! d8 j" U' Y) K
    {( |$ ?" u% P/ ]1 T. s
        /*  测试UPP传输的同时操作普通DDR数据8 @9 D- P5 M0 E0 o/ z7 k
        temp=i;& l+ E  D2 A; l3 d+ D% B
        i++;
, J0 s" \& G% B        if(i==1024), k5 Q% R; w5 k0 m
        {
! i/ n5 o2 P# n0 B            i=0;
+ w  _) {- P1 G9 `5 q# r            j++;" r+ h! d( Z, r! F, c
        }6 K) I6 _) ~: Y! }
        */6 J5 P5 g/ N/ ]/ a" ?+ V5 m/ [' c4 T
, Y9 D9 o9 c3 l( P  q
       asm(" nop");
% `3 ~' \+ l: O, l0 l. d  V9 I5 v3 S5 ^# I
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
, c/ @% A% l/ L) _% m' Y% Y    }! J  {- k# {$ [0 H/ \
" H( y$ A3 A4 c1 t% [1 L  b
    /*检查UPP传输的数据是否正确 (loopback modes only)*/. a  q) `. z2 k0 l
    //UARTprintf( "i=%d\n",i);
% v1 G, |3 T3 @- Y1 G2 F$ D    //UARTprintf( "j=%d\n",j);
- ?; W  M8 a6 o, l" u# M    UARTPuts("Data mismatch in buffers.\n",-2);) m& g) s+ E; y, _
    if (upp_interrupt_count == 2 && upp_error_count == 0)* W8 p6 Y) e% B8 @
    {5 F8 ~. n/ |0 E( z* r4 q4 X7 H
        for (i = 0; i<upp_frame_size; i++)
0 E0 ?3 X  c5 l$ b- O  O        {, X% \  u( ~5 E
            if (upp_buffer_a != upp_buffer_b): r0 D, X* ]! B6 H5 l+ v3 ^; R
            {
  r  u9 }* T7 a, d" R                upp_error_count++;
$ `- P' X( ]; y- }% ]- S            }
' r& b+ \5 E2 e8 p        }
, \" l9 L% [. ?4 i- V; d    }7 \, x1 C. T$ ]" F4 @4 t' X

/ a2 A/ [% X$ y% i* T, H5 V    /* 报告通信结果*/! a( ?" L% [" [6 G9 ^; Q* t
    if(upp_error_count != 0)1 @" S+ D% e( P$ q& a7 V& G
        UARTprintf( "upp_error_count=%d\n",upp_error_count);# F; h5 z# R  F9 j% p6 M
    else0 Z; u0 ]. [: F' v. A
        UARTPuts("uPP transfers complete!\n",-2);
" u, t: T6 {# B" x* v( C! k( O* C/ R" [
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
! d5 m$ r  W( N. x% o4 _    UARTGets(ch,2);
. U# ?9 w: _# L" g    UARTPuts("\n", -2);* c- W, [5 V$ w
. X; e9 l4 i0 f+ L* H
    if(ch[0] == 'y')
2 z- W# Y/ x( X( M/ _: l& e9 |    {# L! ?6 d% K$ n) c. }8 t, f0 A
        /*打印全部读到的数据*/$ W+ P: O. Q$ _' Q& [
        for(i=0; i<upp_frame_size; )
0 j% h2 M+ Y% [! c9 ?* d$ o        {$ y0 s& n7 p/ Y/ E8 ~
            for(j=0; j<5; j++)% L7 S  h. H" `' o: ^8 R: ~
            {
: O* D! M8 t. G# _                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
  d! M3 o1 l/ C' V( R                i++;5 ]7 ^* X9 D) J6 U* O4 X5 e
                //if(i >= 4096)* @% e$ j' H. b3 ~7 u  j' B
                //    break;* F/ u: G6 m; N) y  x$ A% {
. p' p" U1 R& E, }; U0 ?
            }1 }: j2 k5 {8 ^5 N. A  W$ _' w8 E+ f
            UARTPuts("\n",-2);
& ^: O3 @" x5 R: B        }
. X- k) f" p" N; p    }/ H3 u/ x( p+ |7 a0 h* B
4 o( `1 O: L  K: b6 X* i+ |
}

) G7 r$ p* S" f- O) _1 Q

8 R$ z& h: Y0 f: @' s0 u
2 m( [0 V9 P! b2 s+ E& {8 t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
: O: p9 R, Y. K( y3 }5 v
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。" H% h2 Q' ?3 e( R
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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