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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
! {- k9 U& \* K6 Q. F2 {
Void UPP_TASK(Void)' s2 w! d2 V4 B- D* Y$ c
{
) m: B0 {/ Q0 T% }* d
4 v' Z- |! N" G; r    int i,j,k,target_int_count=2;
5 }8 J9 B$ J- d% e    char ch[2];) Q- t3 x# i2 s4 ?' l

2 O/ ~; {8 b$ C% k/ F
! P3 R4 Q& }4 n- ]; ^; N" ?
5 J  T% J8 z* }    upp_interrupt_count  = 0;
# P0 m% _2 v% p* P. \) Z$ e2 V    upp_error_count = 0;0 B4 z) E( k# t7 S
4 i4 _% l' T5 f. y7 J
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
+ K% A$ A1 X$ F: i) Q    // Initialize data buffers) f% W+ k/ j. K( v1 n
    for (i = 0; i < upp_frame_size; i++)
: v2 e$ j# ^% p, ?1 k    {& J( e0 W, V, C7 e# X" u
       upp_buffer_b =i;
( `0 a, P. l, S4 \       upp_buffer_a = 0xDEAD;5 d4 ]. _1 u2 u: D: W. k7 m
    }: E( g" d, T1 s. W' r' R/ j

4 E+ b3 c8 n4 E$ X" H- b, |# I    //for(i=0;i<1024;i++)
. N, V8 N- w! e& T7 }. ]0 \    //    temp=0;
: D2 ?" D( d3 V- K6 Q, s( c$ G2 R2 ?  K2 t3 O+ ^
    //UPPReset();
/ P$ u4 Y% k8 m  w: F. F  B    /*启动UPP DMA传输*/+ @: Q( A5 l6 {1 R  b8 M
    UARTPuts("upp_prog_dma_i\n",-2);4 Z& f+ {5 M" Y# w- c
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
9 ]: l9 {, A( R! G* ]. `0 f    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);2 R  A  d( b0 P$ c5 |: i' ~
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
( |' M- r/ i3 G6 E( `  r
: Z+ P6 W" J  p" V# l1 Q    UARTPuts("upp_prog_dma_i\n",-2);
/ J* n3 b) h' N/ n    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
7 C) Q9 S/ L. [: u: {; ]    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
2 z9 _) m0 `6 n1 u$ x    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
# H% O/ E: h7 X& [! G9 B3 c7 p* t6 g
' r- F8 I3 Q: K6 B1 [7 ?2 U    /*等待UPP传输完毕*/
7 U0 G3 u8 f  z' f    //i=0;( z$ v. P! v4 u" P$ e
    //j=0;
- N  w; y0 e0 u7 m3 q- `- R; e    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
7 N) ]/ O$ P8 \$ V9 L    {
7 j1 Y' p2 T# a; V! C# `        /*  测试UPP传输的同时操作普通DDR数据+ {/ l! B# {  B# v! I  K3 M
        temp=i;3 C/ Y+ h& x) [5 V% Q
        i++;$ H/ D' U& E/ J) [# H) [6 F; }
        if(i==1024). q1 W! b! L7 W/ t- p
        {
4 B, t" i2 M+ H$ [5 Y            i=0;
. ~" s8 Y2 h* c# Q5 P            j++;% a8 Y  X. _) Q( \/ W* N& K
        }
$ P! X$ l2 ~( r$ o        */5 y/ G- R2 w1 F: Z0 l, T, h" G* D
( @, [- ^" s8 z/ c' C: }3 {
       asm(" nop");- }+ ]# i; I4 K6 X
* `, K6 M, \3 a* F
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
3 P: p; c8 D7 c& T+ S) g* |' x    }
" q! Y! L2 o' d0 P$ \' i( a
# ^4 P2 c, w1 [3 c( H    /*检查UPP传输的数据是否正确 (loopback modes only)*/. y+ D, w' x. N/ L* `! B4 U5 ]0 N
    //UARTprintf( "i=%d\n",i);$ p& W: s+ F" E" l
    //UARTprintf( "j=%d\n",j);0 z+ `7 p, l; v  o8 g- o
    UARTPuts("Data mismatch in buffers.\n",-2);0 W" A: A' k$ O( @  C* g/ T. V
    if (upp_interrupt_count == 2 && upp_error_count == 0)
7 q" \! z. L$ m6 v  C7 Z7 b    {7 M) a3 Y6 v) d7 b1 }
        for (i = 0; i<upp_frame_size; i++)
: i9 N" K; F8 t9 M        {( U# V7 @, }# j; H
            if (upp_buffer_a != upp_buffer_b)
- j* x5 n. D4 V+ ^! \8 M4 K            {  z- Y% K. k# N0 j0 h; F+ m6 ~
                upp_error_count++;7 o+ h  C) ~" B. ]+ [
            }* v, Q) G/ {; q
        }
; D( C- n& B; H' j5 j* D2 `& ^    }
: V6 |( [, _9 i/ a% ^
4 b0 H$ r8 x9 [) Z7 i1 p    /* 报告通信结果*/
& O8 \9 A) `& I* t    if(upp_error_count != 0)/ U9 M# }3 p' S8 G1 r( A
        UARTprintf( "upp_error_count=%d\n",upp_error_count);0 y; E1 L  x5 J; s' L5 i+ p
    else& U7 A; Y; d% t/ b- \
        UARTPuts("uPP transfers complete!\n",-2);/ n$ Q  O/ u4 I, r2 m! u
6 @3 k+ @, x+ t3 ^& B* G0 v
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
+ S$ y+ K( l; Q8 e    UARTGets(ch,2);3 B# ~: b! L( s% W
    UARTPuts("\n", -2);1 A8 Z* E/ q7 R& `2 M4 S' ]
4 h" C% w1 G' d% m! d
    if(ch[0] == 'y')* x& s, `! [% u9 O$ Y- H% e6 \4 U
    {
# F* e* @1 m& e" ]. Q/ n1 n) V        /*打印全部读到的数据*/6 J9 D) a9 s% Z/ w! E& G0 {& H
        for(i=0; i<upp_frame_size; )5 a- u# V9 f7 ]4 B* j4 D' C
        {1 r" N. i" c, c! ]
            for(j=0; j<5; j++)0 T  \1 {, A8 U6 `
            {0 W  u5 I0 y4 A$ O
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
) Y! S/ I0 y; C1 Z$ J                i++;
6 x( ?" `; d6 B# A! Q8 |4 G                //if(i >= 4096)% s0 `/ H3 v0 e6 T0 M
                //    break;2 r3 Q& z( I& @# L
. \' f7 J9 [6 N9 c8 \: Z* v+ b
            }
- P! j0 g$ Y+ e9 F9 g            UARTPuts("\n",-2);
/ n) B. K6 [$ h4 ^% l' q0 }        }+ p! s3 F8 n9 a9 K! B1 t
    }
! X0 s* Y6 R( ?# }8 U
. ?" ^( E0 h- D7 k1 y% l0 a  ^}
0 ^  k% r  P1 F4 @% y5 x; R7 i
7 p& y( T: `! ~0 l

( q7 v; G" u, l5 \, ]" A; f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。2 Z- i  x3 N# L, }
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
8 P) t9 e& M2 e+ H' M
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-2 18:44 , Processed in 0.040895 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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