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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
, D+ Q& ]4 a" u! [
Void UPP_TASK(Void)7 z+ |% F( C- L; J
{
0 E3 R2 `3 n; ^' r, j/ J8 a( D# L0 P3 n
    int i,j,k,target_int_count=2;4 `% N& T8 J) U& {6 v4 R$ M
    char ch[2];& T% q9 I0 ^& B5 x: J

/ |1 z; B1 r" u5 b& @0 M" i5 O  D- x1 W7 U# K- E2 r  ]
$ f% x) C: R: @
    upp_interrupt_count  = 0;
3 U' O' T! J4 E& o    upp_error_count = 0;9 g0 p  U4 c9 T# F) o5 W, t. _4 V
  o8 i6 D% B" n8 B) U% G, b
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
( H2 b) X0 r. x/ Z& y+ @    // Initialize data buffers
- e  d, l0 F! J$ y. M    for (i = 0; i < upp_frame_size; i++)% M5 r  c) f7 }: p6 y& u
    {( d% _0 n  E/ y  z, ^0 X
       upp_buffer_b =i;
- Y2 i  Y. c. C       upp_buffer_a = 0xDEAD;
  a: w. G5 p1 v' r9 M    }
, j2 p% L7 P" p0 w, V) p; J) V6 v7 H1 h4 [
    //for(i=0;i<1024;i++)2 }: f2 P0 o1 |( x) h7 X% Q$ L
    //    temp=0;2 u' ^' r4 J# |8 B

3 z) `  W- [, y* W  ]) Z& C    //UPPReset();
- Y8 D1 p, {6 Q9 q+ l" C    /*启动UPP DMA传输*/
; T# `4 s. ^) f+ E    UARTPuts("upp_prog_dma_i\n",-2);, ~" n, y2 u' ]5 |7 X
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;* W$ B, s5 X7 C+ K
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
5 L; \! g, a- p- d" ^8 Q1 N2 n0 U8 b8 z    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);$ D; e' [0 H0 Q$ H) T
# ~. u) K7 m/ g7 o+ ~5 [
    UARTPuts("upp_prog_dma_i\n",-2);% T5 a$ T* S# q; n
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;& t5 r; t* x& p0 y
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);: n$ {8 Y' v; T) p% p0 Y& n9 D
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);5 Z: ]4 C3 H# ]0 I. ?" I& H2 |0 H( d
# j& v) O3 C4 L& `- F+ x
    /*等待UPP传输完毕*/' T$ A! W% ^7 M4 D6 l
    //i=0;5 N6 t4 t4 A; q$ Z
    //j=0;
& S: U# }2 Z) o) i0 n    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
' M" l6 v5 @6 g2 {: n    {
9 x% ]0 B* o- ^* x0 d0 G        /*  测试UPP传输的同时操作普通DDR数据/ L0 t0 R) B% N7 {( t5 ~
        temp=i;
: d8 ?( D' h9 B" F+ n) A" z$ q3 A        i++;1 W' L% d- q# \
        if(i==1024)
% {6 w! Z3 [9 _  Y. E$ Y3 @. K        {5 D: y1 f4 }. |
            i=0;+ w$ k8 w( U6 V) H' @: h
            j++;) }" ?: W6 L8 U; }9 ~- A, l
        }
* c' X# j$ `3 L( W8 c+ i        */: A" x" q& j7 C
2 ]& I5 t  ~2 p
       asm(" nop");
- N& }0 C  q% r- {# h2 t" O* S4 p1 S6 p# S) N# r; d# y7 K
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);+ J( O, o" ?. K' g4 D  v+ w+ v' A
    }- G: N/ m# x& u8 h. s5 R* d# k; I

8 R% G. M  m: I    /*检查UPP传输的数据是否正确 (loopback modes only)*/
' ^. A5 G; Q: H  @0 c. d8 f5 n    //UARTprintf( "i=%d\n",i);
' E  W( }! o. t    //UARTprintf( "j=%d\n",j);
, b; r( S# S  J5 R    UARTPuts("Data mismatch in buffers.\n",-2);
7 {. m: U2 M+ F3 l4 ^' E    if (upp_interrupt_count == 2 && upp_error_count == 0)* Q( g; r5 J# A; h/ Y
    {8 ?7 K" }6 }  y
        for (i = 0; i<upp_frame_size; i++)) z1 H7 V; A4 ]1 c
        {/ o8 }; u  l( c  H
            if (upp_buffer_a != upp_buffer_b)
. q3 A/ c% z6 d6 k6 S            {
7 o2 X% V3 t3 J+ v) r                upp_error_count++;
  Z* K$ I7 C$ A, B' [" u            }
- b- |. C8 n+ e5 P) T# ~        }
6 N4 F9 S3 l) A( [    }
8 y1 e) `( `% U: b# H0 h# F$ r* O* a4 g8 k
    /* 报告通信结果*/$ w, @4 |8 Q6 p8 p! I5 u
    if(upp_error_count != 0)3 U( X; {# Y& n4 `0 f' d' c" G
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
. n+ m7 F" ]& N    else* a) L& y, }0 j: J
        UARTPuts("uPP transfers complete!\n",-2);
8 \* T6 e( L7 D* _4 n* \4 C/ E# }- p1 s% v9 b6 O) H4 k/ l
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
; j0 Q; K( ~( k$ c+ t    UARTGets(ch,2);
, H2 Y1 ?8 X% [7 s$ Z# L    UARTPuts("\n", -2);
2 }1 G0 [' L# Z4 V6 B2 @, a- L0 h
5 a) R6 t8 Q5 N0 I3 H    if(ch[0] == 'y')
- \3 \5 B. |9 t8 H7 v. e    {# h3 J8 x% @) |) L' G- \) ~
        /*打印全部读到的数据*/
2 e1 e- r1 k2 P, T3 h; R) d( z        for(i=0; i<upp_frame_size; )$ [4 A' |% y# ~) t9 c  P
        {
4 T  @: Y, V7 s! x$ V  q. q& N6 b            for(j=0; j<5; j++). s" S! S0 h5 T2 t% m; w- f5 F. o* o
            {" A! Z8 z6 Q1 Z, l# v3 N
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
( X( j3 W! r% ]& h8 D6 Y                i++;9 H' l  P* {6 x: G
                //if(i >= 4096)( q9 n- l/ f% V: \
                //    break;! P/ ?6 K0 H' [, E" `
) r% R0 o6 w8 \
            }
8 u- x$ i( H  m' Y0 w; D9 N            UARTPuts("\n",-2);# D2 f/ a5 M9 r6 r, ]1 \
        }) @5 R) F" q8 }* G: m8 l: @
    }, H$ [  T$ r7 V* l9 N" l
5 o# r+ c$ m2 ?. j
}

) {% |' c# C9 y' P4 R
) p7 N# P* f8 U* z" N/ `

) K+ C$ `7 X7 B. F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。/ P0 n4 Y( h5 ~' i
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-17 17:42 , Processed in 0.039901 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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