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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?9 [1 b% K2 s1 [0 J
Void UPP_TASK(Void)2 Q: ~2 g4 K" T- U$ D
{
9 J. @/ s# k0 w! E" B* l
) W* e" Z: J% }; M- m    int i,j,k,target_int_count=2;/ B2 \7 ]+ [2 K( ~. V2 h+ n/ y
    char ch[2];
! S0 ?! W5 o$ |/ H' ]9 N) ^9 W, L! Z
: O. A5 U9 v2 T) \& Q  f

4 d* y. r( _; E0 b5 ?) `    upp_interrupt_count  = 0;
' J) T9 S* j, C( x    upp_error_count = 0;. |( L) v+ ?3 b

1 v5 h# s9 `' A" d) U    UARTPuts("\tResetting uPP buffers...\r\n",-2);$ _3 P" c: O% A4 j/ v
    // Initialize data buffers
  g. }- ]( a( X7 q3 |+ i8 G    for (i = 0; i < upp_frame_size; i++)
0 i7 n; e* s6 ~* I2 `7 m2 W    {: t( l9 L8 b8 P7 B2 V+ C' Z; }
       upp_buffer_b =i;
3 `( |9 \( F" R- A0 Q; v( X       upp_buffer_a = 0xDEAD;* H8 z# L' D) ]' y2 F& f
    }" O3 H+ S0 x1 [

. q# y! P5 o1 r5 j9 m$ a  y* C) G    //for(i=0;i<1024;i++)
' \% w# k" o3 P5 w. _  f- ^    //    temp=0;- k  e+ Y, q4 R9 O( ]" Q
9 l5 G7 I+ R& s1 f8 K7 \4 \
    //UPPReset();
. [8 o4 n! E. G! v    /*启动UPP DMA传输*/
$ K8 [" u  A$ T# i/ L8 K1 |; y) u    UARTPuts("upp_prog_dma_i\n",-2);+ @9 `" ^3 X' s+ s+ [
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
6 M6 Q" S$ I- d8 y* b" {    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);7 _, T5 j3 ^% D+ G2 r; ^
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);/ s" V% v% x9 x  X$ U
) k9 M; F% @" f+ `& C/ q' A  F
    UARTPuts("upp_prog_dma_i\n",-2);2 M  u6 [0 p8 E
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;$ E# d' Z1 I8 M* Z: E5 L: J
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);( x7 J- m5 x1 y2 O
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);4 e3 v2 Y, j% ~7 C' d
6 J) V! E% z# a" g9 O( d
    /*等待UPP传输完毕*/1 C7 f# k+ L% D  N' W) H0 h$ {, {
    //i=0;
$ \, y$ n- X4 q% d7 W4 O' ^8 j  E    //j=0;) Y2 X( B1 T+ I) t
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
% T5 [; ?2 r3 U7 X- T    {  d4 N! `9 r! y+ Q. {) R9 u& z
        /*  测试UPP传输的同时操作普通DDR数据/ U# I  X' \; X$ w
        temp=i;# Y& w, Y! Y; E- y3 J
        i++;
) K0 Z! U9 q' P7 i        if(i==1024)8 [# k/ f. J# P9 t, i7 s3 G( B
        {, S$ t5 j# O" K) ^( m
            i=0;
9 p. w$ O8 {6 T9 n0 M# W1 Z1 v" e            j++;
; e) W$ L7 r: ^' W        }
( _5 M$ P2 t3 g1 S5 a9 v        */
2 S' u( W- d: o; {# \* f1 D/ I. Y2 y, `
       asm(" nop");
5 K# h+ k; U- K6 h% {4 ~9 K# ^0 w6 f  \* q6 w# H" ?% q
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
( B1 o" O+ \; J* N    }, D& }# r, W1 z- T6 S4 h! _& [
- N  T+ C$ _  s
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
' L, I1 o" }! |' w+ [, z- G. q    //UARTprintf( "i=%d\n",i);
1 \  r& s/ S: w' C- }: e    //UARTprintf( "j=%d\n",j);
4 q6 _2 |- T. Z    UARTPuts("Data mismatch in buffers.\n",-2);7 K' t3 m' F$ Y4 C
    if (upp_interrupt_count == 2 && upp_error_count == 0)
* ]6 c/ S7 @# j$ x2 H) q    {6 O; |' \  V6 a; E
        for (i = 0; i<upp_frame_size; i++)
# t5 V- m/ A* E3 y7 N4 {4 A1 `5 h/ e        {: F) r8 z4 E" Q; \" B
            if (upp_buffer_a != upp_buffer_b)& H1 x9 n  U$ h8 c
            {5 H# [0 e: e8 O: d, C6 ^
                upp_error_count++;* `& `7 [5 ?( n9 P. X4 W6 r) z
            }
# Q3 H5 ~' p' N. |+ s        }
0 Q; @. g0 S9 X& K    }
+ m8 o3 o: b9 z9 n2 o
4 N" |% J0 L5 \6 L1 Q- e/ c    /* 报告通信结果*/
# [/ e. [4 J+ F! q% l9 `    if(upp_error_count != 0)/ o# i/ J+ [! e/ S! ]) @# c
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
$ E$ i8 c- F. O  k    else
, [9 t9 F4 m- t$ j        UARTPuts("uPP transfers complete!\n",-2);' {# t; {, A/ W/ q; n2 @

# E: f( H5 q% [  u3 r1 G9 c    UARTPuts("Do you want to print all the data?(y/n)   ",-2);2 p( d# h3 U3 ?
    UARTGets(ch,2);! u& f$ d/ y; R5 s2 n/ _
    UARTPuts("\n", -2);
  f' x" N1 e# W& }' Q6 r0 r
5 L  B! F# L) y% e8 x" C- F4 i$ {: A    if(ch[0] == 'y'); O% w: S; L- H, m7 ]% h: K
    {+ s' R2 P' j# Q' L
        /*打印全部读到的数据*/: Z2 Z5 a; Q3 z3 ~. k! F
        for(i=0; i<upp_frame_size; )1 n# _7 i: n7 h& d' H+ B# |$ ~
        {
) k0 g; b$ X' x4 f            for(j=0; j<5; j++)
) X3 Z1 V/ z: c/ b7 `# @            {
- L; T# k& O, j# P, p& V                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
% x/ k! u7 m$ e' R) C3 o) {: G                i++;
. y) o9 _% j+ G8 f                //if(i >= 4096)
& B! a/ Z4 t9 D4 E  k& z, G2 z1 L                //    break;
& j3 t' f" W# ^  M; \- _1 |; P! D# T6 u& D9 ~/ ~- `
            }
7 S5 U/ S; j- t8 ~            UARTPuts("\n",-2);9 O, T3 U: A% p. O- P1 s3 x% c. v
        }/ I9 D8 U" k0 v. N
    }
# c5 u) w% r; _" |4 J/ ^3 ~8 A) U! A& z! r, [, F( L, f* M
}

. Z; i2 Q' p7 c4 d8 A& g" J  x2 s2 q

% {# a. n( t2 U* q
* ], n6 l( j/ l2 b( U/ w' u, s* Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。7 D4 d/ L% \1 e
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。9 }8 ^- |( L# M! E: t) }! t
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-2 18:43 , Processed in 0.042525 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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