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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
- z- S  A. b6 u. f* o' h
Void UPP_TASK(Void)0 b4 H! v/ m7 d5 K, {  v; X
{
' ^# I4 k3 w2 _' k- L2 u9 m  t4 ~/ c
0 z( i8 A6 x" o    int i,j,k,target_int_count=2;5 W+ z+ Y% p% X% _2 ~6 k  X
    char ch[2];4 e9 d8 T$ C9 l: t0 v
  T" P; Q/ z) D+ }& [2 o
! d; y* ]/ q; E8 z9 c; h* o

$ U. v: g/ h( g( M( o0 d    upp_interrupt_count  = 0;
5 U/ Y6 |3 m* G- `    upp_error_count = 0;
& }4 y3 N/ N0 e- w/ o  h( T9 r5 c  j& H  N; h2 w1 \
    UARTPuts("\tResetting uPP buffers...\r\n",-2);) n; u' D- U: X% A  W
    // Initialize data buffers
' d* ]* O$ U" N# f$ z* S" E    for (i = 0; i < upp_frame_size; i++)2 U* l( I3 w  X2 h% R' U
    {2 q' e2 I( a+ A) s6 B' a
       upp_buffer_b =i;
9 [. i7 Z) z' y! X/ D8 M/ b       upp_buffer_a = 0xDEAD;, X: S) g3 p/ A* u" H
    }
# c& G: Q: P  @6 }. b2 H: G; L& @
    //for(i=0;i<1024;i++)
9 J6 S5 [7 I. F' P1 b/ u0 j7 R    //    temp=0;
0 ]" p* B8 K. |5 a, E  F6 n- |7 h4 m. b
    //UPPReset();
" h3 d+ ?0 @3 G    /*启动UPP DMA传输*/0 ^/ N7 S' K! i, q7 w) t
    UARTPuts("upp_prog_dma_i\n",-2);0 W3 G; i. [3 l) Z3 f( d/ J
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;" I7 ~) F1 J) W1 J
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* z# i5 k$ ?" X( c    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
1 A' _! \$ u& M# X$ w
# ?( U6 L" q2 J- W2 K  t, ~- `    UARTPuts("upp_prog_dma_i\n",-2);
& {9 U* c0 n, H% G( i8 w' T    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;% A6 ]  x7 i# |; \4 B
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);$ W& Y3 `3 j6 w2 E; A
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);# T( Y% v9 L+ D: W6 a! n

' a$ t5 u4 t% s+ `- c+ q    /*等待UPP传输完毕*/
% h# i4 }/ ?1 H! g( R; R    //i=0;0 R0 A. r0 q* ~
    //j=0;$ k! L- G* R$ m6 ?: k
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)# A( k1 k6 o! o
    {0 i' g" W4 v0 ]; X3 b' H- Y0 T5 W
        /*  测试UPP传输的同时操作普通DDR数据! k( L9 O3 s; o! t; p/ C$ q# w, s
        temp=i;" L8 [7 r( h7 [8 x
        i++;7 G+ [; _5 G) N# P% `( W
        if(i==1024)' _8 f  L" E9 l9 Z1 b8 F
        {+ P2 a' P" \  W$ N5 S% N& p/ M
            i=0;$ ^. e0 X; @- h! l4 o
            j++;
, M8 n* [+ r  l& Y! J8 p        }
. y( Z( u4 c' s, L( \# c! u, p5 ?        */
& x. w: d! x% N$ I& N9 q1 x' Z
. P3 _- K0 ?( b0 z: i" @       asm(" nop");; z) a  b" n) @
6 j' c  M" J- @: E+ ^
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* d  p( m3 J3 A; s- `$ i; k
    }
1 @! D. I: x0 B% m, \* P- p8 K/ a. `) G1 k) E% D: p4 r
    /*检查UPP传输的数据是否正确 (loopback modes only)*/+ @# w' L5 T) U& v
    //UARTprintf( "i=%d\n",i);
" a$ @% b- {" ^  G, b    //UARTprintf( "j=%d\n",j);
2 C" D& c; r- {    UARTPuts("Data mismatch in buffers.\n",-2);
0 e6 C4 a( `, W  N6 L    if (upp_interrupt_count == 2 && upp_error_count == 0)% Z! H7 y, C2 _, k/ i0 Q/ K5 L" t
    {
( j! S" m% Q+ r- J0 T9 h        for (i = 0; i<upp_frame_size; i++)
) x, H: T* F8 v) C        {
# n+ M$ {7 |# ^, e) f            if (upp_buffer_a != upp_buffer_b)) r' u# ^! U: R2 n2 v6 y
            {
0 T4 [' v7 U& X2 X) w2 u                upp_error_count++;8 o+ x' c& G! E/ B% b, T- V
            }
, e7 G. |, t2 W( m( h3 y3 m6 x        }5 F7 m' e" X  r5 a
    }! r5 `) s0 e. L  d* y; z1 e
3 J+ y  C2 S3 K5 D
    /* 报告通信结果*/
3 G! L, s. q0 ~9 V+ T# t    if(upp_error_count != 0)# O# v- p! T( `# _8 a8 [. x5 p% d( f
        UARTprintf( "upp_error_count=%d\n",upp_error_count);! z$ b+ t% W9 b# b5 E
    else: K4 h9 g# M8 ]
        UARTPuts("uPP transfers complete!\n",-2);4 u' Z7 e% F$ ]9 L; D7 j0 Z
; ^. C: j" G3 O# m7 ?: L
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);. H, i- |7 i7 L8 p; R* K
    UARTGets(ch,2);- @  U; V. L7 \+ N
    UARTPuts("\n", -2);
0 y( K2 u' D4 v6 a
! ?0 \4 g% u4 i( \* |0 }    if(ch[0] == 'y')
) A4 i4 M% E4 g    {& b& A- y8 S- S6 V" [( X  Q
        /*打印全部读到的数据*/& H) w7 ~  p4 G
        for(i=0; i<upp_frame_size; )
, P+ ]) W: e8 ]) D: }" U8 p        {, ?1 p9 H# V; F9 G% X" z
            for(j=0; j<5; j++)
* J! W6 c, t. ?) }4 d" ^' u3 H% ~            {
* s. d, s* Z8 W$ Y' S                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
5 |5 I5 O" N- x  b                i++;
, F2 a$ L6 p$ @/ l* T  ^                //if(i >= 4096)8 M: s: {: h, m
                //    break;
; h4 b1 r0 u4 P8 B: ?/ g3 y5 P
" d2 v8 ?- ?7 i9 J+ q. C            }
% F/ a. n# I, s9 M6 t5 H6 b            UARTPuts("\n",-2);
1 F( p3 x' C  z        }  ?5 H3 a7 I7 T& z5 o+ t
    }+ y4 A4 L* Z2 Y6 V  h9 ~
  T- {: b6 U9 R5 u
}

3 A+ k2 c5 t4 U. ~+ ?7 |+ t
0 M4 l. }1 |/ d4 i) W) d
0 ^: |( k9 p2 ]5 v5 Q4 B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
+ f! P; Q1 F: u5 d% [; s2 m( y8 K
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。9 z+ \8 E( q5 F
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-3 13:12 , Processed in 0.044259 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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