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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?& x3 }, N/ M- P+ j
Void UPP_TASK(Void)
8 Q' U, p8 t6 R{
# b) y: `% S8 r- n- [. U) D2 x; n) o! O; B% X( x) ~% s. e
    int i,j,k,target_int_count=2;
6 E. x! `* B- N: `    char ch[2];8 G% a7 u) B) e
% i$ C2 w. x5 }/ U$ P! U
: M- G0 {. u3 ~9 G% d0 s7 A  }
7 W$ Y0 [  H" m) c+ }: B! e
    upp_interrupt_count  = 0;) c$ @) u7 N/ S$ e
    upp_error_count = 0;* F) K# F7 F6 h1 e9 C3 \: @
& `- S* F2 K2 A. s, U! L+ G7 x  S8 @
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
1 h: h( P1 K( N- a- }0 Z; \. s4 v    // Initialize data buffers
) F) F# @( p2 {    for (i = 0; i < upp_frame_size; i++)2 `2 r0 p' q  {9 O: u8 t, n
    {. H1 e9 V# i2 s- j6 \
       upp_buffer_b =i;
: M3 i& e4 c: k* c1 r       upp_buffer_a = 0xDEAD;
# y5 j$ h% v* z% _4 z9 Y/ k1 C    }9 ^. Y( l0 T4 l7 u, [

0 _. J5 _2 N% `1 F# C. b: {    //for(i=0;i<1024;i++); q7 z2 v! b: ?* v- ]
    //    temp=0;3 ~2 K3 @. C1 R- ]; s
+ A" ?+ k' Y4 l3 r& N" b
    //UPPReset();3 A- H( \6 E: w/ c: ]. g3 W
    /*启动UPP DMA传输*/, u' O0 W8 Q$ a6 |2 J
    UARTPuts("upp_prog_dma_i\n",-2);
9 o; s/ B$ T# h* c    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;0 _" P5 M. Q  ~" @" n/ A& e. j0 r6 o
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
% _9 ?8 B6 o- q- j" N/ W    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
6 Y! Y! c$ W5 d! F* z1 B: C
" W/ X. V, D9 B' E- k( A* k. r% \    UARTPuts("upp_prog_dma_i\n",-2);
. r! F: U7 p. s: y( E/ e% m    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;/ T. f0 X: z4 {" [
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);# z1 ]! }, `* Z3 k7 g: b3 \: D
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);3 U; n7 F& j. ?5 ~
3 j2 q7 @' |1 `. {$ R9 l) r
    /*等待UPP传输完毕*/9 R) r5 `- e, j# t
    //i=0;
8 e; m7 W$ Q/ l1 r( }    //j=0;, ^0 e3 s0 A+ _1 `
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)) A# n4 S9 ?9 K& O3 V- t7 _
    {! d2 k2 H5 _1 G* u- ]
        /*  测试UPP传输的同时操作普通DDR数据+ y9 J, V0 T1 V# m
        temp=i;
' |! N; `/ W0 H7 s( B        i++;
6 I0 u6 q  T8 y8 H        if(i==1024)  K0 z! z% m; y. h* D
        {
  v) l2 X7 A/ T8 K# `  D, V% O            i=0;
2 X( U% }& \4 B/ C6 [! C            j++;
! @, A! N0 D) m0 y7 o        }
7 T' ]2 `4 H, N  p: R        */  K0 N( T/ `0 U2 \# t4 h

+ |$ P" _/ n: Q6 J       asm(" nop");/ e- s/ n3 j+ u1 X/ L) Z% R; i
# `! M) T! L, K9 }" \
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
5 I4 F, d7 y' s. ]    }
! @& ^  i9 Z6 P5 [7 ^: g- `8 U2 [- _. G  m& I; }8 Y/ ?
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
) h" C3 k6 W5 G/ S6 S( E    //UARTprintf( "i=%d\n",i);
' {, C% @' j; W' E( N; |    //UARTprintf( "j=%d\n",j);
. X+ ~4 |6 U( |& N4 @  n    UARTPuts("Data mismatch in buffers.\n",-2);
8 N* b6 `: R7 B1 `! c% X1 W    if (upp_interrupt_count == 2 && upp_error_count == 0)
  o+ Y1 w" `% L8 l    {
8 b( m( k' J9 \# l0 }        for (i = 0; i<upp_frame_size; i++)
# s4 x* I. d) o6 @        {' t5 Y3 h" k0 V  R' \& d9 C/ n- [
            if (upp_buffer_a != upp_buffer_b)
: E% V7 x8 Y0 Z: ~, ^& _# f            {
' \; l0 u' I% W' m# H) u+ c                upp_error_count++;  L/ w! p, J( ]  _6 ]
            }  q6 \' A; G/ O( I
        }
  R+ b/ G5 h7 N; @    }6 ?9 I6 U9 \( A; Q9 ?! U4 g

- F. @! ?" Q( Y* d6 Z    /* 报告通信结果*/
3 r' a! N1 W4 k, O9 y( i$ `    if(upp_error_count != 0)
6 D1 {& q+ t0 y. g; z* B        UARTprintf( "upp_error_count=%d\n",upp_error_count);
$ v* _( ^2 x- Z1 \    else% c2 n1 j4 G# i3 L( y
        UARTPuts("uPP transfers complete!\n",-2);
( d; g8 a  ^; y7 f$ c
+ A9 `  T* e3 k    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
) n& s/ I( F+ C3 h+ \, F    UARTGets(ch,2);
  p+ u0 h' m4 G# ~    UARTPuts("\n", -2);3 ?; ?' `; y3 `. [6 o' W  r

- j( ~/ ?: m$ w6 j- \    if(ch[0] == 'y')
5 C% j. i( P: y8 X& _! ~, C& T    {
/ V; B* {% j3 w$ n        /*打印全部读到的数据*/
- |  A- l0 S* h: {  h        for(i=0; i<upp_frame_size; ); A) m# l3 i3 V! N2 z# h
        {( N, p; q$ b4 ~1 f" D
            for(j=0; j<5; j++)
5 g$ Q. t! R. N$ {/ O' n) A+ t: F            {1 g6 o" c% A) [; A+ z6 D
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);2 `# r8 K8 l+ q
                i++;
9 [& f7 S( ^; C  J) s, j+ N# f                //if(i >= 4096)
8 |+ z. T4 M3 @/ k. o1 f4 L. l                //    break;
& c3 f6 p, m9 u8 N
1 ~4 w# h. q2 ~6 K  c4 B% z- r7 u            }
; o1 d6 D6 t9 x+ S  Y            UARTPuts("\n",-2);& J6 U; h) \7 J% F! Y
        }
) Q: f  q; Q, K( Q    }: X* u& r7 N9 t# K

+ ^4 L) D7 [1 F/ R, b}
) u; h9 |2 u5 ~5 i: i! l" S

3 A* i4 w3 R- [4 H
+ h: [$ [( u9 ^# m6 l0 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。9 s8 L$ v2 Y- l
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。" T. A  G$ r: O8 a. u
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 14:50 , Processed in 0.038987 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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