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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?  H4 n0 ?+ }. @0 S* t
Void UPP_TASK(Void)1 a, V/ ^, z( z) c' Y7 O; y5 w
{* f7 e8 `8 `6 c* T  L3 Z4 i) I2 i

* u1 d4 y  k0 Z" e5 M    int i,j,k,target_int_count=2;1 f2 e) b  m' \* M( C
    char ch[2];
/ u# q/ x. n3 h: v! t
0 I4 `0 H" w& z8 k" g3 d/ J& b1 ~. Q: {! b6 X" d2 C$ b

- W, e5 ^$ n  N2 [4 E; q    upp_interrupt_count  = 0;# n, n3 F5 f4 M; w2 [
    upp_error_count = 0;
* j) o6 I- c9 G" |3 L% M/ o3 s" R& R
- l% w* N! u# l5 |! [9 v    UARTPuts("\tResetting uPP buffers...\r\n",-2);
( `: e: V7 m6 u. E    // Initialize data buffers( h1 n6 m8 L9 ?
    for (i = 0; i < upp_frame_size; i++)
6 s* Z3 f) j1 g2 N/ @) Y    {
6 O1 W; [! k# X, i' P, F       upp_buffer_b =i;
+ h8 [& c9 _( t& V$ ^& [       upp_buffer_a = 0xDEAD;
& \* `1 p1 r/ b    }
' ]" `! ]; a+ [$ ^- l7 w$ h6 {6 b: M2 L3 R: x! B* g
    //for(i=0;i<1024;i++), I0 y& x; J. b0 q9 Z3 J
    //    temp=0;$ S& A  H& n* q) F( @' ^
, S  M. _8 S5 p# o# B; E  o
    //UPPReset();) w  D6 @& L2 f/ T! Z: F* m
    /*启动UPP DMA传输*/
! d4 x) H1 a' T: E' V    UARTPuts("upp_prog_dma_i\n",-2);
8 `4 c+ `6 [% R' y  Z' O/ w    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;, g. \4 E, m9 E& \# u) Y( a1 F. I: y
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);% ~( J0 H' N' u# q% s$ b9 N
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);1 a" V" |9 @* d

: R6 K! t0 F  @; V( D7 V/ r4 Q    UARTPuts("upp_prog_dma_i\n",-2);$ |5 T/ Z8 j. f' H, p0 T) _
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;1 D" M4 a7 z$ [: M
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);  w! |# X; S. N
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
9 J" |+ i; E/ U/ y0 S' V4 N) f- ^( ?1 V
    /*等待UPP传输完毕*/
! b% A! p) y$ p* @& n    //i=0;
' N. O5 N2 U% |, w2 Y- A    //j=0;1 z; C, ]( b0 n# r3 ]$ ^
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)9 p, V6 [: b/ X) @" Q
    {
8 j0 f8 ^* Q" Y, h- G; }# W: Y! m        /*  测试UPP传输的同时操作普通DDR数据: s- f* j. t) M7 D& S6 i& U4 W2 P
        temp=i;
, p' V& a& w' t# T3 G8 k5 h) ]2 d        i++;5 g- ]7 d1 M7 I
        if(i==1024)
0 W: g, k0 s7 i: I% f2 [( x: d        {1 z* P9 w2 B# v) L6 C; V
            i=0;
2 {6 T4 E) `# M3 G            j++;
+ K( `) h, [! q5 ~" y( Y( D* s. T4 W        }8 k  d1 S% v  V" v) k! [# y6 `
        */* A/ g! j" [# r6 g
) J7 F" @% G* g- L# s4 c7 e
       asm(" nop");
$ i8 }( M. ?( {1 ?# f! N, s8 [
$ y  K' Y6 q/ x: t       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);1 r& X& N) M  \  _) T
    }* ^: c2 w7 O/ N  f6 M# z

3 ~2 X; r2 Y6 {, J5 ]7 A3 B    /*检查UPP传输的数据是否正确 (loopback modes only)*/
3 S' D) o  m+ ]/ w" m' H! C* A    //UARTprintf( "i=%d\n",i);
6 K- A3 v1 ~2 s' M    //UARTprintf( "j=%d\n",j);
  g& o+ N) H: ~    UARTPuts("Data mismatch in buffers.\n",-2);
0 `: a2 ^7 g' k    if (upp_interrupt_count == 2 && upp_error_count == 0): A& I# C" a" e. F9 D) f+ s
    {$ r8 x9 J+ }& o2 g3 q/ q
        for (i = 0; i<upp_frame_size; i++)2 ]' f# ^+ \" |- M2 K; {# i* A& _7 F
        {
/ ~$ u* T0 `$ a7 `            if (upp_buffer_a != upp_buffer_b)
7 d/ M* |7 L) C6 S7 L+ x3 N            {+ M4 i! f2 f, y( X: K
                upp_error_count++;  Y) E/ s- c3 i1 c6 J
            }+ M, _% N+ _$ e$ F/ R- e8 i) U
        }
. |( e! n- Q$ w, Z3 V    }
- M! F: u! z/ g( N: T8 R4 p/ |7 o6 K0 P( s* w5 H
    /* 报告通信结果*/
! O% c5 l8 q7 ^* B3 U" F( x) F    if(upp_error_count != 0)' ^' Z# I& b; ^6 s0 |! q% ~, a/ q
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
6 i. y2 ^. Y$ O; Q# s    else6 y% g6 `, N" h8 S, L$ F* z/ }
        UARTPuts("uPP transfers complete!\n",-2);
" v+ x" F$ r3 I* V4 H- J
# x% x8 O  j  ~. F8 Z" O( Y- U4 G    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
4 }" S& R' d4 L# Y5 k    UARTGets(ch,2);
( n* i; L) T" h& e0 H, r% z5 v, T    UARTPuts("\n", -2);5 X, ]3 L  z9 @5 ^; B# Z

5 ]8 p2 U7 }7 W6 M    if(ch[0] == 'y'), \" k, |' T- X# h) \. X
    {3 D* h$ }, X6 x2 D, F
        /*打印全部读到的数据*/
3 \/ a0 v& A* h        for(i=0; i<upp_frame_size; )/ Q" S2 _9 b2 m. M+ Z5 y
        {' `# \! u+ n9 {
            for(j=0; j<5; j++)
; h# y: F! ?* n" o            {
1 b; \9 T$ h" p1 S                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
9 t. s8 w' r) m: |9 h                i++;
2 ^- M* k( t3 p- u                //if(i >= 4096)
# K$ i7 J+ [8 M$ |8 j7 Q                //    break;% v# ~9 ?( ?9 L. n

4 y, q# H4 V: z* w4 H$ m. e            }
% P( a' ?$ T, C$ ^9 w6 [            UARTPuts("\n",-2);* `' P+ j3 {+ o! t! K
        }6 s# V* [8 z7 P# f# w
    }* A6 a' L+ o9 J( `% O4 G( Q
  o- o2 l1 s$ a, a9 w0 R, r
}

9 Y% Z* r, Z) z& ^( N
) W1 x, O# v7 T+ f* T

' t7 ^( o) E( U# t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
7 b+ r5 A0 ~% S+ @6 {# C
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
! {, Z; S! Z# B* {, p# _
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-21 00:07 , Processed in 0.044313 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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