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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
& X% c: }+ |0 E5 R! H% @
Void UPP_TASK(Void)$ A+ H' ~3 w) D2 d; e1 W
{
  H  G# I5 x8 s; m4 o. c7 u; d0 x* S6 e
    int i,j,k,target_int_count=2;! ^1 C! }, l/ n7 K  p, p
    char ch[2];0 m4 X% L2 H( Y7 w, h+ k8 k6 j! K
" J( R) S0 T, ~% `' V
6 c) n" k) }8 g

& T/ i: O2 d+ q) `    upp_interrupt_count  = 0;
- x2 c' k1 n9 N" G# E  y    upp_error_count = 0;
7 D8 `; v1 Q: p. v8 p7 X* s4 R- i5 M
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
1 Z. F& Z3 Z( Y& `, F( t    // Initialize data buffers3 Q& T9 y; C: Q1 K7 w
    for (i = 0; i < upp_frame_size; i++)% h) N  k5 |! S  I
    {
2 \. \/ z5 h, C& H       upp_buffer_b =i;+ Y! C9 s. R6 R6 p5 ~
       upp_buffer_a = 0xDEAD;
8 ~, H7 d, f; S. S. Y; X    }
% D" J* ?! _1 k9 D: X4 e$ q# _
0 ?5 n# }- G6 t* b! u    //for(i=0;i<1024;i++)5 |! ]4 b& S" C- |
    //    temp=0;
( i( T7 Y0 M3 u# H+ S9 A) \) ]0 W) |* q( C' p( `! h
    //UPPReset();
8 _6 C5 U2 l# k5 A- X  h# o( f0 a    /*启动UPP DMA传输*/, ?' P; z( I+ J5 E3 w/ j
    UARTPuts("upp_prog_dma_i\n",-2);/ I6 l, u2 J  X, f
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;' f7 L4 U( L$ ]3 k+ \& q
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
( x# p! q3 J* X% u* H4 J    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);# J8 J5 n4 [  q! u) d
. w8 M7 l: ]) ?5 q. l
    UARTPuts("upp_prog_dma_i\n",-2);
7 F; t5 o6 }  v# i    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
' C) U) u% [" V0 g6 g, u    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
( D0 N* ^6 c9 {; A, d' l1 c3 O* h    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);8 |- u1 [% k# P) Y& p
* ?2 P% l, w/ n% k. e( g; E- L
    /*等待UPP传输完毕*/
* c0 Z+ [8 B) d  R    //i=0;8 F$ M7 ^/ d& G8 [  ?
    //j=0;1 ?- U% N, W5 B5 j$ \. l
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
9 [! E7 T# ?7 z4 x3 i    {- L! O/ H" W. \3 u  L) `
        /*  测试UPP传输的同时操作普通DDR数据
+ w* m$ {$ j. U/ H        temp=i;5 _9 g( N/ W1 H
        i++;
% E# J, {  S1 }, ^) H4 o        if(i==1024)
+ p2 e' i$ e# v        {
$ x, ]# u5 {5 S            i=0;( y! t- r6 P( @4 _/ z
            j++;2 M* }3 Q7 {$ r$ ^
        }- C/ J8 _& d3 x2 Q% q& f. H! h0 t
        */
3 S5 M1 E' L/ d$ p6 P  Z; b! n# G0 F  L, K6 d0 @
       asm(" nop");
( m( I9 O0 \7 B) N1 O+ }2 B
9 A% ~3 W) Y% o2 T2 G. P7 y) q       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
4 K5 m; G1 N0 G5 t$ c1 S    }! Z" M2 ^0 u; d( |

* b& F; Z+ G  G  k6 B5 Q5 }    /*检查UPP传输的数据是否正确 (loopback modes only)*/" Z: H1 z2 @4 T- D$ J) O7 J
    //UARTprintf( "i=%d\n",i);: B2 E$ Z& g  H! M) |+ G
    //UARTprintf( "j=%d\n",j);* V. j0 E( \1 G4 a4 G3 L
    UARTPuts("Data mismatch in buffers.\n",-2);
, Q1 X# I* l* [5 @# k, k1 d; i# g( J    if (upp_interrupt_count == 2 && upp_error_count == 0)
. k5 `9 Y. ^) X9 K* K7 J3 n    {" j- q! \) U6 `7 r. G9 v" n2 h
        for (i = 0; i<upp_frame_size; i++)
: y. @" E8 K; n        {) q5 \7 e' o% P3 w/ L* H# t
            if (upp_buffer_a != upp_buffer_b)
0 c3 `8 C7 J' {  a, a. T+ o4 x            {* x8 u7 s) }! Q& U9 `% M
                upp_error_count++;
0 s( T( p+ l: d/ ?6 @            }
$ |# t3 L9 o! w, o5 _4 T        }' g+ j6 R; @% s/ Q- o
    }7 h3 Y7 A/ u# d7 w$ e$ B( C0 t! `
# @4 y; o) R% w/ N0 T+ U5 V* A
    /* 报告通信结果*/
2 Z- i( G5 _( h( S( |    if(upp_error_count != 0)
, U# ], x/ I* k  H1 j8 k        UARTprintf( "upp_error_count=%d\n",upp_error_count);( |7 j  h: V3 i: S
    else4 p% x% `9 t7 H# h& i
        UARTPuts("uPP transfers complete!\n",-2);9 k* P$ Z" x- b; f+ _! m2 a& F  M
3 D( l1 V4 d  `4 H% E
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
- y5 R! O( f" F* y9 k    UARTGets(ch,2);
: l, Z4 p+ y9 q0 c  O6 c    UARTPuts("\n", -2);" I: _$ u# a, W* o* D+ e5 H
& m2 a  n3 o2 S7 ~: n+ j" M$ Y
    if(ch[0] == 'y'); h/ R% P0 l. M% }0 k
    {
, ?9 A+ J5 W0 s0 O1 c% ]2 H, C9 O        /*打印全部读到的数据*/
3 z. z3 C, _  S- z# B        for(i=0; i<upp_frame_size; )  Q3 F* L# J( U1 u  D3 t0 V+ l$ K
        {! J% P# ]1 A, T- g0 k
            for(j=0; j<5; j++)8 O5 g8 f) z9 v
            {
5 ^7 S% \0 w0 r, y1 l  x/ w* @                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
5 r* @* T4 }% r$ `) J                i++;$ `5 ?' ]3 x, {) D% \0 _1 c
                //if(i >= 4096)
  k- g( I& s! h/ Q6 g                //    break;
* m, Q# B9 V: p/ p: X' f/ V, W( g' k: T+ D
            }
0 v0 Y, t7 N) p5 V  X. ~            UARTPuts("\n",-2);" U- x2 q# q$ t2 b7 [) S& _
        }
% S& ^. p( z$ B5 `& ?: }    }4 m% q6 X8 K" F: D- m

$ a& n9 p4 p! S( i1 V" _$ |}

& x, l8 J8 Q8 R$ v* K1 l
0 B9 _, s, p% l4 u: L' u- u( Q

& Y( k7 f* h5 E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。" t- l3 a+ z' m1 I
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
% _0 c; k$ g, S9 Z$ k4 a( e) @+ Y) q
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-30 13:26 , Processed in 0.046618 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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