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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
2 m& g  k* @) E4 X1 e- Q" L; f
Void UPP_TASK(Void)
  z6 Z' C* L( N; E% I8 ?{. C) h% q  G: S* p1 t# }7 o

2 i: @* C  Q6 q- M# b    int i,j,k,target_int_count=2;
- a4 Y" s) s- T% ^6 k$ G. H9 K    char ch[2];
+ X# y7 W+ M" R) \( t
0 M( W/ [9 I, F9 B. [4 w, O/ j5 Z1 M5 w$ u# o) C* c$ H% N

7 {1 L* }* p  i    upp_interrupt_count  = 0;% H: Y7 T; H2 Q4 @8 |
    upp_error_count = 0;7 f& {& N9 c3 j) E: }9 A

8 M  s9 E& H, P    UARTPuts("\tResetting uPP buffers...\r\n",-2);; C$ H2 L) l" Y4 Y2 i
    // Initialize data buffers1 v7 p  ?+ H: e8 q5 W0 Q' @
    for (i = 0; i < upp_frame_size; i++)* i8 I- N; A! x( j
    {
. C& s; |' S* T' t" ]) C% m       upp_buffer_b =i;
$ M  ^7 p( X; M: b/ C) Q       upp_buffer_a = 0xDEAD;
7 E$ C% a2 P0 X/ M& B1 P    }6 U3 q0 n# S, \6 L, k$ [* x

6 |1 w+ x& A& O    //for(i=0;i<1024;i++)
0 h- t/ ^! a2 D: {* _3 s' X    //    temp=0;
, T% ?& T1 n- X8 @8 G
) J8 o7 Y) N9 T) U* y2 L" |    //UPPReset();
5 r1 ~) n; Q1 ]1 i! }4 f1 a- }) `    /*启动UPP DMA传输*/) l. _  R+ p: D1 f
    UARTPuts("upp_prog_dma_i\n",-2);
- ?3 z8 U) b. v    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
% Q, w% S  f* v; V, k    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
! L+ [4 r. {3 u( i  Q    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
% D% c/ S# e3 R$ E" F/ [
9 u) r$ r. X- E# C6 _: y    UARTPuts("upp_prog_dma_i\n",-2);
. F' y, L: a% y  l5 S    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
' W0 F4 s' B3 _( g. F! q0 ?    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);4 R2 ]7 \; ]1 T& b
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
9 K: v0 u' Y" Z  w1 {5 Q. ?- H5 m/ P
    /*等待UPP传输完毕*// j4 r' }* t: F$ ~+ G2 _
    //i=0;
, w& q$ i* x  Z; }9 t) n9 X    //j=0;
& N; Q' a& Q2 _2 {4 L* P    while (upp_interrupt_count < target_int_count && upp_error_count == 0)4 V! }1 r' F, N: W1 t7 J- [! l. r" j
    {
# j! U: a* ^$ G3 ^3 w6 H        /*  测试UPP传输的同时操作普通DDR数据
! W- Q- Y( M, a, m  U& k4 u2 D        temp=i;: g, r) I/ }9 w9 `3 M' s) V4 {" ?
        i++;
7 K' n+ {! r- L+ F, p: I2 h        if(i==1024)
; s  A+ z+ J  v/ P" Z        {% C# u! X( ^9 a$ q& k9 j- R# c' \
            i=0;
9 J8 X/ n) G/ }  A- j6 L. z: ~            j++;
0 l% f. H3 P9 x. P/ w        }
) {; O8 f8 _* x1 ]& ]& W$ d& d3 v+ w& u        */0 n) t& k4 |1 @, y
- k! w/ E; H( u- L6 j5 c9 i
       asm(" nop");
* t0 a- K! j+ M. _2 E% X# O
: K6 G7 L. X' K' ~       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);& n1 N$ {6 x* n9 P, C8 o" w
    }
; p# B% }- }3 F+ ~9 x0 h
# U* B- T7 k$ r1 j8 R' G- Z    /*检查UPP传输的数据是否正确 (loopback modes only)*/
/ o: `6 L/ p9 C    //UARTprintf( "i=%d\n",i);1 r- l; R* ^% w& T9 y% O
    //UARTprintf( "j=%d\n",j);
3 @9 }3 a; {0 l' \    UARTPuts("Data mismatch in buffers.\n",-2);
! m% z1 y5 {% E. @    if (upp_interrupt_count == 2 && upp_error_count == 0)
  n- M" l+ f6 f9 S5 @3 d    {
1 ~9 w- R# k, H) r        for (i = 0; i<upp_frame_size; i++)
# v  y4 {9 E* x6 U; v& q. e0 D        {7 \& [9 o' p) c5 s  }
            if (upp_buffer_a != upp_buffer_b)
. i% \$ R. I! m3 A! n4 }. t            {5 w0 V( f* ~5 T) L' k
                upp_error_count++;1 \0 W" w9 A5 ~. `
            }
9 {; }- t& K' U6 o1 V        }1 k0 ~- ^( m( a; P2 }% g; j
    }
% w! H; C( \8 v' B( d! D
6 G0 W* L% P" a& W+ v    /* 报告通信结果*/" L7 T. r- a4 b$ }) T# j8 o
    if(upp_error_count != 0)
  d$ d' m+ K8 p' ~2 B" I        UARTprintf( "upp_error_count=%d\n",upp_error_count);% p' Y- r9 L0 \1 s+ S8 W5 V; y
    else
; q4 @$ E& b# B: e$ P( ]3 \        UARTPuts("uPP transfers complete!\n",-2);$ K- }& ~3 g9 b, S) ?

3 f8 F1 M: Q- L! @    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
! S, P1 J4 b2 W  e" `; b- N4 o    UARTGets(ch,2);+ e7 \7 n& [6 E! w5 s8 V4 P. |
    UARTPuts("\n", -2);
- l  ~7 b% V9 E7 V
  W9 p9 o* |, ?2 r0 x. P    if(ch[0] == 'y')
# ~  V- p5 i2 n, L8 C1 `6 o    {
" {/ t7 {$ B' K% L  L8 l        /*打印全部读到的数据*// I# A# C' K, _% U1 q
        for(i=0; i<upp_frame_size; )# F# k0 ~% n/ O4 Z5 a! S$ l+ R' \
        {
! t! S# N% N- ~& C2 O: q( K$ k            for(j=0; j<5; j++)
) K" k( E5 `: C7 ~- d. K4 ?            {' ~' p+ Y' V. N$ r/ L9 t! J
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);# |8 n) C+ ?3 H+ A% T, A9 [1 u
                i++;
. k& E: E7 ?( @* M+ e                //if(i >= 4096)
( I& `9 d; N& B9 i; e5 m6 _                //    break;+ B7 b$ S6 ]$ n

0 j' F8 @) P! J: E* s7 |1 @# S6 y            }6 q: |" m: o! d2 V+ m3 T' x. Z
            UARTPuts("\n",-2);
8 X& h; `- z& {1 K" z        }
4 w; @  T2 w* b/ N9 x    }& S$ d6 Q& t& n- R! `, {6 J
# A; t4 @# I: q: _
}
, r2 D/ z2 n6 F% }# C; F1 `

( u: {7 u* S" Z8 W8 ^' [' n* p( e2 S( x( f* z% K0 p9 q$ z6 c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。3 L  ]8 E( t8 [" w% l* M2 |
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-28 00:51 , Processed in 0.043460 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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