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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
3 d1 Z, H8 ?4 P* C1 Y2 R# n" N
Void UPP_TASK(Void)
) g5 X! s' n: ]) u2 _1 Y{0 Z8 q2 m0 u  r, z9 z% y0 Q  Y
, p0 o9 f; A; I
    int i,j,k,target_int_count=2;' [. |7 r+ C9 Z/ e8 ~( ~
    char ch[2];
5 a1 u0 o; Z7 P. B) _3 b& L) O! M% |8 i7 y  M

, a5 o* k: h, n8 U" Q# R
' H" ~) o# q+ R8 y8 r1 v: @. \    upp_interrupt_count  = 0;- b8 v. b3 L: N$ v7 U0 A4 P5 K1 u/ u
    upp_error_count = 0;
2 J% `% p5 _! w
7 x1 e  w% N3 {* M" N. \    UARTPuts("\tResetting uPP buffers...\r\n",-2);0 a  `% a" D- x7 R4 n
    // Initialize data buffers
# T$ C, k. e2 v5 ]    for (i = 0; i < upp_frame_size; i++). _# Q) F" M( e! U
    {. q8 T* ~. ]' D- |3 d
       upp_buffer_b =i;! _/ |, ?! U- u/ Z
       upp_buffer_a = 0xDEAD;6 v+ D" Z; a7 w, Y
    }
8 g( w9 H  d0 O! a+ w3 W- \' P
* k/ J9 e0 d. o3 f+ P% N    //for(i=0;i<1024;i++)# I! s! k5 W' y, w; D
    //    temp=0;' V( X/ G& F- c& W% ?4 z1 `) Y0 Q
0 f/ O( U5 v0 x; p6 I2 h4 {
    //UPPReset();
% W. I) t3 x3 k% P" T- u    /*启动UPP DMA传输*/
4 v" w( V+ M$ }, a    UARTPuts("upp_prog_dma_i\n",-2);! H1 z  o' f/ b
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;3 d9 s$ x6 C" o# M
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);& V8 s4 |6 `; A, O! i! ]
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% l8 P6 r$ S" G. e' g. W. h# J( P$ L
. Z! [+ J: o' K( H  ~; ]    UARTPuts("upp_prog_dma_i\n",-2);  |7 s! l' F+ e
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;  C- ?6 |' p8 J0 Z( P* g$ v
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
8 P- e9 C- @6 B# T% y' z* u    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);2 q9 M* L2 q& c/ \) [( `

5 y3 l& ?- h5 K' R! U    /*等待UPP传输完毕*/; y7 V8 R. `% |; l9 A* K$ A
    //i=0;3 r- Z( V' g% A9 Q
    //j=0;
* ]. J0 V) q% F  b# }; }    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
. H! P$ O3 g' y) _( ]' S7 v1 v( F    {3 H6 n' [7 S) \4 s: f1 h! z
        /*  测试UPP传输的同时操作普通DDR数据8 {/ t% H1 v5 `/ t; O; p
        temp=i;3 Z; O  y9 X( a- W$ t
        i++;
" Z- ~: Q9 j6 W        if(i==1024); J4 h; h$ F4 _5 N2 p
        {
& ]$ P& Q. `* w- y0 {9 \            i=0;
6 M; [9 R* J: y: M6 n: Y% z% Z* ^            j++;
; M# _4 V' e2 y! x        }- k2 J" Q" l# K6 L/ @$ }5 k! K2 T& ^
        */
+ [! U8 `" @  \5 |2 |. b
+ D' |% b% d, x- }6 R" ]       asm(" nop");  a' @2 C8 l  u+ o2 ]
+ N5 U% f( u' I& m. c. u; {: a% p
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);  q: c2 p/ d; E( h2 o
    }
3 P; g  G! `2 g2 |1 S/ @. ]
( b/ e' J! _  c6 \8 V8 C/ X    /*检查UPP传输的数据是否正确 (loopback modes only)*/! M# h& W: B1 u! E, g
    //UARTprintf( "i=%d\n",i);7 h, w- R0 A& i$ q# H. v. j6 _
    //UARTprintf( "j=%d\n",j);2 [$ o2 Q! S1 C9 U, h+ m( |! \. d/ m
    UARTPuts("Data mismatch in buffers.\n",-2);
! P( e. w5 w; ]7 d6 x. j4 q& f    if (upp_interrupt_count == 2 && upp_error_count == 0)
# F8 q: u2 [1 p8 C    {+ |1 Q: A. w1 p4 ^. k- h0 G
        for (i = 0; i<upp_frame_size; i++)4 l3 i; ]/ }1 n: I; O- \( `* v
        {
) x! l  e, v$ E% e9 ]' l) R& j            if (upp_buffer_a != upp_buffer_b)' F  O9 B+ |8 o, {
            {
. z( q) ~# s4 C1 u/ W                upp_error_count++;3 w: Y1 W+ F/ U
            }
- L7 X! Z; `2 i. G! f7 a: V7 q        }4 N5 `  w3 A! @1 e9 c- ?3 J
    }
# {+ s+ v1 E( B+ P# Y& X
5 o  a/ Q- G2 ^- Q- k. _+ U1 M    /* 报告通信结果*/  I- k0 v: Y- G
    if(upp_error_count != 0)7 w) v8 V" G# ]6 l
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
5 i/ U: ^5 S" j3 T) c    else
- W9 W9 C$ c4 Z2 o5 h* J4 f; R* f1 Y        UARTPuts("uPP transfers complete!\n",-2);( R  |) K9 |9 Z/ v

5 Q5 k+ P9 g0 R5 [6 L0 ?    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
! k* q! L  I2 o! `3 A# {9 p5 n    UARTGets(ch,2);9 C5 @1 }0 F$ W" d% F" m; g: @% [/ B
    UARTPuts("\n", -2);3 X* x  r* l) g3 r
5 r: w+ h+ X3 _7 `1 ~4 s5 I/ B
    if(ch[0] == 'y')1 {  @0 a' L) V' f" c/ E( M
    {
1 t5 x* B3 Y  }7 ~* r        /*打印全部读到的数据*/% U9 \' S' q+ F$ S% ^! L+ L
        for(i=0; i<upp_frame_size; )
3 T! i7 s- K: _5 h        {
. C( Y6 Q% h- s- Y" H3 M& p            for(j=0; j<5; j++)
3 r3 Z# N3 _$ @6 U" r            {
% A3 m! _) E2 r0 n2 r$ ~                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
" J/ y$ Y% v5 f9 K5 h: u                i++;
9 @1 T: c  N9 a' q                //if(i >= 4096)
$ P- x7 Q. a$ ?7 \, p$ g- F5 ~  g6 _7 \                //    break;
3 c6 w8 C% x, ^' a' [" t4 R
  i8 x; t: v/ a/ D            }; [. k& `; b* b* G
            UARTPuts("\n",-2);; _3 i2 j* V8 H- C: l0 w3 s5 }
        }
/ B4 K' p$ ]% G& `# Y    }! p$ ?* \8 j5 |6 \/ ]! [3 W! _. H: W
, b" r6 V! N5 M) i9 @
}

9 d% E- _( U7 P+ d' ]
1 X, b( K' ^7 k& |
9 F! z2 s; O+ E. w! T' P, b1 q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。; y: l& s4 o9 b* j
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。8 l- s5 ?7 e* V9 t$ F- I. a0 I
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-17 22:03 , Processed in 0.036706 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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