upp问题,在SYSBIOS下的应用问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
  J8 \0 j; p: q
Void UPP_TASK(Void)
- [  p1 a  g% J# \) [  [{. d+ x4 T9 K' y+ t8 f% i( n4 G

& N% o/ w3 _9 C" ]; q% U$ A    int i,j,k,target_int_count=2;
) o0 c; x* `4 l: i* E2 B+ X    char ch[2];" v5 z$ u) j) X- C. O& T
9 e$ B+ u9 A+ V. l9 ^% |- \- y' x5 }: l
) @/ w0 ], r4 X3 L, f9 M- l
8 Y5 ^9 p% {7 R8 S+ A3 g: X3 Y0 J
    upp_interrupt_count  = 0;
3 U! n! S$ T3 d& [3 i! q    upp_error_count = 0;
; c" s! }9 b! `0 j+ z( S+ _& o! r  V, l  I/ U
    UARTPuts("\tResetting uPP buffers...\r\n",-2);( I3 J* k  F  L5 s* a/ L
    // Initialize data buffers
9 H0 Z& L1 R$ w0 |4 d; B( }4 |" d( [    for (i = 0; i < upp_frame_size; i++)/ b8 w+ U8 x& j5 p  ?6 H
    {
( t6 C* Q1 [8 i+ h6 O       upp_buffer_b =i;6 A) i/ p5 [1 f& L
       upp_buffer_a = 0xDEAD;
" q) h. b/ N) f    }
1 h# {* O8 S. D, @4 h2 i) d" l, \$ M0 N0 V9 ~/ q* G# m9 P
    //for(i=0;i<1024;i++)( t, f& ~' n" F4 ^8 p- E
    //    temp=0;) `% w" q; N$ }! ?" l# x( R5 t

8 h! T( e# q7 o0 Q3 C& g    //UPPReset();. `3 @% e) Q( G2 ]
    /*启动UPP DMA传输*/
$ }  Y# d; X& R# d, X1 `. }    UARTPuts("upp_prog_dma_i\n",-2);$ ]6 W' s1 Q- O8 ]/ g
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;2 ?- E: b  c+ S7 @
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
$ ^) E$ `8 m7 W% M    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);- J% t. G( O' c

" n& y( H- ]1 B+ J    UARTPuts("upp_prog_dma_i\n",-2);
: f; x1 |  V! s1 H2 ^/ d+ {; j# p! s3 h    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
4 ]) ?* s6 n: `9 d9 y7 ^  r) C$ w; l    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
$ w0 L1 I( c/ t0 [0 e4 h    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);- L9 R+ C: |9 z! L

" Q+ T: e( [# @. n# B    /*等待UPP传输完毕*/+ _5 ?" u5 ~  {$ G% X
    //i=0;
, {* _1 x, H& s    //j=0;' a" v4 l, W2 F2 N. c3 N
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)  h7 u: N% Q# t5 G9 F
    {
( H  G7 ?7 H# l+ H' k) ^% s9 z        /*  测试UPP传输的同时操作普通DDR数据# O1 L' P* Y+ R5 ?2 r
        temp=i;
8 L% a* b# f, o) F7 r9 M) S/ D- E. q- ~        i++;
- V) v2 L4 `  o, C* r( W3 v+ U        if(i==1024)
2 e% `) p7 @, F7 Z/ W        {
, F" z% r; y' D6 O% E. M            i=0;. r; F! c  }# @: R! ^+ e
            j++;
1 W! Z, ?0 n+ `$ W        }# Q. Z8 v4 |3 a" k2 x* E
        */1 I/ g) C; P% r$ L/ @" ]3 {7 Z( y
/ I9 O, _7 }- e
       asm(" nop");
) k+ L9 i) b" ?! z+ y: P4 G! c7 ^( h+ p2 @" S/ j0 g$ V( M" C. G7 T
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);8 z8 u( z( ~2 ]2 E
    }
" F! S* {# |/ D( P. F7 {) K
2 r+ i" g8 u1 m7 m4 i: q& w4 G    /*检查UPP传输的数据是否正确 (loopback modes only)*/
. `+ m0 C. h8 G; \: D    //UARTprintf( "i=%d\n",i);6 I- v" M$ h! p1 x
    //UARTprintf( "j=%d\n",j);
' r1 ?! W; ^/ ?4 X7 T    UARTPuts("Data mismatch in buffers.\n",-2);
! D8 b/ J, d5 t9 S    if (upp_interrupt_count == 2 && upp_error_count == 0): D! P# o5 y" I1 s0 t( B+ D5 F
    {* A( A$ o) d! R/ X
        for (i = 0; i<upp_frame_size; i++)& h5 c. v5 @+ \6 |9 c( {) R
        {
8 U" \+ f- k9 U8 h9 s2 F1 l  G' h            if (upp_buffer_a != upp_buffer_b)9 T# x8 s6 I3 g
            {2 z" P  I/ ]0 l3 ^" ~6 b- S
                upp_error_count++;
! s' }! J. O8 m5 {            }
# b" R$ k8 A+ T& ]/ Q# ^        }
' c+ G- I. F3 l- Q    }& B4 o4 @( a0 X9 R+ X. ?, n% \

: [" e0 j/ J* `7 X- L    /* 报告通信结果*/  |8 }5 r. U8 T0 O0 K
    if(upp_error_count != 0)
% W4 B+ J9 p5 @5 R        UARTprintf( "upp_error_count=%d\n",upp_error_count);
5 y. U* L# Z* s$ }8 |3 Y: X    else* X" c! B: |& a" _/ t- A& E, ]
        UARTPuts("uPP transfers complete!\n",-2);& ?% I( V9 S0 x! d

" _) e5 M7 Z9 U" a    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
4 K" ^& }& }0 {5 n# B( H    UARTGets(ch,2);
" ^$ P! ?( K5 q! `4 P6 ?: A& l0 g% x, ^    UARTPuts("\n", -2);
8 s0 Q7 N# _, H, Y  E* z, f& k
( g9 Z* p# H( p$ N8 o& a* r3 X    if(ch[0] == 'y')
( S6 v$ W; U6 P; l  t    {7 K" z5 Q' ^' l- O* z' }
        /*打印全部读到的数据*/
! ?5 G8 l8 p; |+ X+ F/ v        for(i=0; i<upp_frame_size; )+ Q( t  |" ^( p" k; x' c5 L; T
        {
+ c4 }; H" S, h+ @0 W5 i            for(j=0; j<5; j++)
6 o, T( X1 s/ F            {! s8 |, O1 g0 u; G3 \+ r' j
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);4 b  c2 ~9 m% b2 C6 Y, l0 V* N
                i++;
% ]0 z% D4 k( M- b6 N                //if(i >= 4096)4 O* ^# s$ J3 v& d! @9 B4 S! S
                //    break;
8 J& m2 P- b" h- J! {( l3 ]
5 G5 \8 p( m% G7 z            }, e' J- ~8 ^$ z  O' O* }# E2 R9 O* n
            UARTPuts("\n",-2);! [6 X$ T, }. u* \. L
        }/ r' }; z* B4 t" H* f, U+ c8 U' L
    }
! A( Y1 L( N, w
' L) R; x: J* c' y}

' k3 T  `: S2 L0 w' p6 {$ d
* L& r) Z: k' b# _8 z# }+ \

! \6 l% f' l( s3 |- N9 `  ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
# j1 `/ y5 ^, n6 W+ L: j: c* D
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。% f! B9 i* @# Q, h: l
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-10 20:44 , Processed in 0.044035 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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