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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
4 q. T2 K. K2 r1 o9 [6 U
Void UPP_TASK(Void): Y3 X- d2 U3 K# @
{
+ t9 H1 f* Z" A) ]: c( ~% z/ Z2 u7 {7 \0 L* V% m  \! M
    int i,j,k,target_int_count=2;  r7 _4 i; D" \, ?
    char ch[2];
- k+ ?* ~& U4 D, S) P  u4 M# P  E, |( S$ e$ H' q* `

: [( |0 K2 E5 R/ w- }2 ~6 y5 r3 G% @/ ^8 ?7 V; Z+ g2 l
    upp_interrupt_count  = 0;
1 y9 V3 ~) R) l. p7 h" _    upp_error_count = 0;
2 T8 l& f3 ?$ t* |. v- h) R
- v" g5 ]+ p: N6 O% O. N- ]' K    UARTPuts("\tResetting uPP buffers...\r\n",-2);
! D! ^& x- V4 Q    // Initialize data buffers
7 l# q+ G# V% j, v9 _9 D5 r    for (i = 0; i < upp_frame_size; i++)
+ C1 D3 p( x4 c3 L3 v    {
  U) k2 X6 I6 v& {2 @       upp_buffer_b =i;
& r/ ~1 ^$ F; m- N       upp_buffer_a = 0xDEAD;0 t  s# S2 F1 K) ?7 G9 e8 k  G$ X
    }. a4 J: ^- |. l8 ~- w
1 h& ?3 h( F8 Q# z1 C* B
    //for(i=0;i<1024;i++)/ m3 A: K+ G8 S. L. D" `3 M& X$ N; C8 O
    //    temp=0;0 v& `4 v: U0 l. t" p

7 O3 @" Y' C/ C    //UPPReset();
! C/ o: B3 p& o8 K' h6 A  }    /*启动UPP DMA传输*/
4 s$ `; Q$ A  i* F, i% s6 u    UARTPuts("upp_prog_dma_i\n",-2);
7 r+ s& u* A: }. o    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
7 L% }2 U5 y' D" V    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
& l* K# J0 T# G2 T: [7 C# ]( ?0 s& A9 u    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
$ f5 n1 h8 j+ g' Z" Z# j4 P9 F5 b6 Y/ l/ @6 ?
    UARTPuts("upp_prog_dma_i\n",-2);! ^8 h. ~3 a; F: w5 q
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;6 X# J7 k  L  o; @* e! j, Y( @
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);3 t  I; y6 Q% J5 v4 u
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
! i7 p0 z- `9 H% u7 [) G# u6 B& l5 U7 S! Q$ T8 Y' D# i
    /*等待UPP传输完毕*/! a7 }* v6 t3 h/ P
    //i=0;
, y: ?+ M) @8 h0 o2 q    //j=0;
; y8 ~7 V8 b; e    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
7 n  V/ c" V( w( G  c    {# `8 I. C6 i0 T; M
        /*  测试UPP传输的同时操作普通DDR数据" x3 [1 T: M) v
        temp=i;% T6 A$ D$ r4 ~4 M, t5 X9 h
        i++;
; T2 y+ C/ v; E4 }  Y4 @& T. P& e        if(i==1024)- w2 }7 w/ H+ T, j/ A# v% M
        {+ T  q$ e* R. i& i) }
            i=0;
  Z6 i- Y* b* Z            j++;
% i% J' t1 _+ s" f! I1 m        }
- b0 Y: @/ g! b. L0 g3 q        */* p; V8 n" G$ K5 p
/ W) ~! {- ^# h3 ~
       asm(" nop");
8 W- N3 R" A- P* K0 {) }$ U; X5 Z1 M: d3 z" t' U( Y
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);; B( P' r2 R& T- n: t- q
    }  \' {* I* t5 M& c. d6 I% v
+ S9 J( t. Y0 W5 t( X
    /*检查UPP传输的数据是否正确 (loopback modes only)*/: }+ i9 N( B: H; ]3 J
    //UARTprintf( "i=%d\n",i);
1 E$ k2 y! u' {9 B    //UARTprintf( "j=%d\n",j);1 Q; l/ F1 _* P  Z% R+ @
    UARTPuts("Data mismatch in buffers.\n",-2);
' M* ]0 O& z$ n9 c" ?    if (upp_interrupt_count == 2 && upp_error_count == 0)0 c( c. E. w" h- n
    {
! _' o7 ~# `- F1 j( m, ?7 }        for (i = 0; i<upp_frame_size; i++)
5 S  p2 g5 k$ E9 P9 j        {0 ~" g  h% s  a) v4 v
            if (upp_buffer_a != upp_buffer_b)
: Y% ^. X4 W  r            {
  a$ {2 ]- y! J% I4 J4 F+ V                upp_error_count++;
1 H+ R, o+ i) E7 y+ [& l            }
% R# q  F1 p% f1 K        }
! L. n/ H- |7 w- R& f1 N/ O    }
/ U1 B' p9 ?: ]4 k9 R7 a6 b6 L
% C+ `% a" s# P2 l: z% b: j    /* 报告通信结果*/  L0 v5 ~" f" \2 x  ~: w) d
    if(upp_error_count != 0)3 s1 j) n$ A$ L- @: @  x
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
7 Q/ ]( Z5 h1 h  w    else. f. P. g, g6 b, A) v: w
        UARTPuts("uPP transfers complete!\n",-2);) C/ w* I7 _6 R& i

$ S% |2 h1 G/ I0 |. p  [0 i    UARTPuts("Do you want to print all the data?(y/n)   ",-2);) d2 c# P: X# f+ H( K$ D4 m$ \4 v  K
    UARTGets(ch,2);  Q$ u+ V) h6 `3 X& W+ o% A
    UARTPuts("\n", -2);5 J$ x' P  R! e% s( W

, Q- l$ Z& o8 b8 G* E- i, a    if(ch[0] == 'y')
& l, P* L9 l  }) `" u8 k    {
8 t% j( n% f( e5 T, Y6 e* T        /*打印全部读到的数据*/2 a, p( o, A; d# ^- |" D( F2 `
        for(i=0; i<upp_frame_size; )7 ]7 h, H' R' W" ^7 H# Y+ s6 n8 y
        {
3 q; _! K" b  P1 h. O* |( Z5 G9 ~: i            for(j=0; j<5; j++)
- I% T$ Z( z5 F3 e3 V8 D            {$ W. `8 S5 U3 s! R1 s0 j
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);3 b, h% W2 w) }( |. s% F. r
                i++;
/ y8 w+ K3 z, W' G  n, |- F                //if(i >= 4096)
) H5 T$ f  I/ z* J' X5 Z% B6 i                //    break;
- O- {2 t7 U! x
* |, q; ?/ p% w" d6 g5 E/ u- _            }7 m6 q! ]$ Y. F; N/ i8 }+ f
            UARTPuts("\n",-2);
+ }5 f' ]+ ?. `' S: L        }
# U  Y" K6 P1 ^# J1 _0 O! w    }
( s; O. f* `7 S% ~# y4 X
5 a3 K. ?: u' ~( W# h}

) |1 }. t" _% L/ Z* m8 ^9 q

% ]$ X; e! W! e; v/ D) d3 }1 ]7 f! K( \& |0 B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。& h/ n/ L$ c( \& c9 O) `
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-25 12:30 , Processed in 0.040211 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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