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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?9 b) h# ~. f+ Z7 a5 X
Void UPP_TASK(Void)
1 r, I1 |; `- Z: P- V; n{3 R2 N; a" K6 t+ o# K: ~
7 I. s: ^! K# Z4 ?9 z+ t7 F
    int i,j,k,target_int_count=2;+ o6 O* }& S# V% ?
    char ch[2];3 C" D% Q2 \3 A$ Q0 b

  N5 n# V: ~: P5 H, R3 A8 ^( X) N4 ?3 b' F

+ f* b; ~9 Y: s1 `) ~" `( Y    upp_interrupt_count  = 0;
( S2 f2 g+ Y  o2 l7 R    upp_error_count = 0;
# n3 B2 C5 y$ H( }
% m  M7 r; d* K& h' O) |    UARTPuts("\tResetting uPP buffers...\r\n",-2);
7 f/ D! D$ z& l8 w- ?9 @" H    // Initialize data buffers+ J3 V$ T1 t. T
    for (i = 0; i < upp_frame_size; i++)
! P3 Q: n; A6 S7 x* `; [    {: L$ x; p4 ]3 C
       upp_buffer_b =i;* Y" \7 O, s) [
       upp_buffer_a = 0xDEAD;
2 L  D9 R- A" f' _) |! p    }
: t8 a" U1 n$ n# T
; R& |5 ]' U! @- V& `3 _" |    //for(i=0;i<1024;i++)! q( n( e% ~, ]
    //    temp=0;; Y) u' e2 e. u. P$ C9 c

2 l  i, K* A, M' W  G2 F! @8 ~    //UPPReset();+ r# l8 j, q1 D, R; ?5 r, H
    /*启动UPP DMA传输*/
) F% _; i& D# z) ~' T    UARTPuts("upp_prog_dma_i\n",-2);
& W! W+ q9 L, g7 G9 U  X    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;! W5 d. u( }: E. `
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
+ Y0 e- t  A; K    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
" Z8 @9 X# U5 P. ?) w+ G3 A  ~7 |5 Y$ m) ]% H/ k0 a6 @5 X# }  [
    UARTPuts("upp_prog_dma_i\n",-2);
$ |+ M3 W  O- N! y    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
2 s& f9 |: U1 P- ~. s; {: c. E    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);8 D5 B0 |% K6 b; N7 R5 M) _7 `/ a
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
$ S# n8 F7 V9 ?2 |% ?- J
# n+ @( B' R% j/ [    /*等待UPP传输完毕*/2 B7 Z+ I  [  B+ D; n
    //i=0;
& `0 _9 a! V/ H    //j=0;
6 w3 M- R/ l3 L, c    while (upp_interrupt_count < target_int_count && upp_error_count == 0)7 u  k: g5 d, h1 G) Y& T! O+ `& ~
    {- h% D2 k0 E4 }5 Q/ J
        /*  测试UPP传输的同时操作普通DDR数据
' J6 K( C' R7 }6 y- O% [# ]( w        temp=i;7 a# ^& g; v+ C* o- m. r% S, t' S  M
        i++;
) {  a* W1 _) i$ p        if(i==1024)
. S' q- m/ Y6 m/ S" B        {
- n1 ~3 _) }2 h9 H            i=0;. C4 M$ N, G( Y/ E- W  }/ o3 o; q
            j++;" G. \) ^0 H/ Q8 w; |
        }
' u) `6 a3 q3 g( h9 L" L        */& u& J; K3 x7 ^3 F/ n! ~

+ }% e& i" Y9 j" m& m# J( i4 m       asm(" nop");3 `+ l4 u) ?# K9 I5 Q4 @

1 a2 G* A& ]2 l- {9 X       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);. D" n) f7 z" T
    }
$ P, ?; i0 s4 j" U9 o
( s: ]: j+ e) H" `    /*检查UPP传输的数据是否正确 (loopback modes only)*/
( `7 \6 x1 B( C$ j. w+ E$ |0 ]4 v    //UARTprintf( "i=%d\n",i);1 S3 Z% G1 I% ~
    //UARTprintf( "j=%d\n",j);$ O% T9 w" `: Q
    UARTPuts("Data mismatch in buffers.\n",-2);
, ]- ]$ Q, m5 r- l" n: \    if (upp_interrupt_count == 2 && upp_error_count == 0)# V; r& k% u; H6 s7 ?
    {+ I. s! L0 c8 T$ z6 V& n
        for (i = 0; i<upp_frame_size; i++)" U% ]+ V8 e# @; Q0 {! U
        {# j* F- \. {' ~. d- @( Z5 e& F( C9 ?
            if (upp_buffer_a != upp_buffer_b)+ E- P2 v; U3 b8 Q, j+ p
            {
1 {( I$ y' g$ {5 j+ m6 _                upp_error_count++;
& o0 n4 E: Z/ |3 \            }
5 M& K5 |8 v; n% N( F% m9 c        }
; X! E9 J6 L, ?' F% C+ W# s8 X    }
0 M$ ]8 `& p5 B1 h: v! @) _5 v, e8 {% Y; @8 U0 ?: P
    /* 报告通信结果*/
5 ~+ H, v& P' |$ `6 b% l5 d4 [4 v$ x    if(upp_error_count != 0)
7 _7 U" H+ @# [        UARTprintf( "upp_error_count=%d\n",upp_error_count);
5 h+ {1 ?; A' F    else' O1 P, y8 M/ {" x- A( a; g
        UARTPuts("uPP transfers complete!\n",-2);
- Y. a4 Q) h5 I& e) w$ Y5 U4 o8 B# w! e: U1 ]( g8 e0 j, \4 V
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);# w* }: R% ~9 R- z. E+ U2 f- t# K
    UARTGets(ch,2);# ~) ~5 V, _) W( A% Y
    UARTPuts("\n", -2);/ {/ J0 R! a# H+ _

" G, R0 c! c% m    if(ch[0] == 'y')* c, {: m  @' Q
    {. q8 B+ f" @" c
        /*打印全部读到的数据*/
8 T$ m9 \& n( G. m        for(i=0; i<upp_frame_size; )  c! ]: ~3 R4 h7 L8 u7 v: Z
        {
  m& o5 R9 W# D! r8 T: |            for(j=0; j<5; j++)
, W+ V$ _5 t! t) l4 K            {
) [5 n* v* y! g; `2 ]* E* Q# C                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
9 W( j4 [9 M7 I8 Z; r4 p                i++;+ Z, }9 }4 V+ r. R8 z" O. d% O! f
                //if(i >= 4096)8 m* |( d* j2 y& M+ h
                //    break;
, y: Y5 k6 i1 h0 a4 W
( O& B1 E* J; X& L0 e8 K9 {* Y            }1 ]7 I$ M, P# K6 A* M
            UARTPuts("\n",-2);/ a6 i6 R! q# K# }! M
        }
5 b$ F' p( J' e9 [; h    }
7 b/ C& f/ I, M) K- J# G
+ T6 B. Z$ f2 J* k1 E1 }! j# J}

6 P& _: Q4 H% b! o, T# \: _% U1 |
+ Q" I$ y# O* ]/ o$ w# E! M/ \

( c* P6 i6 `# b3 K1 c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
. w4 x4 L( R0 i' S
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
- [- C( Y5 D4 w6 z* x6 M6 |
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-21 07:46 , Processed in 0.040417 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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