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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
, _. S9 l3 l0 @! {
Void UPP_TASK(Void)$ Y3 z' _/ H1 D- _8 R4 X
{
1 E; \4 ?6 P) ?1 e3 ?* D. b% C& }( ~- D, Z. e/ ]; i) F
    int i,j,k,target_int_count=2;0 ?1 L8 s  @7 ?/ I
    char ch[2];
3 N; ]" V6 Z/ V
1 T/ f7 [3 T! |  O7 \
1 J6 V. d1 U) `& C
7 T- e3 _7 P; l" B- k2 s6 c9 I    upp_interrupt_count  = 0;* d# l9 s8 S  S" V, q8 O) s. w
    upp_error_count = 0;$ d! ?/ x2 r, q0 c  l) U- O, A
# ?4 j/ K0 d* h/ D
    UARTPuts("\tResetting uPP buffers...\r\n",-2);! J- V# z1 `1 g+ w4 \1 J- f
    // Initialize data buffers0 d% g3 r) U7 {, F* n% k
    for (i = 0; i < upp_frame_size; i++)
/ [$ M( C$ y9 A    {
4 M* g; [- U4 y0 e( X       upp_buffer_b =i;  p+ T- D/ \6 q% p
       upp_buffer_a = 0xDEAD;
7 k% _9 D; t' ?% U5 D4 ?$ T    }, {0 J& G: j8 e. |) I

0 T3 g. T6 ^2 w) @4 B    //for(i=0;i<1024;i++)  [% M: t; P: U0 v, J- a
    //    temp=0;
# F% U2 I$ e" {. a! d1 h, y; U5 ]
' L+ h6 c# A, r" j9 m  b    //UPPReset();) _3 f2 R8 X1 r% Y) c# B
    /*启动UPP DMA传输*/
( D+ h3 X; N( P/ w: \# [* t# o( D7 P    UARTPuts("upp_prog_dma_i\n",-2);  G5 a9 Z6 R( f) e
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
* F8 E' E( v6 d4 y    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
9 `! z- p) v' ~8 H, A$ {    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
1 e+ i5 I4 @' J) a3 v$ _4 m
; D8 \# Q, b0 Y  z- C    UARTPuts("upp_prog_dma_i\n",-2);
5 }: F8 C0 q% H- R    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;# b' I0 v! I$ S, c
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* t6 X' R; @) l% F! L# I    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);& E+ H( q/ a" t' H0 t, E$ a* n
/ c+ v1 z1 E% _" h
    /*等待UPP传输完毕*/
' \6 ?+ p3 M7 i; l    //i=0;$ Q/ V: @7 I! [$ Y
    //j=0;; |5 [1 f' A9 w6 u
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
. y$ `' r- {8 e( x) }; B    {. g/ b5 w5 i8 u  h
        /*  测试UPP传输的同时操作普通DDR数据
: y8 Y8 F* i' F4 p) K        temp=i;
- ?9 O  P" a3 u        i++;
' ~7 q& N* N' D% w* M        if(i==1024)
! t" E1 [: \! a/ F( L& P3 y        {
2 U1 Q9 L+ I" [* _; X$ W* {            i=0;. T) D) x& K# I7 r
            j++;0 {6 V/ F  J4 v% N
        }
& O* A. y) I% u) `7 U        */
; b* r9 M3 Q! X- U( a8 L
. [3 e/ a! Z! _3 n3 \) W       asm(" nop");9 p" \, m/ u- ?# s
$ m% q/ f3 m7 a6 l9 ~) `
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
5 P6 i' y+ f1 A" z    }  C5 G: O' Q$ H1 b" e: ?2 w, k7 H; M% ~
; @0 N  b% c1 I6 t
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
, x/ I; \) G' ~2 w    //UARTprintf( "i=%d\n",i);
. C6 `' P9 O7 a    //UARTprintf( "j=%d\n",j);! H) i9 R7 C* {
    UARTPuts("Data mismatch in buffers.\n",-2);  g( Y! K: d* _; G, x& m/ ?
    if (upp_interrupt_count == 2 && upp_error_count == 0)
  K$ c9 w3 E7 o+ @% D  O9 u    {
9 r9 R# N- A" S* \0 w% x  {        for (i = 0; i<upp_frame_size; i++)$ w- V8 e; l2 ~' P
        {* f& g2 u3 r: O. u
            if (upp_buffer_a != upp_buffer_b)
& f# I+ }& F& T0 h. }8 ?  A7 x            {
, n4 ~/ P" T! W* `* l. p" I                upp_error_count++;$ T+ K# S& l  l$ n2 m% l
            }
" g- z- w) [8 k3 Y1 [        }
: p! y  j& k& B9 P6 n4 a    }$ f$ D* [; a7 v' I
5 F1 s8 j9 S$ d* u: B0 B- a5 M, Z
    /* 报告通信结果*/
: B& r; Z& s( B3 Y/ F( j  z    if(upp_error_count != 0)
: F7 b' M* k. N7 o6 C! Z        UARTprintf( "upp_error_count=%d\n",upp_error_count);
& H( R9 S/ e6 O4 Q% e' W    else0 V  z) W$ M6 H1 a* y  u5 L
        UARTPuts("uPP transfers complete!\n",-2);
. Z6 _# U7 A" @9 u! \- v8 |9 Z# N: v- o& Z$ m# O; D7 l
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);0 ~: D8 j2 z: t+ T
    UARTGets(ch,2);- |$ R2 K: [' ^3 ?9 w# {
    UARTPuts("\n", -2);$ R  Z- h& |( L
; L. B1 x& P) Z* @/ K1 l
    if(ch[0] == 'y'): d! ?9 }' n: |4 J# y+ i# @  o
    {6 `$ a. c" Z' t7 l7 L
        /*打印全部读到的数据*/. U4 x! o! }. h* L8 Y' l
        for(i=0; i<upp_frame_size; )! W* e; O7 f; K: g! V
        {: V" }' ^7 O0 p9 H
            for(j=0; j<5; j++)8 k/ h' c( X$ x2 R1 E0 V- ^
            {5 Q0 Y* z* d2 r& I0 G' C
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
& A$ V! Z& i/ d4 h* R: R                i++;
- d: m% J2 R  o7 f: W4 c- K                //if(i >= 4096)
. O. [/ |1 n3 ?+ P# Y" o8 e# [                //    break;7 K6 d& U5 z( c% x$ N7 G# b

' J# ^0 r; e8 i1 |( W            }
$ C" e  U9 O* l' O. P% c1 u            UARTPuts("\n",-2);( ~8 q( W1 {. Q" Q! E$ T" [6 T
        }
+ b& z/ [7 H: e: ?- w" W# h    }" x7 w) Q7 Q4 ]  S( t! s. _* i9 Q

0 G" z4 b) N& t}

$ }% K. \7 ^& h5 k& _
4 H; A8 w4 D7 @! Z; Q7 G7 Z; \- J

& g; z! [* i% [* h; Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。: s1 O% N  f5 ]! ^, @- i' `3 r
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-2 10:23 , Processed in 0.037317 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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