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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
9 y7 m& `3 ]4 L, {- Y
Void UPP_TASK(Void)
8 }& E/ E8 T! ~5 [" F{% w& p6 m) G0 m1 c+ V0 v1 p
6 h6 f1 I' U* j+ Y
    int i,j,k,target_int_count=2;
8 i0 d$ k" W( M1 s    char ch[2];
$ b8 \! [5 j1 w* f
/ Q- Z6 ~# u. `
2 E6 ~+ F) t( a4 N6 `( T- |8 |- J$ u/ n
    upp_interrupt_count  = 0;
- y3 X4 ?2 C6 ~    upp_error_count = 0;- t+ Q$ R  E& j' _8 P* H

" B0 y& ?% ]# Y* N* c    UARTPuts("\tResetting uPP buffers...\r\n",-2);
9 y4 K; Q" ]0 b6 t* O9 ~    // Initialize data buffers
4 |7 \# O* H& @" K* o7 o! j    for (i = 0; i < upp_frame_size; i++): {  O+ k4 f' u2 b
    {/ R6 G/ K2 W6 @4 R: c
       upp_buffer_b =i;
; I& \# Y5 j; i( k2 M       upp_buffer_a = 0xDEAD;5 M' c* e* t7 R  `# g9 `6 c
    }1 H5 I; v$ [1 I* ~) A# Y
2 T) X5 L5 D& B' k
    //for(i=0;i<1024;i++)
+ R+ v6 e9 D: J3 W; Y% ^) v    //    temp=0;
- J3 ~* P& v! E5 i
, w1 a. R, ^8 J6 p8 Y    //UPPReset();
  E' ]$ C# @& E8 N. w    /*启动UPP DMA传输*/
" j# J* r6 t2 m% C' G9 a- e    UARTPuts("upp_prog_dma_i\n",-2);
6 A9 B! Y* u) a' _* V2 M7 g' K    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;3 a- Z$ T5 o2 s4 |7 C5 F
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" W7 R( w- M# f+ ?0 C    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
: r( D9 _! o* ^4 d2 ?  m, p% X& ^. J0 N
    UARTPuts("upp_prog_dma_i\n",-2);
0 a1 P3 b. P) o) z" t    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
8 @: b4 a) B  ]( ^( |/ n6 A; _    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
1 U) Q) g! i7 @) M    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
& `, m! r4 j$ C6 ^9 A( S. x  s( _. N( }1 z; N' |
    /*等待UPP传输完毕*/; G6 e' h0 S; ^2 z7 {
    //i=0;  a; s# S5 g$ w1 O
    //j=0;! Z2 g7 N+ ]( u3 Z: ]6 a" W2 s
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
$ C. g( M% I! m: x    {
/ o$ D# Z! d8 q! Q$ h0 s        /*  测试UPP传输的同时操作普通DDR数据  p4 c( M5 R6 ~* c! p; \% a
        temp=i;# U9 m1 E. \2 q) _3 F
        i++;
5 C- d+ e* t' j5 [6 C        if(i==1024), Z- h* r( _+ B
        {0 G# ?% @- {3 U  ]* `
            i=0;
# r6 {% o, V6 k- N$ u            j++;
  Z0 n/ v1 c4 H* K8 @5 Z        }
0 C2 {" V- B6 ^5 a) x        */" v& g3 r" v( [

3 \/ S0 ]' [3 g+ u+ J+ x6 s       asm(" nop");
) h1 }+ I. i) R7 K* a4 r
( g" F5 d# _8 B% x       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
( Y+ P5 r! {9 a' W    }
2 q* Q: I% }$ x+ q5 ^0 V- v4 F" c6 `" i+ {
    /*检查UPP传输的数据是否正确 (loopback modes only)*/2 @; `8 Z$ u0 _+ n' A$ x0 ?
    //UARTprintf( "i=%d\n",i);0 N# R, v4 l3 a/ S
    //UARTprintf( "j=%d\n",j);
" s, n  U  W9 q' x; U% H    UARTPuts("Data mismatch in buffers.\n",-2);
6 R( V) m! C* p& ?( b% ?# z7 ^    if (upp_interrupt_count == 2 && upp_error_count == 0)' Q/ D' e% s  m  D
    {5 b2 q% t  I3 Q; ?4 Q
        for (i = 0; i<upp_frame_size; i++)
& l4 j. T$ H8 V) x5 X& K! V+ [        {
$ a2 ^8 g5 j0 c2 z            if (upp_buffer_a != upp_buffer_b)9 n! S3 n' p/ a5 N$ r6 F. L9 P
            {7 s* n6 V1 K& ~: Z: c8 C  y7 m" k
                upp_error_count++;& m7 ?! p' R: C
            }) b% {( Z1 X5 Z! B$ h+ _  h# x7 k/ z( |
        }
2 ^, D  w. ?( G    }
- ?# _5 j9 d5 B' K' U  g2 X% a$ m+ I
    /* 报告通信结果*/! L9 L. @- b2 E5 }5 [
    if(upp_error_count != 0)9 A1 B- b. d/ A
        UARTprintf( "upp_error_count=%d\n",upp_error_count);. z3 {3 i; x% d5 ^# d
    else
6 o, N& x& ~. L# p! x, H. \        UARTPuts("uPP transfers complete!\n",-2);$ U* a6 H% I1 m( Z9 L' [

' p& {. ^, ]' @  v8 m    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
! D& H2 K  v1 t/ ~" ?' `1 I+ J    UARTGets(ch,2);% x* F4 [' D& P, z
    UARTPuts("\n", -2);- j+ n: z  [7 M
5 n+ f. U4 m; k' T/ n2 e
    if(ch[0] == 'y')
* I* g, B5 E; m: G' R    {
. F! X' a4 s3 m6 @2 E( u8 _2 l        /*打印全部读到的数据*/8 Z% Q8 {5 M& }, E
        for(i=0; i<upp_frame_size; )
1 k5 L8 }+ M4 i! A/ O  E( f        {
2 A7 U2 [$ d' ^: c3 K: Q- u  F            for(j=0; j<5; j++)
1 M( L$ a7 q% U6 s1 A9 y            {
+ P( {4 v% c. X9 y6 K                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
. p8 |# B# X1 e! K  A5 S8 V                i++;- n6 F# b2 U& l% }
                //if(i >= 4096)2 E8 G3 p: G/ H* \( M4 E# Q, I
                //    break;
: O9 _5 F% W( X' `7 B$ W
' `5 Y8 \- x+ P4 E# x! A5 x4 h            }
: G& h2 i4 U1 f            UARTPuts("\n",-2);( _; c2 S& }# `7 X9 n+ N3 f
        }0 I; _3 o4 x# N; g0 D9 h: q
    }
8 ^& q' _. w# O% Y' F& v- m7 M/ `& z  I( X3 N& @1 Q& b
}

* |6 E" L9 \9 |( ^2 }2 [* M& ?
6 W& @' z, W: f, [3 ?; c& A
4 l: C/ M% }, M! f9 m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。+ H4 T) I/ [( j- ~
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-18 09:04 , Processed in 0.040653 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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