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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
7 z& _. f# P4 a  j
Void UPP_TASK(Void)
3 A) U8 }4 Y) {5 H5 i{/ }( v9 |+ P; R

" N/ q) A2 i+ x5 H- R  e    int i,j,k,target_int_count=2;' k- _8 ?3 O( Z4 I
    char ch[2];- o, P' h0 u2 G' p+ p; o

8 d9 T% O1 ^6 y9 c  x$ z- e( y# @8 G% l5 J3 ^2 a5 D
) l4 f/ C6 X1 f* k
    upp_interrupt_count  = 0;, P7 i, M; O) [7 j$ ^7 j
    upp_error_count = 0;
9 _: v: a* v. h' Y
2 u( D7 T0 F8 r' b    UARTPuts("\tResetting uPP buffers...\r\n",-2);$ @; A6 r$ G4 {4 U
    // Initialize data buffers" o3 j7 a/ C4 r. S
    for (i = 0; i < upp_frame_size; i++)
. D* ~7 ^* c8 W+ x- F% ]- j8 Z    {
9 q0 z+ g; G: o3 j- |       upp_buffer_b =i;
6 [5 H3 D+ Q9 Y# @8 l% x       upp_buffer_a = 0xDEAD;9 e% R& i4 U( e* [, k
    }
5 t7 k0 W0 \+ X$ G+ |  P
1 {. n7 c0 s4 r. t* p' k    //for(i=0;i<1024;i++)
5 h# ~# w0 b' W& d2 Y- g& }* p3 ]2 m    //    temp=0;. k, [$ h, E& W8 L7 Q7 N* {
) _5 [* {9 U; B' X7 S- a$ A
    //UPPReset();
( K! s' H, U' a# r7 z# ]    /*启动UPP DMA传输*/4 f3 ?# v& N! E) T# y$ v/ T
    UARTPuts("upp_prog_dma_i\n",-2);- y+ H1 ?3 i9 m. g- G
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;' b+ I1 T7 j6 _  s/ @! B. |2 v
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);% ^" S1 o! W) p) T( _4 A8 A$ y
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);" \, e, `+ y7 u2 r/ t4 w* K
8 x: M& x) F+ f1 G9 V$ S+ e6 K
    UARTPuts("upp_prog_dma_i\n",-2);
- X9 F& d+ P) K- ~    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
" f6 h# _5 G% E2 f0 Z    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);8 I# v! c7 o0 y5 u0 I4 J: J
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);$ ?  q, s  @0 a; K

; ~+ X" Q$ r/ i- f    /*等待UPP传输完毕*/8 W% Y0 ?  J9 A
    //i=0;
: i9 Z3 J8 W/ y, y' F/ t. |4 R4 j    //j=0;
3 T' e. e0 d, q$ x  A6 D    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
( T5 [: n# `8 }, l) E+ u3 e    {) X; K* ^1 U5 U# M# R+ l+ X
        /*  测试UPP传输的同时操作普通DDR数据) S7 T2 w6 [7 u( S
        temp=i;
. {3 d( n) s4 O0 b& K: s        i++;
4 b  T9 {. F6 W  |6 o: w. s! ]/ j: k        if(i==1024)
: t% I  x2 o% L( b* ~/ V4 t        {
3 P; b7 Q# `5 `/ l0 u8 f' R7 |            i=0;1 C* G* H$ G$ W6 z
            j++;; C- Q2 o* d. v# g/ t8 r* w& E
        }. \* P# ]. ^, f
        */
  g4 v8 ^( @* R$ W0 G$ l  O, h$ w9 ~# A# k$ l: m" P
       asm(" nop");
2 a* A6 v: @5 a4 `
# j4 C! q& k: o. b2 A/ k       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
4 M1 j) J4 F( Q$ K' }, |$ p3 E6 h    }6 o  X; {, H) x, ?1 ?/ h

1 |" b" R; \+ C8 G& S    /*检查UPP传输的数据是否正确 (loopback modes only)*/% Q, d' ]% N2 I% J" \# b6 V
    //UARTprintf( "i=%d\n",i);
' [- i- D2 C( m    //UARTprintf( "j=%d\n",j);
# Y. w; F0 t- g; A    UARTPuts("Data mismatch in buffers.\n",-2);) f: l+ R0 j( p" m' q$ k8 d8 j9 m
    if (upp_interrupt_count == 2 && upp_error_count == 0)' v  z3 {/ G( L# l2 _+ @: d5 M- w
    {- ]" X6 F( a; r" g. i
        for (i = 0; i<upp_frame_size; i++): u( N" F( n" R
        {4 n% Y: i% u8 @4 H) |6 {# K; z( M0 S
            if (upp_buffer_a != upp_buffer_b)3 n: I- p' g3 U/ G0 ~/ _3 o
            {
4 j$ E/ ~/ K8 O/ N1 z8 U! g/ s                upp_error_count++;) T8 t, t( G0 i' H: W( v# ]- {
            }' u3 Z7 k. c4 h( G1 \* d+ O
        }! W$ L( `/ q5 B: k6 \3 k) u, L( p
    }
/ n# u4 t  Q$ P: @( U  U( F
& L* G# r/ i: ], [  ^9 I    /* 报告通信结果*/9 X) @8 I* L( k+ s
    if(upp_error_count != 0)
7 C( v2 t2 Q7 A; D6 h        UARTprintf( "upp_error_count=%d\n",upp_error_count);6 E& J, M3 M& x  k' O1 Z$ B
    else4 A( q  y  {  V+ t( [5 ^
        UARTPuts("uPP transfers complete!\n",-2);
2 n3 P* I" K4 L8 L: D) J! _5 w$ A5 p2 [3 [4 @" R  C; X
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
) b6 g( _, G+ v# F" U    UARTGets(ch,2);$ O0 M: B# J: e; T* O( x
    UARTPuts("\n", -2);5 c! h$ a+ f. `
1 _0 I" s5 y) N  c+ Q! a
    if(ch[0] == 'y')6 p, E$ _9 ~$ b& \1 }/ n
    {) ?% y8 L2 _' j+ Y* z
        /*打印全部读到的数据*/
/ ~; K4 C1 r; H  R# d; R+ b/ {3 p        for(i=0; i<upp_frame_size; )
2 t/ H! k' z! @4 T+ a7 j: Q        {
3 x, f  G( x$ W            for(j=0; j<5; j++)2 N9 q- `: t2 U: W5 e, Q3 I
            {' k& \; \# p  i( s
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);# V3 q9 V6 C  g/ S
                i++;
4 B" O  A" b1 H4 M                //if(i >= 4096)0 m3 U8 i! r. A5 I3 P  `
                //    break;
2 P2 ^6 ^7 I8 q% b$ S; ?& \) o% F5 \. X. ?/ {2 z
            }
( J5 ]) o6 a9 }' }$ F% T            UARTPuts("\n",-2);! `, |) J; Q. V  @$ e$ Z/ n9 b
        }
! V* M+ P- f# ~. M    }: e% R% q! a+ Q
. N4 |: _# m4 W* Z! s# R0 y6 X
}

/ w* o4 `, o9 ^. n

" \8 i5 v- S5 V) O' H
5 _+ ]' |. ?6 o+ R8 g6 L" _2 h& L8 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
* M$ d* q# X' U
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。& S4 \" |: x2 r) `- v
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-28 01:28 , Processed in 0.044517 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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