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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?; l- H1 J; I7 f- V" i, Y* E3 l
Void UPP_TASK(Void); l; t, K, N5 `( h. ~  K$ r
{( s, c" C# [: b* P

. p3 r) \( R$ R% }% Q! x    int i,j,k,target_int_count=2;
0 X, u7 I* N* Q6 F' J    char ch[2];, R5 G: C4 R6 q

+ I; H+ }# m: X8 l! P8 v$ h6 p/ B/ M3 A
2 @& N2 Z1 d5 u# d' x, e
    upp_interrupt_count  = 0;
  H' R2 ^3 C5 F9 g+ n    upp_error_count = 0;; k9 j3 y0 {0 p- e( p6 S! K

/ z( T$ ]% Z; l4 ^9 O& j5 {+ M    UARTPuts("\tResetting uPP buffers...\r\n",-2);& I# W; p  f& Z+ o
    // Initialize data buffers# F' U( _( d# i0 Y9 C
    for (i = 0; i < upp_frame_size; i++): Q  ~* n( F) ^* C/ H+ y* Y; Y
    {
2 c* E8 I: r7 U6 X* f% W  O       upp_buffer_b =i;
% C  g' N! G' t! w* D       upp_buffer_a = 0xDEAD;
) I3 z/ ?* E3 R% f: n    }5 `% O! |- s; K4 C$ S

7 g7 L9 f7 y. I6 }0 B! V    //for(i=0;i<1024;i++)& w7 A' @  n! w, o, {
    //    temp=0;  w3 J- w6 D. ]: T& f

& v9 f: S3 }- ]    //UPPReset();; F  B3 q' x; H8 {
    /*启动UPP DMA传输*/4 K& A* o. G3 h& ?3 |5 P& K
    UARTPuts("upp_prog_dma_i\n",-2);# d) r0 R% U8 R/ \" Y$ Z
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
) F5 W9 k2 W' q8 }. w- a8 f    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
8 h! ^( K' S# L* f. m5 [1 X, d' h* p& S$ i    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);( K" }3 |: @2 B" @, I

: E2 S% R7 [& f- x  }+ E    UARTPuts("upp_prog_dma_i\n",-2);8 N8 y, X! j0 g' y, P, b. g8 w4 ]
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;( `% ~( A& k, f$ J! u
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
$ {+ m# v: p# z& u+ v0 z5 X    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);; @- O" c0 R: o' D
7 q6 D5 d) N- d: }
    /*等待UPP传输完毕*/
; V* U; h6 U2 v. E2 Z    //i=0;
' H$ H7 W0 b( [* ^: T6 F+ @    //j=0;
2 x6 |9 p- P5 E. i* s4 o3 L* F    while (upp_interrupt_count < target_int_count && upp_error_count == 0)5 h4 K+ z; ?6 p  @0 E6 k
    {. J$ v8 U4 ?* t. e) _1 Q1 s  e3 M
        /*  测试UPP传输的同时操作普通DDR数据
5 w: @, Q6 w: @# q6 l# g9 S        temp=i;
" N" u0 R/ D8 t) U/ E& V! E( F, K( r        i++;
' P$ ?% n% v+ y1 n6 F) a        if(i==1024)
3 |' o' R6 c# z1 m( ~; z        {
' q# p/ e$ [$ x3 y            i=0;
# ~/ _1 v, a$ ?' W  |4 K0 n! [            j++;
& e2 }& A, e6 x, O) d5 a: q$ R        }
/ z$ J/ y& c7 D+ f$ h        */7 I3 C* W8 ^* K
$ T/ L) k0 e$ {. Q* x9 K
       asm(" nop");
, R' Z3 k+ f9 a8 z, c) |8 U6 W5 B4 I+ z- ^5 n8 d9 W. J6 o
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
$ N" `* _5 _7 [! y& h: B    }$ x1 J8 J+ d/ C$ P" P# g1 q

# E# T8 q' ]. u: g  p! L    /*检查UPP传输的数据是否正确 (loopback modes only)*/
6 M- T' S  R, _7 f0 G4 l    //UARTprintf( "i=%d\n",i);; ~. Q, c! m( J
    //UARTprintf( "j=%d\n",j);
# i6 [' S* F& B! }/ t    UARTPuts("Data mismatch in buffers.\n",-2);) S4 G3 u8 m6 j9 h( t
    if (upp_interrupt_count == 2 && upp_error_count == 0)
* g4 ^) t* j# G    {
$ o1 S; x0 j) }        for (i = 0; i<upp_frame_size; i++)
3 M$ `' a# Y' `3 g$ m+ N5 K        {
$ b- I' ^  Z: E9 j" t( }3 X. p            if (upp_buffer_a != upp_buffer_b)
0 ^/ o5 y+ g. ^  R9 q! r8 z& S* h            {2 E: t5 h1 `( r2 D9 {9 y
                upp_error_count++;4 x: [" v* o- P8 d, ?2 ?5 u( Z
            }' V) J& _% {/ o7 x: x# V  K
        }" p. h. H; x7 W  h6 s* `9 H& o3 j
    }' C6 w* x2 w, q3 z# C/ I6 k

2 O: T  w1 W, F/ w; r# E9 c0 K    /* 报告通信结果*/9 Y' C, |0 R$ V8 r3 }% l$ J
    if(upp_error_count != 0)
' }; e* u2 }2 O7 j        UARTprintf( "upp_error_count=%d\n",upp_error_count);
6 p9 b0 y/ ^/ `6 A8 C7 G( M    else
- C1 ^+ p  i, ^' D( g, D" r        UARTPuts("uPP transfers complete!\n",-2);$ @4 b/ L- r2 o$ B. o. h: \/ z8 k& R' q
+ J6 h$ _9 U% Q. N: O; T+ X
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);" @' Q7 ~- _7 d2 Y) g$ n+ c
    UARTGets(ch,2);
' w; `/ z  I( d' X: w    UARTPuts("\n", -2);
; Z( Z, i  L$ \$ ^* s. ]* y' S+ {# |/ v" y
    if(ch[0] == 'y')* g# h6 ]$ L7 q0 |0 {& q
    {
5 \/ I6 ^3 Y5 Q* F  ]! P! |/ B        /*打印全部读到的数据*/3 P7 d) t) H7 E/ D
        for(i=0; i<upp_frame_size; )
  I6 F2 d3 c" ~4 k3 @; ^% `        {& r" J7 d0 Y5 }9 T( R. \
            for(j=0; j<5; j++)/ f. a' a% p; L6 M* O$ t7 k
            {/ T+ d2 `# g- G* k0 `+ j
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);& A4 l! j9 g1 ?! G7 i8 }
                i++;
2 G" e- {6 U, j                //if(i >= 4096)
% l4 w3 Y6 A  Z5 O9 T6 h* [                //    break;0 a+ s% I% x3 i/ _/ K! Y! L+ S
! A+ n- s: b- L
            }
4 p" K+ [( {: i- I7 w            UARTPuts("\n",-2);
* G. _7 i7 k7 S        }# N# r( M) Z1 ~9 N
    }4 S6 e  ?( n2 @# m2 H9 n) ~
; ?- m. C- S; _
}
" N9 C' b/ @) k9 o8 d
' y0 j8 W& z6 b& s
4 c9 T' m4 C6 x- I/ w  b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。' t& c: c9 K( f6 Y8 d
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
+ |5 C9 k% m6 \1 \8 P5 \- @; s# b
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-8 00:18 , Processed in 0.037986 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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