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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?- O7 B; @" {" l$ a
Void UPP_TASK(Void). O( K* f9 L3 I) B2 D4 C
{  `/ |/ O1 _9 e1 i0 Z
+ V3 U8 S0 s; p1 C% [5 W6 V
    int i,j,k,target_int_count=2;
4 c. }( f. T0 N# h    char ch[2];7 y0 H) y' _; T, W
3 M, R. Y4 }5 U. K! S7 T" @" S

( t0 w. X4 @" s, d0 J- r* w+ U5 ?1 }( h
    upp_interrupt_count  = 0;( S& L1 S5 Z: j( E, Z
    upp_error_count = 0;7 I$ g' ~" _( _: F+ n% I' P

7 a9 [) }+ \/ K* U7 A: b' D    UARTPuts("\tResetting uPP buffers...\r\n",-2);0 [! N5 g) l, B' h
    // Initialize data buffers
2 }/ y# }& b$ }% s* J& C7 s7 k$ Y6 i    for (i = 0; i < upp_frame_size; i++)
6 D& o# t. I& d5 I0 p; t2 M0 ~2 W' o    {
8 Z( R2 p' H! ?6 M: p7 a* M       upp_buffer_b =i;
( I2 w6 j: q# x( R6 V7 M& s       upp_buffer_a = 0xDEAD;5 {* q0 [- A9 O" V+ }
    }" u: \" L6 N0 r! h8 U
. F  t- Z: y/ r* p4 |/ p
    //for(i=0;i<1024;i++)' s- O/ Q9 ~3 c9 i4 U9 h
    //    temp=0;
7 s3 v1 F4 ?  h8 u8 V( [6 o5 F' q4 y0 Z# z
    //UPPReset();
3 P+ `8 [  a. @# s    /*启动UPP DMA传输*/) p! {' I1 P! l* k& N
    UARTPuts("upp_prog_dma_i\n",-2);
! |6 w' w6 J. X# P# A6 l& V    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;& _: ?. E' F, ^: ]9 M) H" _& j
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" r' f3 Q: Z/ E7 `1 S5 A    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);/ G, t0 F5 z/ ?; T1 y
, u+ L: ^( o) u( C: A
    UARTPuts("upp_prog_dma_i\n",-2);" Q- D, I0 q# i9 `, z  M
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
# F- y" p& K! T; X8 Z4 S% B; t    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
) k5 b  {( A& x  S- k    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
  t& D8 ?3 Q& ?+ i9 j* d: i) O5 G: ~$ T# [, r7 Z
    /*等待UPP传输完毕*/
4 n3 u$ [3 m# i0 D8 o! ?    //i=0;: |+ |9 f# u  i. o! h% E% m
    //j=0;, w6 M/ X3 W6 ^& y; e
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
3 i  `( c7 |( I# _* W! W, n& Z6 y; D    {
2 y; s8 F! W3 l: b3 O. F: @) t        /*  测试UPP传输的同时操作普通DDR数据: J" ~' K6 }# T6 F5 @
        temp=i;
' p6 L( u7 d! ~5 ?  Q% d1 g2 _: @        i++;
: c4 X8 |; l% r0 t9 o. l3 |        if(i==1024)( Y, q+ R' W( p% ]
        {/ |7 w/ v5 p  K" h3 O
            i=0;
* U/ g0 ?( \; R            j++;  {. e" l. A, H" L" f
        }% S& p/ [% K- l7 v& }/ j
        */- L! k# U) J+ ^4 m* ^/ U. p
" i& M4 w" F2 {) d6 T1 r" `
       asm(" nop");6 Y( D* D" U1 b  Q1 o
& Y; c- Y- r  O/ M7 r
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
- C; E( J2 j8 {& t  I7 b* `! D    }7 h6 o' A6 e* H9 `0 u  q
$ {$ U7 x3 C/ R4 v+ k
    /*检查UPP传输的数据是否正确 (loopback modes only)*/0 ^$ M6 I. ]4 |
    //UARTprintf( "i=%d\n",i);
2 ^" a2 s2 H2 a0 G' t    //UARTprintf( "j=%d\n",j);
1 k& A9 b" D- B/ y8 d: j" s    UARTPuts("Data mismatch in buffers.\n",-2);
. K: p- E% N4 f5 z# x+ v; _  ~    if (upp_interrupt_count == 2 && upp_error_count == 0)
( p9 i( |2 N; T2 {) J" ~7 H    {
  S* g% Z* `( j3 p        for (i = 0; i<upp_frame_size; i++)/ f4 u/ ~4 _& X0 l& e8 O
        {! x9 O# n9 X7 D- H% x, e/ d/ t) m
            if (upp_buffer_a != upp_buffer_b)
; j  C' O& o, B            {
6 r% t) a/ f' Q, v6 f% F: ^                upp_error_count++;
. x# ~! m: O9 }3 x+ V. `            }
5 _. N" w* A% B        }) P3 K" i1 O9 b3 m/ I% T/ d1 c
    }
- R2 a) z. q: D, T: r% o" y: p9 H' D* g9 w- n
    /* 报告通信结果*/
# y2 }# x, q  Q( H/ x" u, f- _    if(upp_error_count != 0)" ~$ u8 H, U9 N5 d
        UARTprintf( "upp_error_count=%d\n",upp_error_count);$ U3 [- j4 x# Z0 N  @
    else
3 N8 m) C9 C3 _. i) D4 i        UARTPuts("uPP transfers complete!\n",-2);
  w4 }$ L/ G/ L0 a" `: @/ T# ~( s; p( K* ?
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
$ E1 _6 j: P/ w, a7 [: E    UARTGets(ch,2);) O9 B8 T) i, E- w
    UARTPuts("\n", -2);1 z8 {# R' Z+ B" \( Q. `) z
# Y) i' j* \4 `, t" j0 [: K: O
    if(ch[0] == 'y')
# y2 b; ^  Y6 I/ `    {9 I7 n3 l' x; e. A& P
        /*打印全部读到的数据*/
/ m% h0 g6 k* v/ f- r        for(i=0; i<upp_frame_size; )/ F( Y4 d) V% V; f- G  i
        {
+ q1 I- z) D4 t2 q            for(j=0; j<5; j++)
9 c5 s  h  O+ b/ k            {1 H( Q) ^1 j; r. W0 n
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);) v) P& ~0 K% v+ p
                i++;! ^' S+ K/ m% o& j$ y
                //if(i >= 4096)7 W- p+ }! g- L/ F  k! ^' j
                //    break;& [. c5 M- [; V1 l' ]5 ?" J, k
, _4 v5 W$ O( L9 w
            }
( V, ]! @: B5 q9 |  M& [& C            UARTPuts("\n",-2);% d  F! @0 B% v  s$ P# m8 N% C1 |
        }
0 h) B" a/ P, u    }
8 C( E9 c+ O" [: G6 l! G  A$ v* }, X$ h6 H
}
) w. l8 L: O  c2 f3 R
; }6 a. `3 {% j0 E5 ~) M
' \  P% U* d% r! m! n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。5 m7 G2 `7 o0 ]% C  q
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。) F  r6 G5 w$ G- V( r0 p! w7 u+ ~& r& s
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 08:54 , Processed in 0.043579 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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