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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?0 d7 {8 \0 G0 \
Void UPP_TASK(Void)
& G, D  P1 }4 z' s+ ^{7 M0 c5 O3 P( M& e, z  \: z% D" ]

/ E- f2 r5 U  q( H8 h    int i,j,k,target_int_count=2;* _2 X4 r* [; E7 A- @, ?1 w0 I0 M; k7 Q
    char ch[2];! W1 m, F- s2 i0 A

2 D3 u; ?# }0 D$ {8 g2 c2 U# O0 g' \0 d2 n: _; E
% H# k5 M- n# \  w
    upp_interrupt_count  = 0;
" B. s' O+ |1 z* N2 R: |    upp_error_count = 0;. q( [; r# @9 i

2 A! [; W* w6 n$ n9 j1 L    UARTPuts("\tResetting uPP buffers...\r\n",-2);
( ?3 m2 J# i, I: ~  o    // Initialize data buffers- u3 I# z- Z% Q+ _& Y, _, ^: i( Z7 I
    for (i = 0; i < upp_frame_size; i++)
* f& c6 N" B; v* l! `    {
  `, M& l* p; k5 r; Z! A; z       upp_buffer_b =i;
8 Q! V" K* R6 u* {6 h3 W6 a/ M6 l8 G       upp_buffer_a = 0xDEAD;1 e, h+ Z: X& R; q
    }/ m) o) I( r$ c0 Y

0 O2 M( R$ V0 c# `% f7 ~    //for(i=0;i<1024;i++)
; ~/ o# F1 }' ~1 m8 ^- c% p5 c    //    temp=0;
8 g3 {' C7 Q# t( u3 d6 S# D6 {, p# s0 x" K6 \4 {: i1 x
    //UPPReset();* ^% j* t: F2 g& q& H5 D" n
    /*启动UPP DMA传输*/% K" i5 [. u9 M0 _2 [' O. b, Y
    UARTPuts("upp_prog_dma_i\n",-2);' T5 ~. Q. a0 i9 [: A
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
( u) @" F9 I! {- {+ G# {    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);) I9 z( N  q0 J$ Y6 m3 {/ c
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
; c5 I# ]$ W$ f( [) U3 q; Q; S
" Y" k3 X# `- B6 o9 z    UARTPuts("upp_prog_dma_i\n",-2);
! W. s4 y* F! r6 Y( |9 V$ Y0 t    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
: b6 v5 \8 G/ O6 k  I* S; m; e    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);$ i, T5 ?3 ^- x' N" S* W) z8 o. T
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);4 K9 T" J4 y$ W/ M& a0 B1 d
1 `: j/ U- f4 s& N, b
    /*等待UPP传输完毕*/
  f' @8 H. b4 C    //i=0;* o' l2 B; @% p2 x4 D! V( Q6 q
    //j=0;5 Y! R/ D/ X+ k7 {) R! ^9 Z& M
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)& v1 G. C) @% I: N9 w
    {# S; b- [* q9 [: N
        /*  测试UPP传输的同时操作普通DDR数据  j. G+ n; u! H/ L
        temp=i;/ r* \. i* F# \! I: U9 a  ~
        i++;# n$ P" w; e/ F6 G8 w  G/ Q# ~: z
        if(i==1024)
) r7 |- ?2 w$ p) `, A1 e        {
& V8 k$ E0 i4 q: X: m5 U            i=0;
% H9 j( r$ \( K  R8 }0 l: N) h+ G            j++;: }, a% X) H3 L/ f3 d! m
        }
9 d) {. e$ H8 v4 J6 b& v        */& _+ a( N0 `1 c' L- F; @# s
5 ~: {3 Q' ]1 y1 `8 r
       asm(" nop");- W2 ^$ r/ u% c( P' l# t/ |

5 w0 e. \: D5 M' a       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
6 y. _& X; K4 M    }
* |6 }* k$ }. Y/ p' Q7 w0 R+ {/ N2 W- B; M& Y( D' k% }
    /*检查UPP传输的数据是否正确 (loopback modes only)*/. N% F7 W+ a1 f1 z2 r" s
    //UARTprintf( "i=%d\n",i);! a0 u0 [) w% x; ^" O
    //UARTprintf( "j=%d\n",j);+ ?1 g) ?' E7 K. H. L( b% S
    UARTPuts("Data mismatch in buffers.\n",-2);
0 y1 b& Q! S0 Y; }  g    if (upp_interrupt_count == 2 && upp_error_count == 0)  P" ]3 |; I- H# }. c  w9 V
    {4 ?5 x8 k. \! |
        for (i = 0; i<upp_frame_size; i++)
& M) n1 B6 D" k' Q        {
6 e3 x2 g$ c1 f8 v/ W7 g            if (upp_buffer_a != upp_buffer_b)" m# x0 f& W5 d/ n  K8 |
            {: g+ g$ @7 F! k
                upp_error_count++;
0 y- v2 R3 U0 ]0 F  ^, q            }" z$ v7 E9 m6 f- q$ y
        }
6 B! N1 @$ ]: x8 l6 C/ t! `1 W    }
6 w9 v1 T: a% T
$ Y$ O7 ]( s9 N9 P    /* 报告通信结果*/# k8 {% q' e% P1 i% n0 O; h6 o* ~
    if(upp_error_count != 0)) n, \& U& y& Z$ C% s
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
3 t6 |) ^! l1 J    else% U6 R: `8 `2 h
        UARTPuts("uPP transfers complete!\n",-2);6 }- ~- M& J6 L! |

/ _/ u2 U* U) v9 E. M) m    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
- Z8 g! H+ D0 t( S* x! Y9 R' E8 h    UARTGets(ch,2);. f  g8 f) _4 O% P+ u# [, M) C
    UARTPuts("\n", -2);
% K5 `  C  A4 l+ ]# z
$ ^6 a6 _% C: l* B) u9 M    if(ch[0] == 'y')+ |6 U- o8 I' T/ y3 i2 K  J
    {
7 u- r# i# m+ D2 i        /*打印全部读到的数据*/" l6 S8 q( ~. n5 T
        for(i=0; i<upp_frame_size; )8 X) \) [! O2 X7 T
        {- P" s  ~% t2 ^' o8 U0 \9 r
            for(j=0; j<5; j++)5 ^- `- E: A0 Q; i, D
            {
" u8 k9 R' d, B  f2 S                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);. F# R; k. X- [3 ?1 M, l9 v4 r$ E
                i++;
0 r# q& e/ v0 a) R$ l: z                //if(i >= 4096)* U8 f6 v: t( @) o+ q( I
                //    break;
! j& Q: W. U& |- E( P; q
- y) h8 _6 Q6 `+ P            }- x- m3 k' ^! i5 E9 R
            UARTPuts("\n",-2);
) z7 C+ ]9 N* n/ w$ m& y. f        }
6 t) d1 d. d7 M  D( d! D    }
* [3 O2 @# y1 h3 L8 p' D+ W- `7 G% E' n/ f
}

9 w  ]- {0 A% L+ ^) w
2 |$ B, ~6 p) c' O

5 Q) B' h2 b# g3 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。0 ^9 r3 D! B1 C/ B+ \
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 15:03 , Processed in 0.042153 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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