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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?# }. \" P9 L6 v6 F; P
Void UPP_TASK(Void)
! A+ w2 H1 t  N/ C& p9 h{' |9 q- k! w! l6 o# B

0 x: Z* ]- u$ {    int i,j,k,target_int_count=2;+ g/ ]3 V% I4 w
    char ch[2];* ?4 J. [5 f0 o" |8 F, V8 R7 \6 d
9 R7 H6 E6 x, K! z

1 v4 _7 K' h( Y- ]5 m- l% t  D( n  G- j/ O
    upp_interrupt_count  = 0;, r# n' t) ?& G$ z- z
    upp_error_count = 0;
/ }, b' P% M* f0 v; U8 p1 J8 b" d
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
7 F- G" E9 [; s    // Initialize data buffers" O4 N: p; v8 m, |
    for (i = 0; i < upp_frame_size; i++)! m& [/ C; i9 A+ X
    {
0 `6 A) L0 k& C! ?- w       upp_buffer_b =i;+ U  O. _) d) h9 H3 o
       upp_buffer_a = 0xDEAD;
( |" |, \5 {" v; ]6 k" L    }
: y2 t6 @  v( ?. D3 h/ J
8 H2 |9 P5 s2 O, ~; S+ e    //for(i=0;i<1024;i++)
) R; G: H0 T, [+ n4 F& ^) G. d# E* B    //    temp=0;
/ q  ?# R: @: \0 I
: a) v7 E3 e/ F9 Q5 Q    //UPPReset();% e+ p) M4 \+ K# ^
    /*启动UPP DMA传输*/( c! C3 C1 f; ^- J4 D5 O
    UARTPuts("upp_prog_dma_i\n",-2);$ N" ]9 f+ N) N9 D9 Y( A8 ]
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
; r  d+ M. _* L    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* `1 V* M( t+ [) G( \, U    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
" T5 ?* [. ?0 d' i$ [
" x! e. k4 C5 S    UARTPuts("upp_prog_dma_i\n",-2);
, H3 q, B# D2 z9 H* R; ]    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;; F! D3 [' m- w3 a- l2 P
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
5 F6 {" w# b& O  J    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
0 L6 e; w5 p# o3 x$ Y8 V  r. }4 w3 `& }9 d$ [3 O
    /*等待UPP传输完毕*/
7 O5 Z2 v" G" \% C    //i=0;0 ?" \1 m, D0 A8 e6 b+ w/ x
    //j=0;
! }6 l9 p$ y8 U, N5 v/ B8 _    while (upp_interrupt_count < target_int_count && upp_error_count == 0)' L% V' a2 {& v4 r+ [
    {
; g+ d) K8 T  W3 Y! `* u5 \        /*  测试UPP传输的同时操作普通DDR数据( x) q9 ]% z% u
        temp=i;
+ w' A0 Z/ x4 J3 y( F+ \/ T$ r        i++;* I. z( M# J5 W# h1 \1 v$ j2 t
        if(i==1024)  Q* h- G$ ~& c) |! V0 A* e
        {; l3 e. j; s5 p$ N0 J, g
            i=0;" T  e& u, R( h# Y: m
            j++;( A. p" U- E( n5 P$ \+ c
        }0 A2 ]% K; v0 e; L( F% ~+ ~
        */$ k0 H7 x. e0 r% c# `
$ C, j  ]% n3 V
       asm(" nop");3 e1 h; [. j# z# Y# i

: a/ P: u% o3 s       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
% k9 p1 r; L8 d+ z. G- {) @    }
" z* M. Y; A9 f( H; d
/ P" G, `, y7 e4 |% C    /*检查UPP传输的数据是否正确 (loopback modes only)*/. b; s# K) x1 i6 D: @; A% E" E
    //UARTprintf( "i=%d\n",i);
1 L( G& K' N. |    //UARTprintf( "j=%d\n",j);
/ Y. @$ a( [# z; Y8 ^! m    UARTPuts("Data mismatch in buffers.\n",-2);8 D0 C* C4 \4 [, a: [
    if (upp_interrupt_count == 2 && upp_error_count == 0)
* F. T0 E+ n, K. ~    {
5 F& J! q2 G( t: V        for (i = 0; i<upp_frame_size; i++)8 f1 I  s* Q8 ~+ I- Z
        {
1 U2 \! a8 H" h. N" G& y5 p" G            if (upp_buffer_a != upp_buffer_b)4 v5 q5 H, F. ~' R; \" M8 N9 R5 A
            {; p6 p* M7 X) n5 S/ n, x( O) h
                upp_error_count++;0 ~7 {1 [! I) [: V! g6 n' ]
            }
) Y0 @# K( x4 _* e) _7 i        }& z# O, ?/ |7 P0 S. l) k& I! h' P7 B' r  |
    }
, l8 x( L7 y( n' t
6 y0 D7 U+ n" l  {0 S    /* 报告通信结果*/
7 A/ R9 g1 z! F; E: m    if(upp_error_count != 0)
# j" B# L0 Y. i2 q        UARTprintf( "upp_error_count=%d\n",upp_error_count);
( P; r# Z7 C3 M6 o1 G' A    else
* L, t- x  {( d2 c) P        UARTPuts("uPP transfers complete!\n",-2);6 b9 O1 ^, k9 c9 P( S7 e: @

' [' x4 P/ p) O2 g7 g* i7 ]' \    UARTPuts("Do you want to print all the data?(y/n)   ",-2);/ Z; Q7 l( D. K" G* k$ c6 E
    UARTGets(ch,2);
, Q' t" a, p+ y$ @# @. J/ q    UARTPuts("\n", -2);
  T) S$ F0 @% q, j: c7 j
$ o( G6 m1 Y9 T    if(ch[0] == 'y')4 U8 u  R, J9 g
    {1 a1 h# w8 s- L; N  B4 v& p
        /*打印全部读到的数据*/7 e6 ~3 f3 B' I' S. P+ B, i
        for(i=0; i<upp_frame_size; )
0 T# |. B% l; P        {# Y3 p$ P$ b4 D/ |1 Q: v" R
            for(j=0; j<5; j++)
, U5 v: }: F: l2 i            {
0 ]9 b2 p; f( g$ D                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
- }" w. @4 {! V) [0 y, H  [2 E                i++;4 c: U3 l3 L6 r5 L+ [
                //if(i >= 4096), O) k* [: q" g$ S
                //    break;
5 V0 i( E) k' F' [) j
8 ?3 v" l/ k2 y8 `; x            }& V! M/ {. x: T" Y4 v$ R
            UARTPuts("\n",-2);7 ]( N* g5 w% Z) ^. F: V. k, p
        }
; C7 j7 e6 O5 k: x) Q    }
1 M  J* v6 s) G8 Y9 y. E/ i5 L9 z: J5 \
6 D1 W: F' d$ h. x9 y}
/ [9 `7 A) W+ r  G1 d5 Y

1 o+ ^6 y+ q  v9 |+ }$ o& |8 x
2 b5 Y% G, a7 j9 d' d6 C4 Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
: U6 ?  t+ w; I0 o4 ]6 s
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
% z- @8 x( p  H- y# ], I8 s
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-16 11:34 , Processed in 0.045778 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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