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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
5 P4 c* X" @, x
Void UPP_TASK(Void). N7 e' d* @  d  Q) q
{
$ ^/ ]4 h6 _1 d  T( P  v- |5 M; S& Q
    int i,j,k,target_int_count=2;3 B4 o: Y6 G) J' N" D
    char ch[2];
# ^, }2 ~* W; |/ G3 }4 g) K
/ v3 A1 [( T& H0 W/ r
$ h* j# B/ M% ^1 g6 ?# w; ^$ n8 ^5 V/ @  C+ O" W/ ]9 H
    upp_interrupt_count  = 0;. x0 n7 q$ M. l, g% Z$ s
    upp_error_count = 0;
# ^6 D4 Y& F( D
; D6 n" L" M0 r1 b    UARTPuts("\tResetting uPP buffers...\r\n",-2);& o) E5 }: t, C5 m: E  t
    // Initialize data buffers
" `" v. z- A; f! r8 ^    for (i = 0; i < upp_frame_size; i++)0 @0 B5 g9 m! _
    {* Y) V% U* z  h5 o% u
       upp_buffer_b =i;  ?; P( `0 f# e
       upp_buffer_a = 0xDEAD;4 w' S) b8 v0 E; y! ]
    }0 n* D$ c, w% T+ ~
  L* b- p0 b0 ~1 S% O5 b
    //for(i=0;i<1024;i++)
% a: u' f1 h& |* m; @5 I    //    temp=0;
4 j2 ~& y" h  h6 J
. Y) q" E# [/ n; Z/ {) b    //UPPReset();
  a* U0 \9 a) g. V* u! w  q& x7 @* f    /*启动UPP DMA传输*/
" @0 E; s# w% H# p    UARTPuts("upp_prog_dma_i\n",-2);! G- O+ P% p* i  e; i  w! u
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;; U; {. m7 c' t
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" i6 Y& J  E) ~' A, U    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
: y3 W" |- H  ?( m/ \% S% P% o; z
, Y7 u9 _# t2 h5 A8 v    UARTPuts("upp_prog_dma_i\n",-2);3 j7 Y1 d5 \/ W
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
- ^1 u" M1 g. E! \% o/ K    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);' h6 o+ n. u( A2 W3 i. ~
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);( K, t% v9 g5 K- _0 x

# y2 R5 O3 p( T8 `3 |0 M/ I, {    /*等待UPP传输完毕*/
4 L7 K" y. G& t    //i=0;
: b) T) {! Z) l0 F7 S; \  G; w* H    //j=0;3 ^( L; ?) n# R* R0 E
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)8 ?8 n8 Q: ~" m& F
    {# ^$ @- R# T: o1 |2 Q
        /*  测试UPP传输的同时操作普通DDR数据' Q6 N+ F: C* u8 z% A  B, X) K9 P
        temp=i;, \! Q$ W0 T9 v' Q: j
        i++;
  Z7 i. {$ V5 L5 Q4 t! P: `% a9 i        if(i==1024)
, k. S) ?" n3 W9 _, ~' ?. }        {
6 a0 C& s$ s- J            i=0;
6 ?& a2 @3 h8 j/ K! d8 N            j++;
4 D6 t$ |/ K% h: X; r) M9 }        }
, L8 A1 B5 B' K- }; Y0 N9 x# N        */* g4 s  B2 d. v* z' R* F: r; z; d
4 q% g* f, V+ N; }: {
       asm(" nop");. z6 y8 V* W0 v, @) m2 j* y/ X2 Q

! X' ]; q% ^" [0 Z5 Q' ?9 v2 r       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);8 P7 P7 d1 E; P# v3 C* M' F
    }
2 z/ |3 D4 |5 L$ e8 N1 y: o, h  [. K# }& H4 ^6 u8 I
    /*检查UPP传输的数据是否正确 (loopback modes only)*/9 Y9 G' }/ ~% x. K2 E, g6 C- g
    //UARTprintf( "i=%d\n",i);3 u( M6 x/ y, t+ M! w: l, C
    //UARTprintf( "j=%d\n",j);) a* N. W' r% r. D& q
    UARTPuts("Data mismatch in buffers.\n",-2);. k4 e  w. {; v8 f% T
    if (upp_interrupt_count == 2 && upp_error_count == 0)
  x* h' F, F6 r% h2 Y2 j- G    {; G3 [- P# w* |, T  U6 W  l
        for (i = 0; i<upp_frame_size; i++)3 k6 ]+ c2 i4 \. H) n1 |' D
        {. v9 z& E1 @6 @' t; a* T
            if (upp_buffer_a != upp_buffer_b)
- N1 ~  Q+ O3 c            {" P+ o6 y4 Z/ O3 s5 \8 b3 c' _
                upp_error_count++;
( `9 b1 [% V6 R- |; {" ~            }  h- v  g. v  {) z( L! z
        }; {( g6 Z8 J$ C2 L  H
    }, q# [6 Z8 y) i

$ }( M! O1 z6 n4 V; g    /* 报告通信结果*/$ V3 f1 E* Z, C3 U% c
    if(upp_error_count != 0); h4 q% k+ \3 _6 h
        UARTprintf( "upp_error_count=%d\n",upp_error_count);" L6 \3 b0 A) v4 g% Z( D7 ^
    else6 t* s% I1 w# \' X9 J8 C. L; C
        UARTPuts("uPP transfers complete!\n",-2);7 P. d7 U" ]8 h; r  A' y

! E& k8 b$ P* v( V! f+ ]    UARTPuts("Do you want to print all the data?(y/n)   ",-2);5 K) t# C- r8 r) j) @
    UARTGets(ch,2);
% \2 S% J$ U! t+ _    UARTPuts("\n", -2);
6 p3 E' h! b+ y* B4 f( e% s2 b9 o3 j8 W; R9 \( o1 D
    if(ch[0] == 'y')/ |, P7 f9 {  x
    {
6 X/ {4 B3 b" x4 ~" G1 @. p        /*打印全部读到的数据*// p; M$ Q* z" L
        for(i=0; i<upp_frame_size; )6 K0 C1 ~6 `& R. ^3 W6 L. I
        {' s% n+ g! h! j( N; J. Z, ^" @: s
            for(j=0; j<5; j++)4 t* A( y: n$ _' L9 L. u) c
            {
3 G% H% v- u5 c4 z% i                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
; Y" J& D9 T, q6 L3 d                i++;
" W* \( ^+ g9 H                //if(i >= 4096)0 T6 ^3 ?9 ~7 M* r0 n
                //    break;
- `9 n! ^. s$ o7 F% X- z6 [
' h8 v: C0 O) ]- B            }
1 w. Q& p3 ^0 V4 M            UARTPuts("\n",-2);( u- S, d# T7 f
        }/ v  r1 [; [0 E6 b: V
    }, ^- \! I( T4 ~5 d# v7 `

/ P' ?1 c5 d9 G) v5 h' c9 z}
6 L: C. P6 O0 E: G- e& h: R
2 N+ h$ I! m2 G$ H" ^0 P
8 D! v; E! X8 D2 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。$ r( I4 w$ C; _
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。# u+ G0 o; E7 _' f. k& r# r
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-26 14:13 , Processed in 0.040861 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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