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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
/ M' |% I/ ]  r) c/ l2 m; I
Void UPP_TASK(Void)
7 d9 y  q/ A) D{
1 z) w0 e, q; j3 C' F9 U$ l/ y) A- J# C% x: k
    int i,j,k,target_int_count=2;6 ?! h* `- Z/ S
    char ch[2];( F/ e8 w! H& h9 n) J! r
: [* V# X7 ^: q( O) I9 d
/ I7 S  k1 l( `0 |( X5 w, M8 |: m8 o& {
; L. M9 w0 s8 E1 n  ?/ K
    upp_interrupt_count  = 0;
8 w0 p& P3 X  y" g  ~- ~' I3 ^    upp_error_count = 0;# B- z  X/ W$ T. Q. W3 @

0 ?5 L) M& K3 |# e7 L2 C; X& _) S    UARTPuts("\tResetting uPP buffers...\r\n",-2);
% n7 a' Z5 {6 o8 @    // Initialize data buffers  ~9 e# A- c* }; C: t/ v
    for (i = 0; i < upp_frame_size; i++)
5 N. C9 f1 |; ~& _7 N3 H7 H  s    {
2 n7 a' w) D  ~. q       upp_buffer_b =i;/ ?, M6 I; C3 j4 T5 z9 b0 I+ y
       upp_buffer_a = 0xDEAD;9 c" A' H* F) Z" c
    }
% u& c7 E( P8 }3 X( }% s( D% @! _2 s: U* M- r$ c) c8 E
    //for(i=0;i<1024;i++)
& ~- r' X3 t/ y2 Z9 ?) u    //    temp=0;- a: l2 A0 ]. r+ y6 w2 [/ c! n' `

* l, e  [+ P/ @+ ~1 n! ?7 i    //UPPReset();
# S% `* F  b6 B! A5 z    /*启动UPP DMA传输*/
+ j: j( K, x$ M8 Z% g5 ]    UARTPuts("upp_prog_dma_i\n",-2);
; c0 O9 o7 T8 J/ M7 h, k2 X    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
( a# m( C4 m8 h* @. G    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
5 F. c* T% N* }    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);$ w2 F. a: k% M* D  G+ F2 {
) d' k- j& O. V: v2 _; ^' G& N
    UARTPuts("upp_prog_dma_i\n",-2);
: s9 A" d8 J6 _0 ^7 j/ ~    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
, g9 @( v. t+ q& \) U    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
3 d2 a" p2 X  ~+ I7 B  Y    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);8 y) C! s5 I5 B( H: {

5 s0 d8 y& X8 h1 Z* Z$ t    /*等待UPP传输完毕*/
( d( e4 g: D6 w! U+ t    //i=0;
# A. J1 m  F3 X7 l( d/ K    //j=0;
- U' x. A2 K. J: W. ^* W# J5 Q9 o0 d    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
2 w9 V" i9 w! V" l& H/ Y    {
& i, y7 ]& s* L- M        /*  测试UPP传输的同时操作普通DDR数据  y' u9 `. h6 O3 U& _
        temp=i;6 Y- p2 t3 t  _: \+ D; f! f1 W
        i++;1 P- C- L* T' `% t0 Z) E6 v1 y
        if(i==1024)$ `8 |0 K7 m. H0 x
        {$ }3 K  `# I! h  m) Z- s
            i=0;  k" ~* F* W& p# z' X0 W1 b
            j++;% q2 O% X9 d3 ?, p: \6 v9 s
        }
% B% e/ w1 g4 k- ~; h        *// Q6 p- Z+ S! L1 i) ]  \) v
/ v' q; g2 g* n
       asm(" nop");0 C/ F& c( k4 Z/ E

' F$ y- [6 i0 D, F0 m6 i! k       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);% C! `3 R* n+ b4 A+ ^( B
    }
- g. x* r% c- W" z& [) T' B" f8 M
    /*检查UPP传输的数据是否正确 (loopback modes only)*/6 u# A" W' ~7 A) Q$ e1 ?8 O
    //UARTprintf( "i=%d\n",i);" y: b6 b1 ~) Q9 o3 r5 o/ W
    //UARTprintf( "j=%d\n",j);
/ n& Z0 c+ Q& D/ }( B    UARTPuts("Data mismatch in buffers.\n",-2);, E9 ~9 a0 i9 Z1 m
    if (upp_interrupt_count == 2 && upp_error_count == 0)( b7 C$ B* M* _- H7 k& v4 h
    {
7 p# _/ L1 H4 l: q( O) q        for (i = 0; i<upp_frame_size; i++)
, ^2 d+ T. ~6 X; ]) r        {# b  h5 C/ r1 e- }( `4 ]; R- Z9 `
            if (upp_buffer_a != upp_buffer_b)7 `. _1 t5 ]: c
            {0 K; K, P# {9 u8 D; f! i
                upp_error_count++;7 O0 j$ N. a4 m* r" q. Q' ]; Z6 ~
            }
4 l0 {# j* n; m  q( u) z        }
& a& F0 e8 O' B0 k    }1 \- P" q3 |) q; K& @, H
2 Z/ `; h2 _" v9 ?$ l
    /* 报告通信结果*/( p' `' |5 r3 |# z) p* x
    if(upp_error_count != 0)
' O2 S, l! y9 `        UARTprintf( "upp_error_count=%d\n",upp_error_count);# h1 {+ _  G. D( `. O4 N, C
    else
& k/ r; [' z! a8 i. T* a1 r8 d        UARTPuts("uPP transfers complete!\n",-2);
$ ]7 `6 @. b" q7 ]! R; [' O0 L3 a. Z7 p9 o' ~- |* b. Q
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
, x* F) _0 A+ P- W/ X% j: g. }    UARTGets(ch,2);
! Y/ z+ H) G6 [5 u    UARTPuts("\n", -2);3 \, Q7 s  |+ K. ?
  `7 m% {% F% A
    if(ch[0] == 'y')
$ x" r, e# H4 |2 N5 O5 f3 g    {4 E+ e" v) U# e' p1 ^
        /*打印全部读到的数据*/+ s+ S! I" J. n5 |* y
        for(i=0; i<upp_frame_size; )
6 `% t5 o  W2 t" R& b8 d$ \. a$ J        {
- x+ S+ |1 b2 _0 I' ~! \            for(j=0; j<5; j++)
% ^+ G6 S: z3 W  ^5 }. a( U            {
; E# s* W9 I& s6 [! K                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);1 \( M; C) _3 w/ `9 v  r
                i++;% @5 _/ Y% P4 z  k0 y
                //if(i >= 4096)) Z5 q( K3 _" U. P  J3 M( {
                //    break;
/ \1 T; @  U* {) l! h5 g& ?
9 J. h0 d- ]! D            }
" z- H4 C' |  o. a            UARTPuts("\n",-2);
( _9 F- }9 o5 Y# T+ V        }
0 D4 _. @3 N. i- |4 x4 Z    }4 O0 X( F4 v2 Y" H

1 c2 _2 c) z8 ~! o" r% Q+ c}

3 G) w7 b/ y7 M. p! A+ U$ C1 c

' q: \( A& }: J  N2 h3 p! j) ?2 {( T; N# Z: t4 s, w0 d' w9 e) t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
% }9 n. v% ~* H) L, e2 z5 G
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。, f) j% F; T5 C  _
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-5 03:12 , Processed in 0.039375 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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