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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
0 p0 Y  m& K2 y# @" U% ~6 U) p" H
Void UPP_TASK(Void)
* @# v. C1 c  @" {% q/ Y: c{/ ]6 l# \& f; ~$ B0 C7 I6 _
# S( V! m" B1 O) P8 T7 o$ t/ [
    int i,j,k,target_int_count=2;
8 J0 ]! o& q5 y    char ch[2];
+ E( m: ]2 |) R6 @9 u8 b  c
. C2 s5 w- s! e! s5 A! D# n' E1 z' B
# ~' r* `- A2 [+ B% n9 t$ X# U) I; _5 {
    upp_interrupt_count  = 0;
: u7 x% H# l% C. B$ R* A+ {% T    upp_error_count = 0;1 g# M( a2 T( P2 I4 p6 Z
+ c# S8 N! |7 [0 v  h
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
# Z( h' f# A& B5 r' G- }    // Initialize data buffers
  e0 U9 S' b) F4 N2 V    for (i = 0; i < upp_frame_size; i++): e5 C4 Y3 O. d6 ?
    {
( s" R! g" Q" D3 r/ b; l       upp_buffer_b =i;: z( J2 A; x5 \1 D2 c
       upp_buffer_a = 0xDEAD;( I5 @% [1 u1 H
    }
% B1 W: Y1 Z2 ^6 n' h) ^9 N( |3 M6 _# ?' }0 m2 Z$ F$ K
    //for(i=0;i<1024;i++)
' h% V1 x- B) a* l    //    temp=0;$ o9 s3 i  T9 N5 P
9 _+ s! j; l* w! N7 Z: [. D
    //UPPReset();% Q, U; i9 A3 k! P6 Y6 ~
    /*启动UPP DMA传输*/
3 }5 _3 z- _& B3 C% Z% c    UARTPuts("upp_prog_dma_i\n",-2);
; [$ o9 j$ j1 I: t8 \2 z# t% x    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;6 ~4 z# q$ V6 P" }0 L9 P: x6 r7 m2 e
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
' r% J6 `# a7 U    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
( S, V6 R$ x# S5 D9 H) c! C8 ~) a2 t, h6 y
    UARTPuts("upp_prog_dma_i\n",-2);, Q) [! D' u5 [' q" U/ v. _8 a( _' C# i
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;3 q- {$ D+ J" c
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
4 o3 D$ D2 i* d% C- {' V) z    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);/ _9 p5 m8 s4 W* r# y  ?2 Z* Y' p
0 v( ?5 D  g* i5 ]4 n1 A( d4 x: N! ?
    /*等待UPP传输完毕*/
8 n: [3 Q- ^, ?# o- Y- _    //i=0;4 R4 G& z, N3 g% Q
    //j=0;
9 Z1 Z! J  m; @$ y0 ^    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
% p( F, ?; g  p6 \# |, _: M3 Y" ]$ w    {( M2 C7 a1 \) E) E0 a
        /*  测试UPP传输的同时操作普通DDR数据
2 Y2 I! q5 R) w( l  h        temp=i;
7 G  z: _7 \  T$ g1 z        i++;
2 L; s/ a( d9 E# p* l        if(i==1024)( [! Z, s% M( `' a/ l/ L3 w9 \, I
        {
$ Y2 a9 ^9 n! A3 c2 _: z9 A! k1 O4 t            i=0;
! C- J; w9 ~0 @* ~            j++;
5 Y* R# E- u. M. o6 \$ E  P8 b0 P6 |        }
8 E. R7 C$ }% K. v# M9 D        */
! L: t8 d$ ^- U( a/ a; v
8 u  D8 B+ P* y1 S+ _; o. w       asm(" nop");6 s5 L. J! W; p! \6 r
4 Z& p' d* E1 \& M4 B9 l. g( l6 ^/ S
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);8 X4 _7 A8 X  F5 W/ v; R
    }
3 k2 @  t- I* C! G% I: \1 |; p5 H: r8 b: E: v  x" t1 O
    /*检查UPP传输的数据是否正确 (loopback modes only)*/% Q: S+ N" G8 C! c/ A8 F
    //UARTprintf( "i=%d\n",i);
. i. M& T7 r* W+ r7 R, v; G    //UARTprintf( "j=%d\n",j);
  @0 `* x6 J* E# i( N3 N    UARTPuts("Data mismatch in buffers.\n",-2);
' k3 c. `- o- q% I8 f8 v( u/ P, z$ k    if (upp_interrupt_count == 2 && upp_error_count == 0)
) G: V6 o) C& [    {
! I1 g$ B! z& K- }# l        for (i = 0; i<upp_frame_size; i++)- p, |$ W- H8 k7 ?# [2 L! G8 A
        {
' m7 \. Y; ]8 F9 r            if (upp_buffer_a != upp_buffer_b)2 c" y' x' x3 H! ]; |' K
            {
; O, d. G  t$ z* [7 E. n* L. n3 B                upp_error_count++;! M4 J1 L* `3 B1 D5 p
            }
; n7 }6 ?' d! B- Z( Z6 X        }
! d' |$ g( t0 p) h1 \5 K5 x    }1 f) Y. W: J, j# w0 ~$ p+ u
; _' @9 ]  ]; L
    /* 报告通信结果*/( I: w) _$ U; b4 R0 @
    if(upp_error_count != 0)
. X# B* `! k: Z. `9 ~, ?        UARTprintf( "upp_error_count=%d\n",upp_error_count);
) Y3 n: O% N  t; y8 e8 y( ^5 q& E* C7 k    else
  A3 O! R$ A4 j. `        UARTPuts("uPP transfers complete!\n",-2);7 J3 @2 g% h6 K2 ]) L

: P# U# w: ?, @4 u0 l( F- u% d; R    UARTPuts("Do you want to print all the data?(y/n)   ",-2);" G% F! k7 X5 k, {( F% a
    UARTGets(ch,2);
/ i; l) k% x; r1 s) Z    UARTPuts("\n", -2);
, Z6 A. G( N! {2 h$ `# I6 Y
. Z2 z" k2 L$ }" e    if(ch[0] == 'y')
" b3 H& w# H( U$ Y+ ^9 b$ ~/ ^8 c    {+ n2 [3 C- c1 x' ^: ?+ i
        /*打印全部读到的数据*/
& N2 `( q  p# T1 ~8 X8 d        for(i=0; i<upp_frame_size; )
  @# [6 n+ ~$ H5 r) _        {: |& d7 k7 h/ T9 T
            for(j=0; j<5; j++)
+ d: T) m+ e% A; b9 U% _* w1 y! M            {
$ b: z% a- G' M* a( e- j                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
& `. U# @  \9 q- p0 @; o% q                i++;8 Q3 F0 K- z6 x- B3 Z
                //if(i >= 4096)6 y; N& ~, Q7 q* i: E
                //    break;
2 B$ L* R) s; ^1 N6 v
! d' k; t/ c: m8 ]9 U! P: S; f            }4 e8 y7 i, [) d& T3 B( f
            UARTPuts("\n",-2);( u& f2 n) o: l  p; Q9 N
        }& b- `0 z8 o( F7 n
    }
5 |( ^% u* @! T& y- X
( v9 v  u( b7 E: A8 F}

6 a4 Y) G& A1 g4 S5 H0 N
5 E; b+ }- K- x0 C* F/ i5 b

" U# U( h+ H2 Z# k1 }7 I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
  E. ~9 p. w+ N; p% `1 f
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。; A" J5 R& Y+ Z8 @! T4 L; }
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-11 07:43 , Processed in 0.040584 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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