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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?! I) a8 k6 K$ q$ n* J5 z
Void UPP_TASK(Void)- Y" j* I: w  J" l. S: R
{
, o  W% E1 |0 k( n
2 i1 x. t. s% C, ^& o: K8 Z5 R    int i,j,k,target_int_count=2;
; l$ z# J2 i6 Z" V* a5 n* A    char ch[2];/ V5 f, l# B: R! p7 q

" F9 w; r. x& y) {- q" W; e
- p) \; l( }. n1 ^4 n, L1 \8 }
0 l" W9 a& h, v! ~    upp_interrupt_count  = 0;5 d1 H0 l9 m, `# a4 ?+ A" i" l0 p
    upp_error_count = 0;9 k  Q' e" y& Q; E3 X8 y6 x7 J8 z

6 c; V% T: F+ v. l% w    UARTPuts("\tResetting uPP buffers...\r\n",-2);; d2 F. ], L. ?+ k
    // Initialize data buffers
5 t5 X! r/ U8 Z, ?6 d+ Q: X    for (i = 0; i < upp_frame_size; i++)0 I- B7 ~# \, k) m: d
    {) i0 Y5 A; h2 e1 b5 J2 J# I
       upp_buffer_b =i;
( @& Y, r6 C6 g) M8 n       upp_buffer_a = 0xDEAD;; n9 _, A# n6 ^5 I8 ~$ x( O( K
    }
" [9 T% p+ N* G- C2 I6 _9 j% d0 D; N3 D9 O& p& x8 B5 x
    //for(i=0;i<1024;i++)9 g6 R( y: q2 i' f  c, J/ z, S
    //    temp=0;4 T- B3 p* j/ z, D0 [# F  Q  C; d

7 `7 {2 X& B% A4 B* o  {    //UPPReset();& k1 [$ I6 U& o5 D5 A
    /*启动UPP DMA传输*/
: u% e" z' s+ c' r* I+ {    UARTPuts("upp_prog_dma_i\n",-2);! c6 k- A, E6 x1 e% u9 k% T8 Q
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;6 }0 }) U+ `- v7 A. d
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
0 f- H- `' d- P    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);' ?4 `9 N  T4 t3 B8 ?) Y0 _: |! C
) ~& M$ n2 a. d0 d3 |- M
    UARTPuts("upp_prog_dma_i\n",-2);6 `: @* d; y+ w2 i
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;- \% U% f* y. l6 ^: Y
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);3 M" u/ l& ^+ W9 a- P
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);- K9 e3 i$ y2 r* S3 H7 j
/ [8 G; o, @& C7 p% z# D4 C5 K
    /*等待UPP传输完毕*// l  d! d5 X* o# E3 t1 f/ h3 c
    //i=0;
2 `4 E0 b8 P. z3 c3 P    //j=0;! s, D2 @( k$ Q8 Q; H% E; h! n( |
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)( J% N" _- _& `6 U
    {" r8 R; i# }4 q8 U0 Q! R& X( Y
        /*  测试UPP传输的同时操作普通DDR数据
; u4 B/ Q1 W8 P& \7 Y& v        temp=i;
+ S* o- W9 W5 M        i++;" k9 D' _7 X9 ~: R2 D0 x
        if(i==1024)0 U' Q+ L+ u2 ~' [1 _9 t# b
        {
2 u7 \, ^; ?& c$ j            i=0;. U2 A, X* Q& u) I: H2 W
            j++;
, B4 ^) L8 C2 [        }
; b4 ]' t) A5 x: r        */
2 [0 \, O3 K$ }6 W! J2 b. a& d* V; Z0 h  q
       asm(" nop");
% B, _% a. h: F6 s$ d% h. y$ R. Q; p: b7 _4 ?/ `% n
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);/ L' s* ?5 M. Q! Y
    }
8 u6 }- x3 A- m6 f$ C0 I' J5 y( J" H3 \" ^8 f% d7 n# }$ H
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
4 s1 r( w' H7 c5 p1 o8 ]2 i    //UARTprintf( "i=%d\n",i);
6 T5 }  q" y; P  w9 i. Y( O% w    //UARTprintf( "j=%d\n",j);
8 M% W5 R* K. K* Y7 E6 Z' G5 v    UARTPuts("Data mismatch in buffers.\n",-2);
# R( B8 @& ]2 N4 b$ P    if (upp_interrupt_count == 2 && upp_error_count == 0)
. I% W  y  B3 {* u4 D9 ?1 q    {
8 j6 B$ Q/ {& C3 J7 Q        for (i = 0; i<upp_frame_size; i++)- ^2 H0 B- p$ k
        {/ S; L; r- g' S7 s
            if (upp_buffer_a != upp_buffer_b)# ?3 @( @8 A- h5 j9 ]
            {2 D. M) `: \. G# e' U
                upp_error_count++;
) \- d9 A8 o/ h: ^2 Y5 W7 D& M, D! ]            }  ]: u& b# e+ o1 r  p
        }& u( Y& `7 E. |( n
    }
! F% k5 q, S8 E/ z- ]! B
( ~' B0 n! C6 n    /* 报告通信结果*/; i. E1 f5 X& o5 u& T
    if(upp_error_count != 0)
+ T5 }% x- d/ ]0 {- t% c        UARTprintf( "upp_error_count=%d\n",upp_error_count);
( G1 P: a- k$ C  @    else
0 Z4 _2 _+ v) V  l2 v& E$ }! s        UARTPuts("uPP transfers complete!\n",-2);
% \; ?5 D0 i- w" C& s0 K( i( T. \% P0 a3 C* `! E- y! @, M+ R/ k
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
) `# K+ P0 ]1 x. I* V6 O) h    UARTGets(ch,2);
; B' L7 N) W1 p. l( C; ]    UARTPuts("\n", -2);& m* i3 |/ B, S+ R
( Y4 n1 Z1 _1 y0 a# b( o* u! t& c
    if(ch[0] == 'y')
8 b; h- Z* R! w. g  Z3 H: f5 t: x    {7 \* g! Z6 ]% Y3 ^8 J9 }
        /*打印全部读到的数据*/3 i. M3 b# k/ ?" {, T# Q, T7 C! m
        for(i=0; i<upp_frame_size; )
6 g5 a' p9 y3 \, p. s        {% q/ \+ [7 y+ ~3 O5 L- O
            for(j=0; j<5; j++)
" F  n8 x& b  W; t) D            {
8 E5 G9 p% n6 N& x                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);9 W$ ?. D3 x' w2 i& X' x8 n( V6 G; V5 l
                i++;
* x2 W4 J( D8 V1 v. J; C                //if(i >= 4096)( l6 W; m7 Q. f/ X
                //    break;
- r/ p4 j1 h* B6 W) L, P; k1 K9 x5 g
; t* A* U" I1 h( f5 }            }3 E. D2 L) q6 Z4 y8 P
            UARTPuts("\n",-2);7 D. h. k. @# A5 V. B9 y) [% g2 |" J
        }
) k! N/ z- s% f- f    }" d- n' h7 Q& l* n. h/ n
. t( n1 c/ S$ Z2 h0 d- M
}

; b  n) {1 ?1 Z) j% @

4 M7 K& `  H- g' O( L, Q3 U5 `
2 c) b# K9 V% ^$ u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
  W1 ~1 L% V5 j; e: C$ k% @# c
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。7 @2 v6 g  ^, f1 x0 M  ^
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-18 23:52 , Processed in 0.036890 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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