upp问题,在SYSBIOS下的应用问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
& [: U5 B5 U+ X8 a% i
Void UPP_TASK(Void)
/ g& A% \  y$ U$ P/ Y2 z3 c3 e{
; h) W2 {4 K* m* k) A$ [
3 J/ [: I( z9 b- ]7 ~* L9 b7 p    int i,j,k,target_int_count=2;
# B, [% H3 t# i* k8 e2 k1 ]6 x    char ch[2];  w* j* [8 C! [5 g) Q

/ _7 W) _6 n# s/ a8 w
' b  \' ~& n& U3 i1 ^" u/ P0 m
4 Z* z3 [; l: ?    upp_interrupt_count  = 0;$ v4 N+ v, \& g( s4 U7 L8 R
    upp_error_count = 0;
4 I- j4 L& F9 @. N/ I& I5 z9 P9 E+ F/ V
  n% B" T# \; v: a) O! Z    UARTPuts("\tResetting uPP buffers...\r\n",-2);4 W! d$ |- U" a. J
    // Initialize data buffers
* ^+ v( b5 s) P1 E) ^3 K- S5 U    for (i = 0; i < upp_frame_size; i++), d$ e/ ^! o/ s2 `  e. i
    {3 d. w" R0 u8 F; g
       upp_buffer_b =i;2 X+ a+ v- M' }
       upp_buffer_a = 0xDEAD;% G4 ^% w3 D) B8 s
    }
4 R% K: L, {7 b3 t' g9 p9 c2 o; b& I. `% C3 u3 `4 }
    //for(i=0;i<1024;i++)* ?" D* \7 y% v3 Q
    //    temp=0;
4 J$ t9 n. ~- H  j4 `, M: {; N1 i  W0 b, k# t" u
    //UPPReset();
0 l; N- m1 w' i& A    /*启动UPP DMA传输*/
6 i( @0 y8 Y( _( Z/ G" Y+ _' M3 `    UARTPuts("upp_prog_dma_i\n",-2);4 W; J, u( @( S9 T/ x: B5 `  H
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
" u% N) T% O: e' V! v% k' r, v* e    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);0 c8 |" B, B8 A1 I& ?2 Z
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
# S1 @: o8 O# [) m9 F* v0 _' D0 ^& a9 h9 O
    UARTPuts("upp_prog_dma_i\n",-2);
1 f6 A" c* ^$ x8 h5 a6 B* ?    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;* X, K6 ~' v. v
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);, X$ o) C+ \: k  \  x$ `  D
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);* b  N0 w/ |2 g! s. ?

: @. j2 ?6 |$ s8 g- \' y    /*等待UPP传输完毕*/
3 _# h9 V3 i0 T- {    //i=0;) v( z$ R  ~4 _3 z
    //j=0;7 R7 D& `' X* Y/ X/ O5 w' p
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
5 F8 E. }. R! d* v# P* c    {
* W. o0 [; k6 o0 [" F# V        /*  测试UPP传输的同时操作普通DDR数据
3 O2 b9 X8 ?, u# S4 ]. g8 O# ^        temp=i;5 h- W' ?0 m* Y+ Y* i
        i++;: W1 E, ^3 A) t' A$ m, _
        if(i==1024)
" Q# F! a/ D) k        {
, i8 R8 n/ W5 c1 [, W5 v3 `            i=0;
5 @4 P/ `, L! m1 u" r' g5 x            j++;0 i; R  \. j6 @$ j/ A
        }) C# A- ^9 L  O- P! Y0 ]
        */4 s& \4 J  t9 O* D0 G# O1 ?
' z# W3 E3 C+ T: A) B
       asm(" nop");
! [/ @, h, o; C8 ^! }' Y
, S0 f  }6 J* K% _$ ?6 M       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
' A5 R8 U1 D1 Y- _2 h" d# h    }
6 ^. H% I* t. i# W
2 @2 d6 M4 I# C% Q. F+ Q    /*检查UPP传输的数据是否正确 (loopback modes only)*/
8 J1 `* ?1 o6 I' [    //UARTprintf( "i=%d\n",i);8 z' Q, |9 K9 H
    //UARTprintf( "j=%d\n",j);0 ^+ h( m; A$ b$ M* A
    UARTPuts("Data mismatch in buffers.\n",-2);/ B/ g, v- ]+ n8 g- [
    if (upp_interrupt_count == 2 && upp_error_count == 0), v3 c8 I5 e1 h* {: I
    {
$ e6 }( @3 \$ C, z' V        for (i = 0; i<upp_frame_size; i++)
$ h; H: H; I1 C) i) K0 U        {: u; }9 A/ A: ^( M# ]) ?! h& k
            if (upp_buffer_a != upp_buffer_b). u# e9 e/ \. ^" V) A; _
            {
# A$ M: A6 W$ d! b                upp_error_count++;! F1 Y, r2 K% D  V
            }
$ Z6 e2 V# W% g) B  u3 n2 H        }
4 j# r3 e/ G( |4 N% n. r# q( H2 J    }
% W, u# z+ a5 T; I& m4 F6 N" K- d- p
    /* 报告通信结果*/1 z2 m! G2 z/ K5 G: t/ o
    if(upp_error_count != 0)
4 w7 J) n7 N' z5 N5 d' J6 H        UARTprintf( "upp_error_count=%d\n",upp_error_count);' V* b, k7 C  C( q# T" r
    else
' n, G9 `/ @, M0 i        UARTPuts("uPP transfers complete!\n",-2);% I# b! G- f4 }9 L2 L; H4 K+ J
" s2 _4 j# k& B4 r# `  k
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
, M8 _$ J5 @# p3 P* S" j9 g# J    UARTGets(ch,2);
' |6 H- H+ L4 {& I' S. V$ j    UARTPuts("\n", -2);
. b5 M# V- ~* ~" X, |' Q& _( k# ?7 u4 b0 R# o
    if(ch[0] == 'y')4 a6 g+ I, ?. g% Z  ?! a
    {
" T; j( s. r( w8 B% b( U        /*打印全部读到的数据*/
7 ^) r6 _) [/ E) @( m        for(i=0; i<upp_frame_size; )* v& ~' W: g" R0 x
        {
; x' O5 R* w6 C6 ~            for(j=0; j<5; j++); ~1 ]4 K% ?' p5 j( E9 w3 u
            {
- ~' e& S: g9 c  J( T1 V1 g3 c                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
5 N: w9 J, L0 p4 W                i++;  a) F- p2 z$ a2 m& U
                //if(i >= 4096)
7 W% r( L2 Y9 A; W- h# P                //    break;9 X) z( I5 ~3 W& N  P) @/ U7 h

# k2 b5 F' \- \' Z# O            }, V8 w6 m# B" v# \3 z) w
            UARTPuts("\n",-2);
, F: c% u* a" n; W+ m( g9 R0 a        }5 l+ t( L" ^" _: q, s
    }. A5 C: k, J$ m/ x6 H( o" Q, u2 q$ i
; e1 u# X% P" N  W* k9 X2 d+ Q
}

, h/ u5 r% [, }% K- T2 O3 O# B2 V

( k3 h+ |7 b& S; L# X* t% R7 Q$ g1 L$ w1 Y6 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。! X3 M1 ]# B( H& b2 h& r4 J4 `# e! q4 q
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
- k1 F4 L$ J6 c5 S" z+ }9 k3 ~* u
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-19 05:35 , Processed in 0.041119 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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