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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?' G6 s* ~! n+ ?5 S
Void UPP_TASK(Void)
# H6 {& B5 L5 O4 Z6 j7 }{
; r0 T( _3 a3 _5 `1 H8 Q2 Z7 j( R* E" C8 ^2 S
    int i,j,k,target_int_count=2;9 Z4 s$ D+ {( n1 x* M3 s
    char ch[2];( a. J# g' R  N1 o0 m! e
  f1 N  {; K  n/ P8 P. y( A' T( Z

. e1 _5 Y* d0 x" j- ?' W
, X) M3 h8 M  _/ u& x' s    upp_interrupt_count  = 0;
. A, B, _5 b$ o1 J5 I    upp_error_count = 0;
1 L" J; k1 k1 P/ t  k% L2 O
2 f* l) {. U) S3 |2 N  X& n2 @2 \    UARTPuts("\tResetting uPP buffers...\r\n",-2);
5 t3 i( T: K* M* x& f6 E    // Initialize data buffers
' f: _7 l; y& E( Y$ i    for (i = 0; i < upp_frame_size; i++)
: ^2 u  E# w0 Z8 i; H. M# e6 |    {/ B# O1 u& J8 e4 Q" r8 H. X
       upp_buffer_b =i;, d# ~2 r3 X- [
       upp_buffer_a = 0xDEAD;1 D: h1 m# z3 ~/ ~3 e  ]
    }
- @) m) O6 j2 A* Q9 i7 D7 C4 F! L6 B! |: |* E  ?& Z5 \
    //for(i=0;i<1024;i++)3 G$ h5 j  I2 v* F
    //    temp=0;
: D8 v+ y. `& r, V3 h$ b8 L0 [1 T2 F* f3 W: y" U: s9 _
    //UPPReset();
5 Y; q( x% Q8 p! ]# O2 b/ t- F! [# r    /*启动UPP DMA传输*/
8 \# w" X0 ?* X( ~, {: h    UARTPuts("upp_prog_dma_i\n",-2);
& K$ i5 U- l6 o8 i( ]; N    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;3 p+ v5 K: s' K5 O  `3 a
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);, L$ |$ V1 Y/ w
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
+ E; Q, b& n% \- M3 O: t: ~, d8 ]! Z- V& S0 N7 _8 b7 D
    UARTPuts("upp_prog_dma_i\n",-2);
