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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?% F! Z' A" i8 B' Z+ ^
Void UPP_TASK(Void)% ]6 ?' V2 e" `. R
{0 i4 c. ^5 q! W! P+ `% Y' z
: N! {1 L/ T' T3 ^0 Q
    int i,j,k,target_int_count=2;, T/ c8 h. `. N$ e2 [" m
    char ch[2];
: ^/ ?4 s2 _) T  N* h" ?5 A5 Q7 {! B
' \" C. h( |) R  F2 N
3 Y" B2 `5 [& {& O: L4 o6 J
    upp_interrupt_count  = 0;  b, j" P0 x( V. C9 m% ?
    upp_error_count = 0;
* W! B  y" k, _' ~/ ?" f' c$ I7 {+ Q4 y6 C" F
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
1 R3 e+ I  s5 b8 o) V  R    // Initialize data buffers
  D3 D4 X+ _: a7 B2 j% N    for (i = 0; i < upp_frame_size; i++)5 u$ ]! C* j& z* L( Y
    {5 i! O- d# w- ^  A" p
       upp_buffer_b =i;" f9 J. d) {6 d( ~; b8 n' o
       upp_buffer_a = 0xDEAD;1 h( V! X, Q( ?( M2 d0 B8 T) u
    }
0 A- j. C' N! h5 `: }( m/ h9 ?
" p! Y# D3 b- E    //for(i=0;i<1024;i++)
) @8 C9 m6 ?4 b/ v    //    temp=0;
( n) c( T- b# S4 K
+ w- H8 \9 A) t9 A$ f    //UPPReset();/ o% ]' [  G( o) z: n) ]
    /*启动UPP DMA传输*/
$ O. c, Y& K: m6 F4 K3 D    UARTPuts("upp_prog_dma_i\n",-2);
* q; O" g! u/ i    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;/ I6 |1 p. d- j' o3 X
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);9 z( @8 V3 }0 ?7 @' r6 @
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
7 z9 B, a5 x, p) h4 g: u# \0 x( ~, O" b- _0 C0 x: e% O
    UARTPuts("upp_prog_dma_i\n",-2);% P; A" U* J9 J  O3 p
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
/ u2 D5 p3 N& z" K3 `' E    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
: P0 N% c+ L" {4 G* B    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);5 P5 v; X# U* }; Y5 h3 V
7 ]) ]+ K; N  r% X0 Z, m7 H! [
    /*等待UPP传输完毕*/! `& u! ]2 v: G3 L" R
    //i=0;( F  Z* H( p# s3 i( m: `9 W- a
    //j=0;8 x! |7 u3 _) N1 a( E9 y7 E
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)1 Z2 _8 b" _, ~. X
    {
: d/ G+ X" N# g6 O$ g        /*  测试UPP传输的同时操作普通DDR数据
; ]2 E3 ^0 @% K  m( I        temp=i;0 f/ T" g* x& \. ~: J
        i++;# ~, P- i! l9 @# {5 l0 q, Z
        if(i==1024)2 I3 a) f  h1 r5 w* s/ c/ l
        {
3 k3 N; i; X$ ~2 t8 V            i=0;! C2 n4 X5 ?# r( y" H& h6 p
            j++;
2 \, d) [; b6 P# |5 N. Z0 ^        }# {$ u& ]( l, v# P# Q
        */  ~: H2 [" Y* O3 A% f: w
- i% _2 J2 l! S7 g
       asm(" nop");
/ g3 G* N, H! s" Y/ [
2 ~9 m# [$ [* l( `8 b9 T/ g       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);8 l! x) o; j4 ^9 v* s
    }; q6 \; Y! v4 {* k" h1 e0 J

1 g& W& n. i( r9 D' v    /*检查UPP传输的数据是否正确 (loopback modes only)*/' A+ g( N* g4 o5 p
    //UARTprintf( "i=%d\n",i);* M" y8 Z1 W& P
    //UARTprintf( "j=%d\n",j);- B* l- P7 T+ N4 ~% G" M
    UARTPuts("Data mismatch in buffers.\n",-2);
/ j" d# D& T! g/ {    if (upp_interrupt_count == 2 && upp_error_count == 0); L* o% w2 H& u/ |. G3 Q/ H
    {
. R$ i! H9 ?; I( w( j        for (i = 0; i<upp_frame_size; i++)! @3 l' c. ]& R( ^2 R1 _
        {( q8 b" t' M1 y, F% b3 L
            if (upp_buffer_a != upp_buffer_b)3 U" F) i+ l9 w: C
            {5 G. g% w! U1 z
                upp_error_count++;
- }; x% k; i* J6 O* U( q6 C            }
  h- a, y* M+ b% i9 N5 i        }1 o& w! J* y/ ?
    }& G5 K1 p/ h5 h3 i& T$ H

& ]( ?) T& {! D% U$ Y7 v    /* 报告通信结果*/" d! h" {; C0 m2 P
    if(upp_error_count != 0)) }0 ?' H# o( X9 m  Y; M
        UARTprintf( "upp_error_count=%d\n",upp_error_count);3 [3 g2 s) [) Z* X2 R
    else3 H+ Q9 Y& t1 ?- f7 f4 ~8 C7 B
        UARTPuts("uPP transfers complete!\n",-2);
, x: w# X+ |: @6 M) p5 V+ g# l4 ^0 I- U! d0 [
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);$ Q' L  T6 y2 o5 o! ?( h2 l/ {! n: g
    UARTGets(ch,2);
% |8 a9 J  K- A    UARTPuts("\n", -2);; `5 |+ M7 B& M4 s5 @8 p

' p3 _/ [- q# z' N    if(ch[0] == 'y')
" ~$ u( X' k% x' c: U% a  @! d9 P    {. g3 X6 W' k) {, E
        /*打印全部读到的数据*/
/ |6 k( j2 f* D- h7 I! V        for(i=0; i<upp_frame_size; ): W' e& I+ z7 z
        {
7 J) E5 A0 D; @& o3 n0 x            for(j=0; j<5; j++)1 p$ L' z: B4 ?4 X% W6 l/ S6 @
            {1 Z. |# h! X* C2 U5 N: f
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
( c, G1 P# w1 z$ N8 m  p                i++;
8 Y5 c, I" B7 d8 l                //if(i >= 4096)
3 n  ^$ _4 P; X/ |- J                //    break;7 C0 M- Q" ~+ w7 F7 z+ o

  e3 l/ v- n1 K- K8 ?$ _1 w            }' S4 c7 v% M1 k- t
            UARTPuts("\n",-2);
3 \0 U. H; L& h% n1 z8 w: c        }7 \: t9 l. N; l0 l6 I6 W
    }- d$ u7 ~! |1 {; c/ o
" G! V+ t$ K. i1 F5 X6 U( z
}

2 ?9 m; O4 Q" u

, w4 X, L& v# i7 ?7 P* Z# W2 m
/ h% u1 `$ o7 G" v4 K( e1 B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
  S: A1 B' i8 m4 D- ^% t: J
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。: ]3 f$ A! |4 \
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-2 14:28 , Processed in 0.038036 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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