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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?( e; l! Z5 p9 c4 W' m/ H. v
Void UPP_TASK(Void)
8 D# U/ W! ?: Q- C{
9 V& M7 M) G: `0 X! G& {: C7 P8 [8 W$ D+ L* h* G
    int i,j,k,target_int_count=2;& y/ T' q- K0 @% @2 O4 T3 F. l
    char ch[2];
& f+ Z" j) y6 c% d$ p% h1 [
" l8 \* c" R4 E; V- d+ d& ^& v$ \+ c7 s+ w
% A* G$ b1 G+ }1 O3 ]3 W) n
    upp_interrupt_count  = 0;
! e* V) M  J2 S1 C9 q8 D    upp_error_count = 0;
* D' u; k/ j3 F" X/ n4 s( _* X3 L& ]8 [1 N% Y  I& v, {
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
: S* |5 t) C" H9 Q8 B    // Initialize data buffers+ ?2 I9 `8 \- d7 _- T5 d
    for (i = 0; i < upp_frame_size; i++)# L5 m  W- F5 G" P7 h
    {! F/ Q1 g' M9 b& k
       upp_buffer_b =i;
( S" q+ k/ a, I/ o2 Q       upp_buffer_a = 0xDEAD;6 X; ~, c" {% I' Y3 m+ E5 D
    }% g6 f. G6 Z4 l3 g( u' ~* v9 n8 e

0 f- p, U7 }9 U  H4 h4 ~    //for(i=0;i<1024;i++)
3 ?5 e* l! o" M+ O  o' `! O1 B    //    temp=0;  }, j" @- y" ?6 A
* c, r3 \1 V: g2 ]! n5 ^
    //UPPReset();5 ^( h6 X+ @: H' I5 \& k
    /*启动UPP DMA传输*/3 G9 @* W$ A2 ?- Y+ }6 R
    UARTPuts("upp_prog_dma_i\n",-2);3 ?3 E; H  W3 t+ M9 g$ M0 b
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;+ [7 y  T, @, D1 X5 r: V3 D1 b
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);! c" v$ u( _! K9 A4 v
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
( c/ t  X# v# y! }: G1 v
, m6 E1 e' }6 X+ R0 ]( D7 Q5 U    UARTPuts("upp_prog_dma_i\n",-2);4 Z& V  K5 c- w5 o
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
) ^# t  K( Y" h    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
3 H% X4 b- z) j1 X+ ]    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
8 v5 B8 y) I- J9 f6 i: A
. O' y! Z* h7 l    /*等待UPP传输完毕*/
. v6 I' J4 E# X    //i=0;# x. o2 K2 Y5 o9 p; U& X
    //j=0;( P# x$ q( `& S; Q3 Y
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)! e7 B. h2 O! E& e8 }, i5 O
    {& F. U: h2 z. D. m
        /*  测试UPP传输的同时操作普通DDR数据
5 y5 i) @: N* m& ~0 A        temp=i;0 [, t5 F+ o" V/ B% O; i
        i++;  d- O& B, F5 `2 D5 p! S
        if(i==1024)
% h* d- |* G1 ]. B        {
: f4 ^8 t. X1 \( ^: [) @. W            i=0;
5 ~3 m2 ~! [, X" r# x& i+ K* m            j++;* G6 t' n5 U  ]/ Z0 b
        }7 s5 {+ F( {$ W
        */
9 I# K9 p1 I# N7 U2 y3 B( W8 P6 i4 |8 \. l/ B
       asm(" nop");
4 V. r& W6 M  K+ O' Z6 e# k  {+ ?+ S8 v( T* y& c" [4 d" @1 _$ C
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
6 _5 n, o0 K# E8 l8 D    }6 \/ i- ~$ q! w% Y' K" z/ i

9 B% ?4 q; T5 g* @3 I$ {    /*检查UPP传输的数据是否正确 (loopback modes only)*/  g6 ]! Q5 @8 z% e4 X, Q3 s
    //UARTprintf( "i=%d\n",i);
" P3 [3 L5 R5 k) e7 K    //UARTprintf( "j=%d\n",j);& l3 {8 L% v! ^7 B% b; p* }
    UARTPuts("Data mismatch in buffers.\n",-2);
. M- K- H3 ?8 @, N7 S0 z0 S) x/ {    if (upp_interrupt_count == 2 && upp_error_count == 0)! y, Y4 R: w! j1 E
    {
6 ^, Y2 E) n2 ]# J4 V        for (i = 0; i<upp_frame_size; i++)
  Q$ n8 [- @5 o; F* z7 j7 ^        {, G4 S+ J& L6 m
            if (upp_buffer_a != upp_buffer_b)
# `7 _7 [4 t5 k            {
2 V3 ^4 a' ~, p2 F/ p% N- U                upp_error_count++;
0 k/ R' m% a: L1 g" l9 {            }5 }& E/ _6 |) u# ^
        }
/ D" |5 P9 B" D% }! a# @2 K; r    }
) t+ A2 r& h( @- C! m. j8 A% S* j7 q1 P" N9 y
    /* 报告通信结果*/$ l( W6 P' Y; M/ p3 L2 [" F3 q
    if(upp_error_count != 0)8 p- r+ x! [/ \
        UARTprintf( "upp_error_count=%d\n",upp_error_count);3 {: v  F" w2 U8 W# q" u$ p
    else
9 D& C# O# O* W9 D, [        UARTPuts("uPP transfers complete!\n",-2);8 V1 v# e5 ?4 h% N% w+ d

. ^- z5 ]+ h* ]9 _/ {, z  d6 @) s    UARTPuts("Do you want to print all the data?(y/n)   ",-2);! y- Y1 h7 E0 Z! z, D( E2 g
    UARTGets(ch,2);/ N7 A( s* a7 o- O
    UARTPuts("\n", -2);0 ~/ }2 U' D% `8 l

9 W# w& _6 I5 t7 k    if(ch[0] == 'y'): |7 p3 ^% O7 r$ j1 g
    {! n7 c. \0 J0 u4 ~: P0 b0 R
        /*打印全部读到的数据*/
- P( {- g4 ?; {/ O: g& c        for(i=0; i<upp_frame_size; )
$ S4 k" T& n4 _/ d1 N" Y        {5 x6 r/ Y3 z6 f8 q* A0 i# }
            for(j=0; j<5; j++)
0 A1 ^7 V" j- e6 Y            {
& _2 w, X0 C  Q7 X/ S% W/ e' o( G                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);6 [% V2 Z0 _1 T6 z- P
                i++;; e2 ]8 _4 W  r2 X8 [+ p
                //if(i >= 4096)% R  C( t6 k! C1 r3 T5 _
                //    break;9 t$ k, J, j* _5 v  c

2 k& D' {* Y- I* I7 W% @( h) U2 _/ q1 U            }, r/ F: g1 b5 K8 Y% u* s  s4 R
            UARTPuts("\n",-2);" [8 q! X" o' t. K4 P1 R* `
        }/ Y) K! k- s9 e, O4 A
    }( w0 M+ V& @+ S
2 s5 A* h' u7 n. w
}

4 B+ Z7 x. F- l

# D/ P! D* r, N0 _8 t  m$ f
0 r4 c& T. G8 r" D$ p7 x, G' ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。/ }! |$ B9 M, v! P
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-25 17:53 , Processed in 0.040274 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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