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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?7 y4 o* }9 G: R4 P
Void UPP_TASK(Void); O$ g/ Y0 W1 H$ a! q2 K- a0 E  Z
{# x: p% O7 f2 h, J% W' F* I" a, X
0 I) R! r+ y! s& R% Z7 Z# L5 j
    int i,j,k,target_int_count=2;+ L, ]0 M, R$ P+ l. p
    char ch[2];1 U8 `( F( B4 V9 V

3 R. S, ^* |; M% w. [4 i. ]) n( D* X/ u6 D: P' m
9 t$ g& A5 t. S4 J/ ?) u! o
    upp_interrupt_count  = 0;7 e, b( b$ |) z5 i7 ^% e6 `" g
    upp_error_count = 0;9 }4 T$ d7 Y' ?1 M5 z
7 o0 `3 V. Z# v. f; R
    UARTPuts("\tResetting uPP buffers...\r\n",-2);/ e3 D" r8 w; w6 {" O1 N5 _  A
    // Initialize data buffers
7 [! j! L, I  H0 u    for (i = 0; i < upp_frame_size; i++)
! L' }# C  y4 w2 g3 V    {
& q- R8 T# O6 q; h  i       upp_buffer_b =i;- g$ Q$ |& j0 B, c+ w. G
       upp_buffer_a = 0xDEAD;/ l5 C4 p3 j& J- `4 L
    }5 ?2 k8 f. Y$ b" j; `

- D" {2 K( N6 A. v: T& ?; e& s# w0 Q- m    //for(i=0;i<1024;i++)
8 F: Y6 y( @9 O, @    //    temp=0;* i, m  s6 G5 L/ s# r
& |" @7 N1 \6 H+ a
    //UPPReset();: w7 z+ G* n. }9 }! M- x, e% V6 E
    /*启动UPP DMA传输*/
1 G5 T! k4 `3 w8 U+ P- R. r    UARTPuts("upp_prog_dma_i\n",-2);0 O$ Y+ X" E( n1 u9 O6 M3 ?
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;$ s$ _+ h, S: T; ?
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
) e' G( p7 V  L& K' J# O    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
2 q& S5 |: ]* }$ d; u0 j# r* \+ i' C. K# `
    UARTPuts("upp_prog_dma_i\n",-2);+ \& |$ Z; `' v* e' V. s
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
$ U3 _: y- W1 Q8 J# F    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);) \0 P5 O; a! q6 f
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);9 W* U3 K' e" A) `8 _
) r& c5 g! ~# b: ], M  k, a+ i
    /*等待UPP传输完毕*/4 ]. a: d# z( D6 h8 v0 V. W
    //i=0;- F. b0 w4 T  P0 X7 A
    //j=0;) q7 D# W; I* U2 w5 T
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)' u  B3 _  E4 Y
    {
4 X1 O4 x1 @' ?/ I; m  _        /*  测试UPP传输的同时操作普通DDR数据
8 m' K. T. ]0 B3 x* n        temp=i;
% X8 F& t+ g1 ~6 o! A" g        i++;
, _  J# _3 K! Q! n0 p! I5 U        if(i==1024)
% i8 Q7 p4 p3 e" t) b2 t4 `        {
& c' O9 W: L/ g. D  p, r* u  @            i=0;0 p$ u- z6 h. R+ q& W
            j++;  S; h$ t4 M3 L# Z1 l+ a& ~
        }
/ }- E* s5 E) y2 C1 B* m        */
3 J) h3 e- L" S9 l" J) B% F: t8 ?& o/ q+ A: h
       asm(" nop");
& a/ @, N$ _- h4 O5 V+ H) \
0 @% T- E8 R$ T- G5 B6 _) ?* E6 H       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
8 w  R& @( K8 u# O+ l0 k% K7 L    }
# w  z) R$ k" p3 @+ ~( e. O0 ?. t4 O8 P
    /*检查UPP传输的数据是否正确 (loopback modes only)*/  X" l+ H' o+ K* ]5 B
    //UARTprintf( "i=%d\n",i);
) C" U5 S0 ], B$ `4 w4 c6 A    //UARTprintf( "j=%d\n",j);
8 J" _, O3 i: z    UARTPuts("Data mismatch in buffers.\n",-2);
; Q; j0 w8 I2 t+ `( S    if (upp_interrupt_count == 2 && upp_error_count == 0)3 a8 ~: k( m& Z$ \- x8 }$ X
    {* d3 T% n4 g- T' L
        for (i = 0; i<upp_frame_size; i++)
8 Z1 V1 O$ @4 G! C* I2 m        {' f6 W" |$ [# S" y7 B( i) W
            if (upp_buffer_a != upp_buffer_b)7 k) H2 B0 t1 ?
            {8 d! R5 o4 T4 @
                upp_error_count++;
9 `+ K% i+ y8 H) }# V            }
2 ?9 |- ?4 `& G1 |9 |, H0 I        }
+ C$ g- |3 f" V: w    }
7 w; k8 ]6 P# O# L& O1 A5 e& {4 t
8 X! E2 |4 r5 H2 U  K    /* 报告通信结果*/
4 B4 z1 e: l2 c1 a; [8 P  e    if(upp_error_count != 0)% Z0 U: I7 T* r, s: g' n3 Q
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
( e' A5 r/ D  F) f2 w    else
9 K! q% x: o- Z  Y$ u" o  y        UARTPuts("uPP transfers complete!\n",-2);
2 \& i0 S: l* c* q( [
( B0 N5 b  R! q0 M8 a    UARTPuts("Do you want to print all the data?(y/n)   ",-2);- z9 I! y% L+ K5 d% G0 l  n. d- H
    UARTGets(ch,2);
, l# g  D) x- ?; X+ {    UARTPuts("\n", -2);
6 j# R% D5 i) F; a6 l
4 b6 g7 B* t4 O) s) C( A, R    if(ch[0] == 'y'); z" [* O' H  A/ p
    {1 r6 [+ `6 d/ m4 M. |4 m
        /*打印全部读到的数据*/1 i, t' f% V9 z. A7 d% \5 Y
        for(i=0; i<upp_frame_size; )% C0 K5 M& S$ }' r! z, b2 w4 Y' D1 x
        {% u" I% T0 Z  _' D, N( b; l7 B
            for(j=0; j<5; j++)
" j5 }% c3 ~' g. N: a6 q2 h1 a3 C& l            {. t) J- J3 g5 B- U* }$ y0 e) }
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
7 W; p* @$ y6 {                i++;  y8 z; N7 z  W- r9 z# B( S2 {9 J$ N
                //if(i >= 4096)' e- m1 Q9 b' u) S+ c
                //    break;
( K& n$ M* r+ u8 I' b
1 o5 W6 A" ]0 B4 A+ t7 A. c            }5 U5 g/ K, a9 q* N4 M
            UARTPuts("\n",-2);
/ v. T8 D2 Q1 \0 b        }
# d; v5 r; ]# A6 ^; |. m    }! O3 h0 R% E' [! H1 L3 s- J# K: C7 H
4 z* t, H/ r% X% X5 F, G4 a
}

1 j4 j: x) n" y- U% Y

$ u" ^  s) }  I8 `; l' g) V1 X
/ c' c: d/ L1 y$ B) i. Q9 [& i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
- d- V3 w, s. w) n& T
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。9 \8 {  [# w/ Q- P
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 10:53 , Processed in 0.040004 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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