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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?) y( h* \( z" c; ^4 @
Void UPP_TASK(Void)
0 `9 M% o# Z* A  q. s{9 Z8 y$ ~0 d+ S. Q; I' \

- [4 g/ D- v8 _    int i,j,k,target_int_count=2;
! J3 k. R2 |% Y( C    char ch[2];
# Q# r+ n7 A4 N4 Q# s& `! k% m# [; M/ D- H2 B5 d' @3 Z

) }" S. Y3 v% d0 l$ k& h; t! @* q* J$ u4 i8 Y
    upp_interrupt_count  = 0;5 m; d9 n5 `. r. m5 I4 F
    upp_error_count = 0;9 U7 c9 P* C; g' Q' [

) Y0 n  }9 G+ m, B4 U! z1 f    UARTPuts("\tResetting uPP buffers...\r\n",-2);
$ x! t1 K0 y3 m; P- \! n    // Initialize data buffers
, W% F. \3 t4 D9 k7 B* B    for (i = 0; i < upp_frame_size; i++)6 `6 r$ e7 D" p$ f
    {/ ?# x: Z6 s- p5 b& o4 @4 p
       upp_buffer_b =i;
  q5 i6 t& ~" {       upp_buffer_a = 0xDEAD;
* f4 y, Z; w( R    }
/ k+ g6 x4 z' ?* Z0 j" ?' X1 ^1 \" ~: f0 s& s4 S( r
    //for(i=0;i<1024;i++): H/ [. |1 P) j2 \: B: C, F9 h
    //    temp=0;
5 t3 y* Q! f, e% S$ `+ }4 X; P* X2 t
    //UPPReset();
, W- \2 _1 T  j6 i. ~! O    /*启动UPP DMA传输*/( u: I/ K7 @# E( H5 _
    UARTPuts("upp_prog_dma_i\n",-2);
) @! i) V) b) w) ~: [    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;1 C: W5 @2 u( r* ^
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);, w$ E7 R3 W# U# A2 _; ]
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);" [" r$ M4 v8 z8 a
5 E, G  Z+ b0 H% ^# I
    UARTPuts("upp_prog_dma_i\n",-2);' [( m- X0 O% c8 s+ g5 ]
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;5 E/ b' I  w, P' w$ _0 |
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);9 O3 N9 U: Z6 u$ a; u( I5 g$ ~4 I
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
2 E; G- `7 @2 A0 u# r' v" V) J
0 S0 `; f6 w8 c    /*等待UPP传输完毕*/
6 S0 ?, M8 {3 G, |* o7 B0 f# f) ?    //i=0;
6 s# O6 a" d6 E  _6 K    //j=0;
+ N0 X6 l( N+ l6 [    while (upp_interrupt_count < target_int_count && upp_error_count == 0)( U5 ^: m( _. F" R' Y3 s, P
    {: F( {' @* Z+ T( t( {
        /*  测试UPP传输的同时操作普通DDR数据, t- f7 j: Z2 v+ ]
        temp=i;) M6 I2 c7 ~- `5 |* M1 p
        i++;" o* k! t8 @; m) s) Y& ^, a, V) K* f
        if(i==1024)
: T5 I2 Z* P* p2 s0 _% {        {0 v8 d/ K# U# N& ]& \
            i=0;
" ?- o- f8 t6 W* z9 O' H            j++;
7 F7 r% `/ Z- ^. M5 U. }        }8 w# N; I1 `9 x% E8 T. U9 @
        */0 D' r* f8 q2 r+ w$ F3 ?. f
0 K) e7 W6 s9 @, A
       asm(" nop");
' O- [2 i' B+ x8 d3 j( Q. T4 c5 v  {7 n% b# ~
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);- @# |1 R+ T4 y# y
    }* E1 `  n& X" R" J
; w+ x/ Z4 V# w7 s% u% j
    /*检查UPP传输的数据是否正确 (loopback modes only)*/& |, z5 Q% S- B7 w3 B) m/ O) D
    //UARTprintf( "i=%d\n",i);
. z( h1 l+ A0 s: k1 Z* }& {. V3 H    //UARTprintf( "j=%d\n",j);
0 M7 i" W+ F3 N. I. l    UARTPuts("Data mismatch in buffers.\n",-2);
8 W6 N8 Q0 |( g- s2 B    if (upp_interrupt_count == 2 && upp_error_count == 0)
; R6 O0 \% Q" J7 Z5 N; @    {
) C  H0 ?2 N  G8 J6 g- L        for (i = 0; i<upp_frame_size; i++)' P9 l, K( ~/ H/ R
        {6 A, l- r/ ]2 ~: A  F! _7 i
            if (upp_buffer_a != upp_buffer_b)' Y9 r7 |, f( U3 E  `0 N( [
            {
' \0 x9 n+ a6 _6 e' ~% w, G                upp_error_count++;
: L: T) w2 V/ g            }4 R- `7 r1 F3 l. x7 \
        }0 t* |! y* F& z6 e
    }# Q) j. K- ]: v! ~6 f

  M( o4 L$ X) S6 x+ ]    /* 报告通信结果*/
/ N* ^0 [% c* i" ~! m    if(upp_error_count != 0)
8 [8 C! ^4 J$ ~& K) k( h, U) P        UARTprintf( "upp_error_count=%d\n",upp_error_count);& |' F( e" @- G: s
    else
8 t# b& w4 J8 m7 y& w$ Y  o" c& E- ^/ r        UARTPuts("uPP transfers complete!\n",-2);$ k; w" n8 K* h  y( [

3 o2 d6 M. A1 B  k2 e) Z7 x# d9 V3 `    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
' y# C7 J3 u5 T6 o# a6 c* A    UARTGets(ch,2);
$ @) m7 H) `, @4 H( k: ?    UARTPuts("\n", -2);
; X+ i% c  n; @& j5 O' {0 S' f
9 u& A3 u5 }8 t4 e. Y    if(ch[0] == 'y')
& |; L% m* @# V, c7 y4 {) i9 C- \    {
8 @' R+ n  R, }# i        /*打印全部读到的数据*/
- {: Q! `) _7 Y1 C& \2 E# y: R0 ^3 u        for(i=0; i<upp_frame_size; )' l. h5 O4 V% [! z3 x* p% B* U
        {
: N, o% M" r. m  ~            for(j=0; j<5; j++)
% g0 C. L9 r; D: Z# F9 L            {
; |; z9 q* \  O                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);6 [. f3 j# F$ U9 y$ O
                i++;
; [% m; Z" T7 O8 h                //if(i >= 4096)- i- `& W+ ~! c3 H
                //    break;
0 T- a0 @# o+ T) ?) g: _6 t9 q
" ]- r- j) h- e3 l% J, A0 y            }* O3 a+ O) C0 Q  x
            UARTPuts("\n",-2);
% x; y9 E0 z- ~5 ]        }( z; m, E! ?% ~2 s; w$ k
    }
; G' w* T' X+ P9 x( k' A* k* ]$ q. t& Q/ j
}
& ?) J2 e  ^4 A, N( ~, W# p6 Q

. i7 w  w+ i" v
/ C5 P# _' ~( ]' h) p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。& u, a( o& W, k  N+ v4 A  ^4 p' K
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
  h1 }. c; m3 _! q; a. e9 E
回复 支持 反对

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-8 23:14 , Processed in 0.040543 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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