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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?1 ~9 z/ b3 v6 q) w1 X8 R, z3 A
Void UPP_TASK(Void)1 ^1 K" `) l. x
{
2 X' j, z- Z6 _2 W- R$ }
" |, r9 t- R! _! u    int i,j,k,target_int_count=2;7 g- ~. c  D9 i' J
    char ch[2];5 I8 v$ e) K" u, O, V) y, {3 j

0 |% k( P3 \; ?* [- ]& X( F& t  A
5 q. x  p! Y7 b7 ^7 D1 F- M7 l' }. d9 q0 p4 W* j' }, j
    upp_interrupt_count  = 0;, V$ X. u; R% ?
    upp_error_count = 0;
6 C# o: L. x4 ~8 n& p- ]* b8 n8 D, h& s( q- m4 q
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
4 q  T/ z, S* i, r$ ]# k    // Initialize data buffers
$ o! P$ g. \& ^; p    for (i = 0; i < upp_frame_size; i++)
+ u5 ?6 v% z0 X# h    {+ w  X4 `7 k9 q3 e
       upp_buffer_b =i;
1 F) C- O0 {0 S       upp_buffer_a = 0xDEAD;' Z- Y% ]7 S8 ?( n0 f
    }1 P9 M6 {$ V7 ~  {3 }0 a7 I! N) h
& A9 w& I! c4 X- s8 ^
    //for(i=0;i<1024;i++)
* g5 u% ^0 P7 ]) f; t9 C0 o% l    //    temp=0;$ h- D  B5 b: D3 e0 t6 F& F3 }
( M+ |1 o' z7 T. m; h
    //UPPReset();. G7 b5 Q8 r# L% O0 `! a
    /*启动UPP DMA传输*/
$ k* N3 M( M7 [0 v0 B    UARTPuts("upp_prog_dma_i\n",-2);
- ~9 ]; i0 b2 @( _: r) d    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
& `' m$ C; j  @: n4 _" N8 K* i    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);: A( {; @* a! ]7 f$ K: O' b& N& p  V
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
; T- W0 T( p$ B! Y) S) I
! h+ X+ h0 k% Q7 x1 ~: |( P8 Q    UARTPuts("upp_prog_dma_i\n",-2);
# y+ X9 a/ m5 V% G5 {4 Q6 R8 f2 g    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;6 j/ e/ H* I& h! z$ ~( F+ B% Z
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);  N. [2 t4 D% ~# q
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
9 }8 \2 C, t5 z- R8 y% J1 R7 w, e4 n$ o; F0 V$ {& u
    /*等待UPP传输完毕*// |& J4 v' U! [9 P9 V
    //i=0;
1 q3 E' B! M* @0 |" N8 a" I2 a    //j=0;
" X3 J, a6 C1 N- E6 ?$ ^9 V    while (upp_interrupt_count < target_int_count && upp_error_count == 0)  t; ~# h1 T+ i6 K' Q: k
    {5 _; b/ G/ z- z7 o+ l+ Z
        /*  测试UPP传输的同时操作普通DDR数据
# i& W/ G8 d9 k! k; R        temp=i;1 J2 F4 V- z- {7 m) T% ]/ \
        i++;
6 h7 M/ {- ?/ v# r7 z2 j        if(i==1024), `& A, d" S" U( e
        {# k: R; x" J# V( d
            i=0;
- ]9 o% x% K4 k2 K! A2 c            j++;
% U) E5 |0 {, p7 u" s4 h" t/ H5 O7 s        }/ I! n  @7 T+ T
        */
, W0 ^" B# \! d; T- @3 \
7 z0 e1 X* t! L. R       asm(" nop");
8 n9 r( R0 Y: {! A
9 b% y$ K. O/ S- J       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);' j9 X+ J( F: c6 h, |* r1 S) v
    }
( j7 _9 j% b6 F+ `4 ^* K$ @7 H; Z# d( C0 j5 R) l, w( @; Q+ A
    /*检查UPP传输的数据是否正确 (loopback modes only)*/4 H9 s# d4 m$ o/ {4 r: G3 z; e
    //UARTprintf( "i=%d\n",i);
1 t9 I" Q6 K; B& |7 f    //UARTprintf( "j=%d\n",j);  L, Z# W7 S# S! e
    UARTPuts("Data mismatch in buffers.\n",-2);; {$ `- M  y, r* B; j5 y( v
    if (upp_interrupt_count == 2 && upp_error_count == 0)! O) ~6 ^) W$ A( F8 `
    {8 K8 R) D) G: |0 C3 F2 x" ~
        for (i = 0; i<upp_frame_size; i++)
4 a2 i6 G8 O- ?6 B; ?- y        {
& Y: F$ K/ X6 G+ B% m! Q/ ~$ O            if (upp_buffer_a != upp_buffer_b), P/ N- E' s0 }
            {) u. `% Q* y3 [
                upp_error_count++;
' Y, X8 U3 G3 Q, q3 \3 W            }$ h0 y* {! x& x+ X5 w
        }
% P$ w: |' p7 `: _. J( |    }
- Z4 x. W* M+ y3 k2 |$ ~1 q& q( c; r# \, d, @8 Z
    /* 报告通信结果*/! a$ |) ?3 @6 T2 ]6 n8 h# {
    if(upp_error_count != 0)
- k% x. Y( }' D* h        UARTprintf( "upp_error_count=%d\n",upp_error_count);7 i9 o; r. y5 n+ F; X  v2 b
    else
7 ~2 q* F" V. ]4 b3 x        UARTPuts("uPP transfers complete!\n",-2);+ L3 A" e) P  Y$ P7 o% x
6 C6 @8 b- }+ o  `/ \
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
9 H9 m2 V( o; Z. T    UARTGets(ch,2);, Z3 `" p( U& K
    UARTPuts("\n", -2);. Q' K, k" m" ?1 k; ?6 P3 O  s; _0 A9 S
0 |4 M0 Y1 \( j( [+ _
    if(ch[0] == 'y')7 [5 K5 \: T5 i
    {
0 k5 `  `+ q7 k# @$ I7 P0 F* C* U$ o- f        /*打印全部读到的数据*/
- _4 u; O8 ]- B6 a% ~        for(i=0; i<upp_frame_size; )+ Z* I% m* @1 Z* @4 [
        {
- v3 O/ W( }+ W% E4 [, e            for(j=0; j<5; j++)
' N. n) C3 X/ s" ]            {
  H* C& P4 O) C  ^0 B' H7 r                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
1 X, X  b5 Q6 c                i++;( ?$ v2 {/ @% w% c9 W: G( R
                //if(i >= 4096)
% Y8 H* q6 x/ h2 `  E( Z% o                //    break;
8 y( N) t) `& t( L0 x) J7 b+ d) [+ i( ^9 E9 ]& k! T
            }  M, L/ a7 p! c
            UARTPuts("\n",-2);) B1 A! w0 Q+ V+ G7 }4 W% E/ U* X+ }
        }* g- O1 Q. _* e7 I
    }
+ `/ a+ d, {7 Y/ z$ g2 p
. p' m4 v5 k/ T}

9 z  [* J& h3 g% i+ @

9 \) k9 ~' m1 ?8 b9 q( ]
( m+ |: F. d) N7 E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。! q, F, h9 N: W% C+ E
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
' ^( l/ a6 B5 n1 z
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-20 13:24 , Processed in 0.039041 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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