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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?" w/ R( [' _9 S  \9 S
Void UPP_TASK(Void)0 Q+ u0 I! c/ \
{
/ T1 Z8 M$ F$ _; H8 g5 o' O  z$ h
! k+ N5 [1 Z8 ?! O5 v3 p    int i,j,k,target_int_count=2;
' d: ~# W4 k  s# n2 J6 p    char ch[2];$ \: q$ ^, |4 C) m0 d7 k0 N
# b/ u: T6 F- \

$ B' J- D6 F4 f! R
+ b( |2 q% t4 ~; B& Y    upp_interrupt_count  = 0;
) j+ o) _: x& G/ x5 W4 x. ?# }    upp_error_count = 0;
$ T' W1 N. B% K* e
- w) y; n. j3 m( q    UARTPuts("\tResetting uPP buffers...\r\n",-2);: J5 Z4 y: O8 F
    // Initialize data buffers  |+ `4 \; u8 |" s9 |) j+ `# E
    for (i = 0; i < upp_frame_size; i++)) E5 z5 F8 ?- N
    {8 ^% x% r# j& [7 }% q; v
       upp_buffer_b =i;
/ u$ G. \- J. _- h- y: C       upp_buffer_a = 0xDEAD;0 }5 w: i8 ^+ ~3 g/ G: J) D
    }
3 W( [: L! E' R- G8 e* a& w/ }  O8 v( v8 t- D& i" `3 K( ]( R
    //for(i=0;i<1024;i++)6 j1 U6 K5 T# a' C) W
    //    temp=0;
1 I* ]7 N$ c" ~  f
2 c" E( [5 C3 A* h    //UPPReset();
7 r" r6 ~$ S2 k- h4 W    /*启动UPP DMA传输*/
; m7 O# ?/ a5 d# j+ O! i    UARTPuts("upp_prog_dma_i\n",-2);
+ N- w  O6 F& [3 @    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;  g6 }( n$ k/ k6 B# n) O
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
, N+ f# n* x# U9 l  R7 g+ v    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
4 P. A; x1 G( C9 i; V
. }) ?1 D) n) Y" l    UARTPuts("upp_prog_dma_i\n",-2);
$ Z) V. j8 u/ w0 T    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
- |- |/ r8 x4 x; ^5 Y! Z    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);  q+ U0 w6 s- J; U  I+ }: _0 h+ `& N
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
  D- K, r& A* t5 F; k
& [/ K" v7 p6 ]    /*等待UPP传输完毕*/
/ ]% i3 T" T% B+ p4 E* G    //i=0;
9 r3 D$ s0 U' U8 E' s    //j=0;4 u: u# w6 n! V. G- ~' U
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
- \/ Z% g: \7 b# ^+ q  @; l    {
- _' d: }) a; L5 f+ C. K$ g        /*  测试UPP传输的同时操作普通DDR数据
7 d! {. \. z- `& s        temp=i;
" L& l( ^# u' a5 k        i++;# H6 z$ W' D4 h( ]# Y+ d+ j
        if(i==1024)  J0 F* P( h2 Y% \
        {
6 i; g# }- b8 L) Q( [# n            i=0;! y- p! X% `2 ^7 t
            j++;9 u7 U8 g3 [- @9 b' T7 J7 B
        }1 J1 T' u8 }1 F4 V8 v+ K
        */
" {0 X* O* W, ^8 p
; S) S9 o' D5 M3 C% {5 c       asm(" nop");, M$ u6 z- F% A4 D) r, R9 o

5 _0 @' L# ]. Q* O: Z       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);- ~7 T) ^6 p' Z6 K6 t
    }7 h1 i7 [. J, ]' M2 x
  {0 p6 A1 K6 G/ b, W, q% {9 V
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
; p' H! y3 H5 H) ?3 l    //UARTprintf( "i=%d\n",i);
0 O% X0 R( [& `" E2 n    //UARTprintf( "j=%d\n",j);1 d1 P3 `1 n6 Q; G( Q2 {
    UARTPuts("Data mismatch in buffers.\n",-2);
( ]( b4 j3 x# g8 O6 E: g7 G    if (upp_interrupt_count == 2 && upp_error_count == 0)0 H2 i4 N$ d0 @% _/ v; K
    {
6 G7 O9 Y- @$ M6 g; }        for (i = 0; i<upp_frame_size; i++)% @7 [3 b  p! y2 M- ?6 [- J; t
        {
9 ?3 N9 J1 i8 K* R            if (upp_buffer_a != upp_buffer_b)+ J' A5 s  R3 Y5 [! G' F2 x! h
            {
0 ?9 B. N7 g; W  }$ F; ]                upp_error_count++;
5 L3 C4 R- X, H) ]% O9 M  e            }
1 R" v; X2 k5 E% ~& w        }
3 s  B: D8 L9 v$ l    }8 z4 C# R0 c6 p) r& n$ ~2 j- W
2 ~, G) D" U3 p- @& y
    /* 报告通信结果*/
; d( d9 z1 g" c+ Y- ?    if(upp_error_count != 0)2 W+ H7 N2 I2 v
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
* E! f" v: @! a( u* Y: F    else. \9 ]# H$ z- i" D; L
        UARTPuts("uPP transfers complete!\n",-2);
' W3 s7 Y2 {2 r: W& |) t3 t+ Y
  V, e2 b" m4 g' Z" d    UARTPuts("Do you want to print all the data?(y/n)   ",-2);4 a+ @& |: H" J: |; |0 q  I8 v
    UARTGets(ch,2);, d, s. w8 V0 N
    UARTPuts("\n", -2);
) A: k2 `0 ^* A$ i; T8 ?/ L( r) _% {, U/ ^, w
    if(ch[0] == 'y'); F: ]: x! Q. Y
    {
+ N; m  k6 d! H3 [* @0 ^        /*打印全部读到的数据*/7 O6 {* a! B9 d+ k7 o4 R4 N
        for(i=0; i<upp_frame_size; )
& D: ?/ {! f% X1 V* v: z. i; V        {
& n# G: ]$ |) Y3 m' F# @3 D            for(j=0; j<5; j++)2 {2 q% S& J) z& G5 G
            {
3 X! o* Z1 `: c' q/ z0 s! E: ^& [                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);, W6 j) _" I( }* a8 v' W
                i++;
2 P5 s! s  H! W" ~                //if(i >= 4096)$ m- Y* q. V& v; `8 A5 Y
                //    break;
3 ^* s3 \7 q3 V: V: [  o& Z
; X0 q  u# X; v% @0 [& D0 i6 I. t  S6 K! Z" }            }
( }' o+ p/ P- y% T: K- K            UARTPuts("\n",-2);
8 ^$ \6 E8 M! W5 p6 \! r+ d: U5 O        }8 }6 N, [2 R7 A8 Q8 C
    }
  v; D! d! H$ J5 C) q
0 Y' a# _, J' D2 G* U2 M0 Q}

+ p7 R: K4 ~( x4 E  t! V0 D
& a0 g$ l+ {0 i& B
: m& _7 m5 G- H4 @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。) O" r# S6 T  I4 {0 U
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。: P, I% [1 M0 ~* {
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-17 05:00 , Processed in 0.037677 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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