upp问题,在SYSBIOS下的应用问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
- S. \7 R) l* F+ k" A; {
Void UPP_TASK(Void)7 O0 k7 \; O8 W6 U
{( Z# c$ `2 X, k+ S( D
* w/ J$ O2 G1 j% b7 {" R$ \
    int i,j,k,target_int_count=2;" Z/ S0 Q0 ^/ u, n" q, `* Q; V, a. G% b
    char ch[2];
1 L: A6 A* G# m5 l7 k. f
) F! U" k) W" R  A: e& i0 g
2 \. ~7 D+ r2 ^1 Z/ T5 w
, _3 U5 E( [( e    upp_interrupt_count  = 0;# S+ L) O$ n4 S! c+ H: ~
    upp_error_count = 0;9 m0 ~7 `1 T( P  v

1 F/ W% d9 `3 ~* x    UARTPuts("\tResetting uPP buffers...\r\n",-2);( G! B/ t# @8 x
    // Initialize data buffers7 N4 Y. H/ g+ t4 {$ e( @# _$ L
    for (i = 0; i < upp_frame_size; i++)
/ }9 d. s/ y+ L0 Z0 P( q4 n    {0 `, j, p+ `" W2 z" T
       upp_buffer_b =i;0 O0 P/ T, ?1 d  ?+ J
       upp_buffer_a = 0xDEAD;
% \% x5 _& Z- B! J0 y. j2 S    }: r% N0 ]* I' W( U
/ l  ?" D6 k& ?( _4 a) W
    //for(i=0;i<1024;i++)) S# W7 N  j. y8 Z/ u
    //    temp=0;  V; Y5 }% x2 i

" O9 l5 _3 X! B1 V" H    //UPPReset();3 v, J4 U$ H8 o4 j  U8 _
    /*启动UPP DMA传输*/
) ?" E5 u% W5 \4 T# d- m    UARTPuts("upp_prog_dma_i\n",-2);3 ~0 I& |+ U7 u* _! u
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
" F8 b# g  Y) D! c1 O0 J* A    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
1 }* b4 B  {* V' Q. S; v; ^. s    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
+ W8 ?, q: r& I( Q' d+ V4 T- n3 q1 E( z# M
    UARTPuts("upp_prog_dma_i\n",-2);
6 Y# x) Z: ]( d5 A4 L    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
3 p/ V8 M- k& _# W6 \    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
0 c1 y9 U. E+ r: k# I: n4 a    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);: T% P+ c7 U& H3 G3 H" o
" ?$ i* O7 {* I8 [  A
    /*等待UPP传输完毕*/
8 _+ `$ w' Q% Z. M. G6 M  q    //i=0;
# H9 `+ c: N. m# b; d2 z    //j=0;
$ w/ d! F" t( x, c/ V4 J    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
' S3 a$ v) q) Z; a0 E, N2 F    {
1 o  S) o6 @; \        /*  测试UPP传输的同时操作普通DDR数据1 @; b3 r2 s( @
        temp=i;
" e. q4 r: g; \, \! L        i++;
8 R5 A+ o( s8 h+ A& z7 X        if(i==1024)" W7 |0 ]4 ~  `+ Y3 G4 o" H
        {! F& @$ @8 \0 u8 B' B0 K4 d
            i=0;
, `* J+ |% ]7 P; K" a* Q# i            j++;
: d% N; A2 {9 J. j        }
% |5 c1 ], ^4 G; C" Y3 G* |9 F        */' s) z: t. F4 W# |; P9 d
' [5 V- L. L5 @6 e0 P3 m
       asm(" nop");0 E, P& ]/ {2 a  [4 b
) R+ j4 x5 _! S2 M: q2 z
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
) i* I/ N( r4 Y- G; B: y    }  }  C2 q* L$ G' g/ f& Z& k( ^
8 N! |# \/ ^) z6 w$ i6 N
    /*检查UPP传输的数据是否正确 (loopback modes only)*/  {9 @5 N2 a: h
    //UARTprintf( "i=%d\n",i);8 j2 ~* G5 }3 W" v. f! r
    //UARTprintf( "j=%d\n",j);# B2 p, U/ ~$ k, s- z+ v9 n; D
    UARTPuts("Data mismatch in buffers.\n",-2);/ c2 ?% q# S# g- y* y
    if (upp_interrupt_count == 2 && upp_error_count == 0)
9 I1 g/ m* X9 r' S5 w% m' l    {
2 {9 l# r" N  B; J* B6 _+ X9 B        for (i = 0; i<upp_frame_size; i++)
8 X0 R( w3 l8 q4 C5 k( v- y8 |        {
9 ?* E4 y8 \4 A& P. S7 a            if (upp_buffer_a != upp_buffer_b)% T; _) p$ ]# \+ e% q8 u0 O/ I
            {" ~' t0 q( @5 [; |4 A
                upp_error_count++;
; S) i* j" H5 @4 F  h+ v            }
4 T  A& p! y* E8 P        }
! [& W+ X$ \1 P4 v" H8 M+ a    }
! J% U9 `, }6 i& m# `1 I, j8 |3 @& L1 I5 y0 O: c4 q
    /* 报告通信结果*/. n0 v* E  l# ^" w  L
    if(upp_error_count != 0)" P' Q) a% u3 j) D# L6 u
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
3 s, Y1 d# C* m/ U* ~# J    else: r  q3 Y$ T: Y# k: f' B" [, @
        UARTPuts("uPP transfers complete!\n",-2);! g' a: S( ]4 e2 ^
! r1 j  x6 h4 a7 m& ]
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
6 z! `' n+ m) O3 e/ z! X; z! h    UARTGets(ch,2);) r8 e9 Z2 ~' J$ s- q( l
    UARTPuts("\n", -2);5 Y5 G. x" ]$ x1 M& v
4 `  ^+ v4 T9 }8 p
    if(ch[0] == 'y')3 @, h  g: @9 P7 m4 r) s
    {
$ S( B6 E% m8 P3 ?        /*打印全部读到的数据*/
: X' m' `! y, e, n8 Y8 q2 X! @        for(i=0; i<upp_frame_size; )7 p* f8 {. B; J+ @8 L8 h
        {# d" {+ [) C6 s9 k
            for(j=0; j<5; j++)( p" m8 }' {3 J  x4 H5 q8 V
            {
- `0 h/ S3 ~6 c9 a2 w: q                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);) u4 u1 Q" [0 e2 g$ g- A
                i++;! v* H% e6 t4 K7 m1 {* O7 G
                //if(i >= 4096)
! I/ Q. m+ H$ a8 E% [% |9 @                //    break;( X" N2 O' W4 e$ u) C( z0 b( W3 v

6 D) K: q/ R; z' E1 `8 S: V( O            }9 M5 x7 X0 P* ]4 ]+ _/ ^
            UARTPuts("\n",-2);
8 g  S- i8 F) n( `6 p! ?/ _        }/ o; t) b" {9 G+ Q3 [" I
    }
0 Z5 O4 Y# i! p' {8 {! Z( L! d
/ A5 D8 a% |" N6 e}
& g6 ?. s2 Z, m- N' k6 X! O4 o( D

1 ?0 Y; h  Y- [% N, Y1 \
5 h1 t8 [/ i; t& l2 M: B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。" _1 u* I% [3 e! D0 K8 [1 X% U
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。5 z7 c$ D( i! e1 R8 E# }4 a" Z& F0 n) O
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-1 20:15 , Processed in 0.039585 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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