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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?5 G2 G2 l; ]: V7 ~+ [5 X
Void UPP_TASK(Void)+ o9 L$ N  p$ E- K! a- C6 r( k9 v
{( k2 A7 [/ C  i+ ^7 p# s
+ _2 w6 Y+ H# I
    int i,j,k,target_int_count=2;. B* O: j7 A% L4 t
    char ch[2];
5 u8 b: e. _# v0 s9 C
" ?$ d; y! f9 E! W
; J6 K( _% u& Q5 ?2 Q, j% s- Y& J0 f& X  F/ d1 z6 M. Y
    upp_interrupt_count  = 0;
; f8 g% p$ @+ }& {2 m    upp_error_count = 0;8 C7 e) n2 M1 u7 z) q3 ?6 C3 s
- k+ i' b9 ^8 ^/ W1 `! [9 F
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
( c0 m% N, O' p' ]( f9 A    // Initialize data buffers8 v5 g6 m! h  g( p$ W. m: ?( Z
    for (i = 0; i < upp_frame_size; i++)) i$ }0 H( Q" i# d$ v, Z. H9 k( E$ t
    {
* h- E  K0 Z2 c: n; u% f4 Q# D       upp_buffer_b =i;! Z* _2 C# R) S! W; n0 f# L  n% _) G
       upp_buffer_a = 0xDEAD;
- O# S7 G! O7 Q* ]1 o) O' R    }
' g$ q% v( L" A- D% Z# j  p! }
$ N% Y9 x/ Y4 P' w* L, J    //for(i=0;i<1024;i++)! c/ Q0 w- p2 k+ e' I2 o
    //    temp=0;- `( g/ F3 Y0 W1 H6 U

# `5 \$ Z- P) o' T/ i0 E    //UPPReset();
* D1 I& H! e; B$ \; m- J8 N    /*启动UPP DMA传输*// s' Q& a, H4 z4 R0 E2 U
    UARTPuts("upp_prog_dma_i\n",-2);
6 s5 |4 \2 W5 o2 \1 V! x    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
6 f  @2 |5 L$ O) y% d: H+ T/ H    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
/ P" ~8 l) ^0 Z: [    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);2 n0 a9 q: W0 O; j5 o1 P# X$ ]( J
- o- i& o0 w, _
    UARTPuts("upp_prog_dma_i\n",-2);
* ?) i* Q0 R$ z; U9 A' a% a- ?    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;4 q. `! N+ ^" t. q7 N$ I
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);- Y6 n6 U5 I7 P5 \  ?- @1 v
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
6 d1 ?8 U8 i" U% b3 M7 ?$ [% T% V9 w. r4 |9 D% J
    /*等待UPP传输完毕*/
1 U* D2 X7 x" o, S2 ^" w; V+ o! [    //i=0;
8 b& F. r7 w% H0 S: U. [: @8 _    //j=0;
- I1 e3 f! g1 ^, B+ L; _    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
2 g1 @6 X0 `" g* b2 t% {( X2 ]    {4 H' l$ l. g: \& L) `. L4 B' Z! i
        /*  测试UPP传输的同时操作普通DDR数据
/ Q6 {. _7 X7 V* }        temp=i;4 J2 x' e. S$ r
        i++;! b0 ^6 Q5 |$ T* \* q
        if(i==1024)
9 T7 U  i! A5 l        {6 j0 A& `1 F+ j! [) m" N
            i=0;  J5 Q2 R0 L" \2 U; k/ R
            j++;
' h6 [, `3 d. m# [4 y7 v        }- r& G* c5 t$ @0 O. \7 |
        */
9 p; I9 o3 ?' E1 o
. Z; H6 z- \  T. s       asm(" nop");
- ~9 u7 n" f; j' n3 o6 w
! L' y7 l0 U0 u) R  x$ \% w       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
$ c) P# U2 t. M8 E3 g* L6 y    }
: Z9 v- Z* r& `1 Y$ ^
9 Z# `& F9 {( u' z; x; ]7 t    /*检查UPP传输的数据是否正确 (loopback modes only)*/
) a6 k8 N& a1 @    //UARTprintf( "i=%d\n",i);  P* f! h1 F( y
    //UARTprintf( "j=%d\n",j);
9 U8 ^/ A6 c6 i    UARTPuts("Data mismatch in buffers.\n",-2);' r# N0 k8 z2 n- E& f
    if (upp_interrupt_count == 2 && upp_error_count == 0)" }6 i2 ^9 g4 X7 i3 z. E
    {  J4 P- G: N3 d3 s# n& G8 m( W- I. o5 w
        for (i = 0; i<upp_frame_size; i++)
& r! G9 @/ F& F% }4 C; f6 \        {( m" f/ n0 N& S/ }7 S
            if (upp_buffer_a != upp_buffer_b)$ D/ _+ \1 n! [" h) b
            {
6 u8 n/ Z, p) a) f' a/ W                upp_error_count++;# q6 x3 D( B& \  p4 B# \7 v
            }! `/ j. H% v3 d3 c! A; `
        }1 w- ^/ Q8 c& f1 m# o" X& Y# ?
    }
" ?' Y1 \0 X2 T0 \# z( U, O/ X9 y* F, i0 ?; V) [0 B" [5 M
    /* 报告通信结果*/
6 W. b0 P9 I: J" r    if(upp_error_count != 0)
! d/ {( E1 T$ |: B6 k4 c- E        UARTprintf( "upp_error_count=%d\n",upp_error_count);7 j' g# ^8 G6 W" |" i' X) W8 m
    else( P- i) W# r4 |' l
        UARTPuts("uPP transfers complete!\n",-2);
9 @0 X5 K: P1 {! J; C2 }' h
3 H3 m  I+ i; q+ D. [" E+ V5 s    UARTPuts("Do you want to print all the data?(y/n)   ",-2);0 Z  O2 w; @* L5 {. {" R
    UARTGets(ch,2);
3 C- c8 T8 M( l+ ]7 n& q& f    UARTPuts("\n", -2);, c- z: L/ H' l6 o
6 M' g6 h! O/ f
    if(ch[0] == 'y')
4 W" C8 Z1 S# {    {
9 F8 @5 D% M( C6 d        /*打印全部读到的数据*/2 y/ j) e5 y0 B2 z
        for(i=0; i<upp_frame_size; )
; S4 ?- X) V: _( J6 F. z: c2 Z: g        {
' f1 _6 |6 T1 y3 y; }0 B! r6 ?            for(j=0; j<5; j++)  k" T' ]- g7 w9 c! j
            {
, U! K( n9 B* u! o5 O* V; m1 `                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);3 s  Y/ d1 P  a$ Z6 F
                i++;. \$ S" W$ W7 T6 f: B" u
                //if(i >= 4096)% k* V. ^0 |2 u4 d1 i
                //    break;8 B' Z$ U, G7 v# k* |6 z

# ^. [9 R" w5 t+ I* f; R            }
8 c: H( y& N( O4 a5 i. Z% y) }            UARTPuts("\n",-2);+ \2 U4 F$ [# L' ]' k  D6 _) Q
        }
. E, D1 A/ d2 [( v    }; h9 A! v( d( \: c$ D5 e7 g

, h1 o% K# ~4 a}
! }7 f1 E" J4 U5 J" [

+ g& B4 a% Y$ N* i$ O& K8 t% E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
) Y& m: k7 G& G5 c3 U
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。: m: n" J: ^5 R5 C
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-5 19:49 , Processed in 0.041265 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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