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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
" m7 q5 _1 r$ ?5 @
Void UPP_TASK(Void)% X6 I6 E/ R3 _* Q: N
{
* R( T/ e9 S# T9 S7 s5 M  Z
; j9 x0 E  x4 c    int i,j,k,target_int_count=2;- e/ C# _* [1 \* T9 x6 p/ R
    char ch[2];
  B- N: u8 c: e# s# G9 P, `1 N
. U6 w) d( ?& T* M" h. W9 ~  Z. f  R" `% ^8 E7 Z/ G

, L$ i- A; u& i4 H1 |! g7 f1 e& }    upp_interrupt_count  = 0;2 |: D8 M% Q4 n9 D: P% c6 a
    upp_error_count = 0;
6 H+ Z) @1 Q& G2 {3 Q' H
9 g5 P# z9 C! u2 I7 {2 |4 w    UARTPuts("\tResetting uPP buffers...\r\n",-2);
7 |) A# N' F6 }8 s. ^; }; _, e    // Initialize data buffers
' q1 y3 ~) a6 l    for (i = 0; i < upp_frame_size; i++)
' }# R" [9 \  m; o# _  M9 J    {
( F3 n' ]# I  W9 {7 W       upp_buffer_b =i;0 H- M0 y# r, ]. f0 ~- [( S* z5 {
       upp_buffer_a = 0xDEAD;9 ]' H& {4 u1 F
    }$ V6 U0 c/ y, I4 p3 I

( ?( h6 d' ^: Z, \4 a    //for(i=0;i<1024;i++)
0 V! K9 {- `: p, u4 C% g- Q    //    temp=0;
4 R/ W( \% n) {8 D  }; ^# x# d5 V& k  \  U. b/ H
    //UPPReset();5 b! t- n; |5 ]3 n8 f4 U+ N
    /*启动UPP DMA传输*/
# g& j8 i' m- @3 v    UARTPuts("upp_prog_dma_i\n",-2);+ c: `. `# u1 @( ~1 Z. M' c* b
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;# g# F4 A# w* N5 s
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
- \3 H6 M7 C: m6 U    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);9 a" S0 c( L! l% ^% p1 G
% W3 q: z. C. U% T$ S
    UARTPuts("upp_prog_dma_i\n",-2);
# h( C0 `4 M9 k: f" N3 N$ X    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;  [% l' c$ d# D. K" y, W3 g
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
& t2 {: [4 I$ ?$ t( U; ]2 q    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);) c4 }" C* U8 I, |
& w$ `( x, l' H8 m- R* L% M# k
    /*等待UPP传输完毕*/' n5 y3 L5 |4 S5 s
    //i=0;- N( a# D8 D" X2 z  l" i2 A2 L# D
    //j=0;
! y- X6 Z- E6 q- I    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
- k  e3 |! y* s    {
( H& ^3 ]' E5 T( L! u        /*  测试UPP传输的同时操作普通DDR数据
% R% ]% i; T* p& ]& S; N0 e5 k        temp=i;0 K+ i; O! U4 P" R. `9 {0 o+ @, }
        i++;
$ f- ^8 v: o7 K& ^4 A2 D        if(i==1024)
$ W! z$ x7 o1 Y# v) u' o( V        {3 N9 K2 F* M0 M( U, O" G' ?
            i=0;- P: d5 s/ L2 J. E
            j++;. I* E7 N1 e( t0 f0 ~$ J
        }4 q- o! h) d3 Y
        */% K; g& n0 D8 g- u5 B: r5 N
$ ~" B( t) p* {# g! j! M
       asm(" nop");# G& f9 I- o( D" A
3 t6 ]! X) h, l; q
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
* z& T8 e" Y% r5 ?# w  J; r    }! o) R* }4 {7 ]2 q
0 M' C! I3 u* o! Y6 L1 V
    /*检查UPP传输的数据是否正确 (loopback modes only)*/7 T! A6 p1 U# u3 o' b. d/ p4 S  E
    //UARTprintf( "i=%d\n",i);% }8 F. w, p& h
    //UARTprintf( "j=%d\n",j);: C7 Q# B4 K6 Q" m  ?8 E& u
    UARTPuts("Data mismatch in buffers.\n",-2);! z+ F7 v) @$ ]; d- e, c, h
    if (upp_interrupt_count == 2 && upp_error_count == 0)
# j2 q9 C2 B0 g4 P% {( U/ Z+ S    {
6 S$ N: |7 Y3 a& S* P- x: }1 ]        for (i = 0; i<upp_frame_size; i++)
6 ^( R& C" H* r9 a( i7 o        {
/ o0 M, J0 R) |            if (upp_buffer_a != upp_buffer_b). H; Y! {% t, Q" G7 v
            {* Z% n$ R6 z3 E7 H9 e
                upp_error_count++;+ A- |5 |" ]; w8 y
            }
! f3 }5 ~/ ?% e& _/ H: T7 l( J# m, T        }* T3 o1 q- Y9 v, [' Y
    }9 c9 Z" P$ @5 r4 Q. O4 P/ W' A. f

3 ^( l. R3 b! j$ i    /* 报告通信结果*/" ~' [: \9 w$ W5 m  j
    if(upp_error_count != 0)' w  T) e% ]6 l2 ?& j
        UARTprintf( "upp_error_count=%d\n",upp_error_count);/ G4 \9 H$ U& C* R) ~) C0 ^" [
    else
" r4 @: r. O. o7 \6 p, n        UARTPuts("uPP transfers complete!\n",-2);
  q* L+ [6 q* z$ L* k
  k# a$ P% \. Z" u0 [) K    UARTPuts("Do you want to print all the data?(y/n)   ",-2);# A* f1 J' K: q
    UARTGets(ch,2);! g2 t( k2 z( D) _
    UARTPuts("\n", -2);
) |+ ?2 F6 U7 _
' U; u- x" L8 e' @8 i    if(ch[0] == 'y')3 u8 ~5 s. Z4 G  n8 k
    {
' Z. O. F  d+ X/ E3 A) d! `        /*打印全部读到的数据*/
/ ~) o$ h; K& \. p        for(i=0; i<upp_frame_size; )7 A3 M/ d/ U- i1 w; ]8 I3 d
        {
! _" h' J+ X5 A, `$ w  f9 ^/ S            for(j=0; j<5; j++)
( y0 _8 z+ n  M6 v$ Y( k! j            {3 B7 V% Q$ D& l$ n& n8 v
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
9 P# }! j: q& G8 D$ z9 G" \5 @8 b' B3 R                i++;$ k& ?7 Y2 ?) r( h( A
                //if(i >= 4096)$ b* u) g2 S- u% A# R2 V1 n' l
                //    break;( p4 ]( ]" r% {. i6 ~

% y- m- o1 b) \; v' A            }. f0 r6 T$ S$ a1 k
            UARTPuts("\n",-2);% a7 P8 t9 i; c+ C' v& o  f
        }
* h8 D4 M8 i6 q7 F1 j    }- s  b  Q# t) @8 G# z% W

# H% t& J* q5 n}

  l' J' `+ I9 N7 s( z6 p' k
0 N) [5 u) x- L
0 X6 N9 Z# F, H* n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。0 O5 D$ D0 ]' M% V  R- x, v
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
+ ^* D: a6 j6 Z5 c/ r* v' w9 g
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-8 22:53 , Processed in 0.044885 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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