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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
" Q% `2 m" ^  i
Void UPP_TASK(Void)
' y) x6 R  ~- b2 Z{
! d, v0 w: d7 Z# O1 d( c: R8 G" Q; e2 ~9 B
    int i,j,k,target_int_count=2;* w7 B+ `% N% K1 ?: e
    char ch[2];5 O( D6 J. d* n0 Z4 _- ?3 V

3 h# G+ S7 m. v2 n5 G0 z) [- f  Q/ [8 ]3 Y
) C( Q: l2 I5 M' A: L& r
    upp_interrupt_count  = 0;
% e0 J9 b& [6 y8 P# y* H    upp_error_count = 0;& [/ ^% ~/ {2 m

2 R' a" a: u5 `5 k( }- n    UARTPuts("\tResetting uPP buffers...\r\n",-2);0 m' G5 v" z8 d3 c& e  K
    // Initialize data buffers
+ H+ S6 ]* j& R2 L* S    for (i = 0; i < upp_frame_size; i++)/ z4 C  l. ~) m, w8 V
    {
  Q+ E7 j  r) D( H+ Q5 f       upp_buffer_b =i;
5 l% {/ ?3 L1 X3 E' }% D) I1 t       upp_buffer_a = 0xDEAD;* |4 w; P# j# a8 J
    }
! {. E2 z7 j3 {; i3 B" C# ^
: f' Q) d) z9 Y/ A    //for(i=0;i<1024;i++)
1 y" L' N) n$ o) d- }- q2 A2 _    //    temp=0;
& L- z; i( G0 a: ]
4 o5 K( f1 P. i  I    //UPPReset();
0 Y7 j1 v) m7 i8 F. ^/ p8 G, i    /*启动UPP DMA传输*/5 M: }2 b/ B( ~  C/ m7 j
    UARTPuts("upp_prog_dma_i\n",-2);
1 d6 @7 l4 s9 P. ]) Y$ J    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;& n4 c! O2 q3 p0 X% |# j
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
; C( ^6 m0 a  v2 X. u. N    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);5 D# N) i% l+ Z2 g

& _( k" W& O3 R    UARTPuts("upp_prog_dma_i\n",-2);- N4 U, A1 t) z5 t4 @# z1 U0 X# H
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
; [8 a& I6 f1 h, d0 ^; \    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
' F8 v! S) Z1 m9 d- q; u1 g! [: {    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
6 c" g3 U! }5 O9 l
. h7 q% u7 s/ N/ S1 W# h1 ?/ O7 ~    /*等待UPP传输完毕*/
& |2 P' u4 e: ^, ^7 W    //i=0;  J) A+ ]& \, J- h9 |% r$ c" b
    //j=0;
" T9 |& J9 j1 W$ w+ M% z- D    while (upp_interrupt_count < target_int_count && upp_error_count == 0), P! ^/ S& V. M# v7 _
    {
: u: i( u0 G8 S/ I# ~        /*  测试UPP传输的同时操作普通DDR数据6 C$ C% j& E& v: m. `
        temp=i;1 [* x+ P$ e/ d
        i++;/ n" J+ K, R5 g  ^) i! B+ @: n
        if(i==1024)
. l) e% w2 [6 J; L3 w" T9 i: n        {! _3 [  v7 [( i6 Z2 U% K2 P7 g+ Y
            i=0;+ l8 r5 N! Y! I! r3 a
            j++;' p( o& u. o& f+ @
        }/ \8 Q- z: }- G6 g9 |2 h' r
        */
, c" A* A& ^/ q! H/ }) _9 n% S( a$ _5 }; d" u* y# T! E0 u
       asm(" nop");
6 r' V( g% O- v% I& w# w$ z$ k7 [5 E7 j" e4 |; `
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
  `, }1 B  P$ s4 J/ O    }
  H# T  a4 O+ s/ v9 }
3 Y1 o% Y* x* z6 e9 V# Q7 v3 V    /*检查UPP传输的数据是否正确 (loopback modes only)*/
2 ~& [, d* j0 O4 R, ^9 U* v/ G. S2 Q6 b    //UARTprintf( "i=%d\n",i);% Z" |( [& x% z  Z  e, V; ?
    //UARTprintf( "j=%d\n",j);9 U7 T$ A; y( b# N/ [# X
    UARTPuts("Data mismatch in buffers.\n",-2);3 r1 U6 T- e% t" m  o3 f: d
    if (upp_interrupt_count == 2 && upp_error_count == 0)
/ f" w5 E8 Y/ E3 n$ r    {
- s5 x/ X- y: v1 L! u* D! M        for (i = 0; i<upp_frame_size; i++)
3 H" A3 r% ]/ z  Q% c        {1 P+ J7 ]% Z2 P) y
            if (upp_buffer_a != upp_buffer_b)0 v& t5 l4 E% j! H# D
            {+ u( P. a) }) o3 z- }0 \
                upp_error_count++;
2 ?9 F( B  Y, A: Y/ n            }
  l# a3 W! f- A        }. E& F2 A9 b, J$ }; I
    }8 n; I" q0 _: ~, ~* N4 L

, r$ Y4 }* N3 `6 L% E! Z% g    /* 报告通信结果*/
; _! \$ Y  B' m8 F8 {% r    if(upp_error_count != 0)& I. b! S! i6 q( |( k& o
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
: {4 R6 G: U; i( ~, |( R1 H    else2 r! \9 I. o; m9 T2 ~; n
        UARTPuts("uPP transfers complete!\n",-2);
3 r/ I* |, D- `6 H) ^
* q% E5 F( R* _- N- H4 F- c    UARTPuts("Do you want to print all the data?(y/n)   ",-2);- H( M- \' M# ]; G: t) e$ A" {; O" q
    UARTGets(ch,2);; q0 Y  ~! ~5 q
    UARTPuts("\n", -2);! [  v( W( `' ?6 X' Y7 N+ D

. J) E" Y, U; n1 f    if(ch[0] == 'y')" O) W) I2 f, _6 _1 |, f+ @
    {
& D% G7 a9 u0 t. C( u8 F        /*打印全部读到的数据*/: s+ i3 Z" ?: U1 G$ `: r- ?$ L
        for(i=0; i<upp_frame_size; )" g* E' j. ?& H! I0 {& E2 j" T( K
        {# j9 c6 N; L* ~* Y( I" D
            for(j=0; j<5; j++)% X/ v  j" Q/ \- q/ b! ~, B5 ]
            {! |4 C5 W4 `3 ~* T$ I
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);- k. n. x+ B" Z" C1 _
                i++;5 J. |. Q0 @5 J3 R+ b
                //if(i >= 4096)
' }  R5 [3 B% }+ ?+ h' y8 B                //    break;
2 P; l! L& b+ m. t: Y" w3 j; t3 s+ a8 z
            }
0 [$ P, Y. X; C            UARTPuts("\n",-2);
, S$ E0 L; W3 V! ?+ `9 h" M        }
4 Z) k5 V/ ]5 j) E8 d7 z    }
) D, _8 ^6 K" K1 Z5 {" h3 I) X4 _
}
* k4 d6 \) a# R& _% G; H0 F# ~: o! h

) n  q' a9 B2 k2 Z; m& s  Z7 [3 Y. Y7 ^1 w0 A+ B( A' }. }0 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。+ W8 @4 f7 z4 R. f3 U6 q; q
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-18 20:15 , Processed in 0.038834 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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