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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
9 ~; K7 _1 |0 R+ A* F8 C
Void UPP_TASK(Void)
- h* T4 b* [  A9 S4 t{" A) A$ L0 ~% K' A) P! n
; \7 K" i3 w! s7 Y" M/ P
    int i,j,k,target_int_count=2;4 P* S; P6 H9 O* X7 u! k, a5 f
    char ch[2];
+ e8 l! T* h' R  F* h' ~. ^8 H# ]" N( L9 [. @. }" V
; C: \, V+ X  t$ E+ o
: X% ?% B4 p( S' J- V/ p  e' n
    upp_interrupt_count  = 0;- V5 X9 Z2 H6 _5 A* N# |
    upp_error_count = 0;
3 e3 y( L( T$ F
. ^! L5 z3 v2 Y8 [% y* s* U    UARTPuts("\tResetting uPP buffers...\r\n",-2);
. j) @, t7 f( z. G$ b4 C    // Initialize data buffers% `$ E' D! X3 \% B$ E
    for (i = 0; i < upp_frame_size; i++)1 }# i" X) K9 u7 g* l0 ~
    {
% h: T0 L* {5 \5 k       upp_buffer_b =i;
/ Y- @" g2 @) X3 z# x( h       upp_buffer_a = 0xDEAD;* P& M; p8 f3 B) C7 n: T
    }! R$ w9 P# x5 ^

1 y* V, {+ y" C/ A. D    //for(i=0;i<1024;i++)) h$ p2 i2 _% J2 H. a3 k
    //    temp=0;
: R6 u3 w7 ]; h: n4 r. `( P: @  Q0 n
    //UPPReset();; M: e+ s6 C1 E
    /*启动UPP DMA传输*/, P) B6 ~' S+ Z  a& l0 q3 |" R
    UARTPuts("upp_prog_dma_i\n",-2);2 \( o) f+ b+ ]9 I% t% k
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;6 s8 R- v* A" G- ?8 |  c
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);3 Q' R4 U6 x# |* t
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
# f1 `6 B# {9 U  I5 x
$ I5 \) _, Q! g- N" [- j" F    UARTPuts("upp_prog_dma_i\n",-2);
+ J7 _2 q; N% m    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;$ L3 x  k3 y) A5 h3 q/ L
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);4 K9 e" h, E) @2 m
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
5 P% a% f, d8 A( ]+ e# J& Q. ?, O
    /*等待UPP传输完毕*/
" @8 y& ^6 l6 B& s9 }    //i=0;7 a- ~# l; k$ [  S, p8 N, o+ T
    //j=0;; H) B& P& ~9 x9 Y$ j- }
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
7 }: l- k( u, H- ?* ?2 `# [' m    {
( x/ T* J. ]6 E/ _( A        /*  测试UPP传输的同时操作普通DDR数据
7 X: A* n* K1 |' f# E        temp=i;
" [7 J' R2 r2 u! s4 y9 H; g        i++;& {" l  X  |' _0 t3 O! k
        if(i==1024)6 V1 U" {0 y- W$ r! g
        {
( i% M! U* a7 [) Q            i=0;
% M0 N" ]( M4 H. C1 e) Z            j++;
; p/ S; C. f. x2 d; r; \2 m& q* _& _9 a        }" z& }- F2 R% K/ h* o0 a
        */' Y) R: K( O0 l

, G9 S, T7 _3 U. b0 `& @2 N- v       asm(" nop");
( ~8 D, H$ l! U5 e+ \5 H4 x
( O: W& t0 [6 N' F# X  L       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);$ I& d$ D3 e# b
    }+ ]2 K$ T: |3 m9 L

: O2 h6 p* Y2 k: Z    /*检查UPP传输的数据是否正确 (loopback modes only)*/1 k- y/ H2 t& Z  R4 |
    //UARTprintf( "i=%d\n",i);6 M# d7 o' H  b9 _+ W
    //UARTprintf( "j=%d\n",j);& Q* J6 k5 f: E2 }  m1 r
    UARTPuts("Data mismatch in buffers.\n",-2);- k- R( k+ V2 I* Z& u9 r
    if (upp_interrupt_count == 2 && upp_error_count == 0)1 t+ C" C3 O6 j
    {
. F& p% a% o; s        for (i = 0; i<upp_frame_size; i++)
$ B  J( N5 L% A- u7 D        {% J0 F8 X& L0 d
            if (upp_buffer_a != upp_buffer_b)
% w# b+ G  }6 m( P- j1 e            {
; i& z0 [7 z# t6 N                upp_error_count++;* M" X+ V: b' J4 B6 ?
            }% S; r- ^: w  y; D
        }7 y; j" g6 t% ~# A
    }
; e2 `0 U2 _6 I. ^& n- X
  r# a8 }" ?8 _1 N% S& C! Q    /* 报告通信结果*/) p! E8 R5 A6 n9 L
    if(upp_error_count != 0)
3 |7 M8 A  ]& m        UARTprintf( "upp_error_count=%d\n",upp_error_count);' z; H5 z/ `$ M" i7 c$ w
    else8 w) f; M* G( ~: Z: v6 D
        UARTPuts("uPP transfers complete!\n",-2);* O0 I* a: v8 L# U9 {& @' D8 S
% `$ f6 W/ ~* x3 V+ Z7 t
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
5 q" c, @! l: B& R9 a    UARTGets(ch,2);
2 C* Q* G+ M1 b( A% G8 g1 W. {    UARTPuts("\n", -2);
; d+ r( V# M: g# X: }. }. [- s4 i$ a; I
    if(ch[0] == 'y')
" j5 M2 x' ?% u0 U    {: o9 Y7 j9 K( V- N6 A6 q+ Q) V
        /*打印全部读到的数据*/
! y, O. V: U1 ?, X! h$ v- [9 x        for(i=0; i<upp_frame_size; )4 L! \$ C  H2 a
        {* R8 d3 U4 y2 |2 o3 S# k% i6 U
            for(j=0; j<5; j++)* p( f2 N( S0 n: S) W
            {# u" r0 G% l# R+ \/ H; `0 ~, Z3 f
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);! M  \0 n9 K( U  ]
                i++;
" i. X* g- Q5 Y" W' ?( b) I                //if(i >= 4096); d3 f: e8 \2 t) v8 d. X1 z1 P
                //    break;" J- j# J6 p! C
# X) s  T- k/ D* P" n- ^6 m
            }
  t& F# d) v. D            UARTPuts("\n",-2);- v  [0 C3 {! y% A9 R
        }  {1 K/ |. Y' l5 A3 l. p* Q
    }
/ U2 w& Y% F. B2 g' G& i9 J0 E4 x8 o6 P. A
}
5 \6 `, I4 M) m: h+ W/ F
* A! Z+ p; d6 \0 a8 W4 C
" d/ `) M0 M- r  [* M9 j, z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。" O2 e1 s8 c" q. W! U# R/ S
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。* J! ~) _: W% a' l6 w8 e9 p1 J
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 00:25 , Processed in 0.037097 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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