' T1 V/ O& j+ Y% P! T0 ~    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
# S# C1 W! n7 E$ O; ?% J) R  T4 k4 ?    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);* q8 P; w* X. r. W8 f% N; H
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
! `7 b' ?/ r" Y
: ]1 B- D3 y1 q0 `) F    /*等待UPP传输完毕*/
: x! @8 x$ y7 o0 g/ D    //i=0;3 L% _5 D# c# b. c, t: y
    //j=0;6 N' s* }4 S0 Q/ l; f1 v
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
7 R4 Y2 g( o( c* `' l    {
( ]" d# p6 E6 O: h2 J% y        /*  测试UPP传输的同时操作普通DDR数据
4 c/ [7 ]3 B0 r- m        temp=i;
  |* Y* }: q! ^3 y9 l4 h( q! v        i++;
# t: j1 N0 v/ S1 b6 p        if(i==1024)3 W8 [1 T% Z  M2 W" k/ P
        {# }( k) A7 U9 X6 }; U
            i=0;4 C0 i. [, L/ J; K2 Q( U) k: C
            j++;9 e! H" j, w7 M! }
        }
$ Z+ r9 H! w! |0 \( U        */
* d2 E  G; W  U+ e7 D4 K* j0 g
. g9 p  w/ k1 O: ?7 _, F  m! ?$ d' r       asm(" nop");
/ o$ K+ q) m  K+ Z6 L3 j5 e9 h
. v. A8 H) |* [/ {; }$ w: {       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);1 p/ a- j/ |+ l# m3 ^
    }
* _2 ~0 e2 @6 f2 F0 w# X0 `7 k, h5 W7 X$ u5 n! r
    /*检查UPP传输的数据是否正确 (loopback modes only)*/. A& k6 N8 F. ?, _& i7 Z
    //UARTprintf( "i=%d\n",i);
' ^5 O9 W/ ~& d5 ^& h    //UARTprintf( "j=%d\n",j);
3 H2 K' [5 W. s  H1 E* y  S* F& Y    UARTPuts("Data mismatch in buffers.\n",-2);9 Q7 j% |+ x2 c9 y- c; Q
    if (upp_interrupt_count == 2 && upp_error_count == 0)
6 Q; b' O$ H% K% E0 P! _) V2 A& {    {
' U" O3 e" ?9 u  N2 y8 M        for (i = 0; i<upp_frame_size; i++)+ g& o+ D/ x: Q2 i! K
        {
! J4 v; F) F. l2 a2 b8 t            if (upp_buffer_a != upp_buffer_b)8 m' |. J  P6 n: V, W+ p4 N! k
            {
. ]/ f0 X$ m- W9 R6 G                upp_error_count++;2 d. o9 {" p* L$ Z0 g2 d- B
            }2 M3 E5 |$ U# o3 h' X: F
        }
( e+ l" \8 N- A$ }9 u+ }8 \2 M    }/ c7 K$ Q* s3 h# X# H$ _

8 m$ `) J* l4 y( f* T2 s9 D2 m+ O3 u    /* 报告通信结果*/
) D. |. \$ t7 ^5 q5 q    if(upp_error_count != 0)
% I- b5 D0 M* l8 H$ h2 K        UARTprintf( "upp_error_count=%d\n",upp_error_count);  ^! z# g$ t/ g/ z' x- C2 f6 N! l; [
    else
( Y, e& V6 ?" E        UARTPuts("uPP transfers complete!\n",-2);
; i& {. F) d+ n4 f% t5 t+ P- N7 o# I2 o. r) S7 ^! d3 I; s: L
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
$ Y; ?! `9 I( ^" I; V5 Y( a    UARTGets(ch,2);2 _7 Z) Q: t7 K3 s
    UARTPuts("\n", -2);
; i* i6 m0 [3 F  j. p3 s: _' @
$ c% e4 I+ L0 |& B) t3 E( i4 k    if(ch[0] == 'y')
7 L) m" a. }/ P- ~, X: K" i    {
- a: c& \) I; c6 Z        /*打印全部读到的数据*/
3 T, i  w9 c! h+ d        for(i=0; i<upp_frame_size; ), c0 Z- `# ^# J7 s, z
        {. W" ^% ~3 G3 p; c: ^. o: ]# ]
            for(j=0; j<5; j++)
& M; Q! X6 z$ ]$ ^5 e7 y# H* d" _" s            {4 m3 `  r* i# w( V
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
6 m0 R; L5 @6 `. S" B                i++;* ~1 O) `9 V" L3 `8 k, F2 V
                //if(i >= 4096)4 r# \3 {4 C* i  f1 c( j
                //    break;
3 L0 l1 X) m$ {, N( C2 Z+ H
3 z; ]; o4 S" t6 J) {  m            }
% W; |8 E: w5 g  ^            UARTPuts("\n",-2);
$ `4 w$ i% `- o0 _7 l        }
/ \# e0 w" h! ^3 v/ k8 t5 q    }
8 E2 _( h7 Y' x  n7 s4 {  s2 M: w* a% d+ r
}

& D: ^) ?# \. X) n+ s0 m
! B' V! W0 R' Q5 B+ ^- W% B3 N
/ F8 i0 d- C6 ^2 s, _' n+ L. e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。. g0 K# O# r5 z, [
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
/ w5 G$ b$ G* D/ @# ^
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-22 02:36 , Processed in 0.043161 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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