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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
; N+ A3 H2 P; N! N' ?
Void UPP_TASK(Void)$ p8 v- O% G: r" ~+ e/ Z/ V' c9 E* P
{+ m3 t8 R/ V/ r7 n" t
) R, z- Y' y! Q$ G" [
    int i,j,k,target_int_count=2;: u; L& V8 M7 h4 A' f
    char ch[2];
& u$ i4 P1 T# b# y9 F4 g
' K9 \6 Y4 r% n4 z+ I, N' H) ^1 W/ v
; S1 p& u9 u5 H2 p/ I: i2 F  a: d
    upp_interrupt_count  = 0;# x6 C1 n8 C- J
    upp_error_count = 0;! e( N" W$ ^  U7 Z( l* R) Y# O

# k* }% L. `+ R9 t& A! {    UARTPuts("\tResetting uPP buffers...\r\n",-2);
4 Y. W% B% v0 \& a& J( ]* f    // Initialize data buffers0 W' ?' i( o* n0 L! @: y% a
    for (i = 0; i < upp_frame_size; i++)+ s( {: i! g, B9 a4 U
    {" T+ o+ z4 y, P  `7 R
       upp_buffer_b =i;% g0 p2 a" n3 S1 j: j& K
       upp_buffer_a = 0xDEAD;+ F+ z/ }% Z9 }; f
    }: D! `& B% Q* X% F# E( d' l
2 ]: S# p# u  U( m1 g- X  ~7 }
    //for(i=0;i<1024;i++)( R: A+ d5 c% x1 s2 A2 Z
    //    temp=0;
. Q: g  O% o; ]  ?; S
2 O' k  t+ |% T3 m! {2 J    //UPPReset();9 O8 [/ n/ x5 r# n
    /*启动UPP DMA传输*/  i, o7 A, K( E: P) ?9 A' h8 e
    UARTPuts("upp_prog_dma_i\n",-2);
$ v, ]/ F+ |: w6 S' E, K" {8 S    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;3 X6 O2 n2 E' ^' V1 I
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
* [: e1 M+ g. }, q' Y    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);# V! u' m, M9 y$ S: x# `8 i% q+ ~3 n

( @6 G; U6 a5 F' O1 i    UARTPuts("upp_prog_dma_i\n",-2);. `% ]$ e0 P* z& S' \
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
: Y" E) h8 \! u* R: C    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);& f; s% n& M% m5 w. l
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
( ?* `- [0 S6 W
; w+ d* e( ?, J/ G4 m( ]    /*等待UPP传输完毕*/
* |' G- `- j% f. y6 I9 x    //i=0;  R: V, y/ j2 s  y3 {6 u4 X
    //j=0;
7 j, v4 Z' Z2 u3 A8 O+ K) t2 V    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
( K8 ]' k' _( o4 r- [    {, w; ], a  g$ \3 ^
        /*  测试UPP传输的同时操作普通DDR数据
: ?# B9 m' m, m% i7 G% M' q        temp=i;8 G( {6 r  Q) X1 s5 P& G
        i++;
" n! j4 c; A* N% W& R* {. B$ C! O. U        if(i==1024)' j, t2 ?7 k0 ~5 }5 y5 c
        {
0 J4 C9 h9 M9 e5 Y. P; H5 j5 k$ y            i=0;% i* b( ?( T" f. i2 u- G! O
            j++;- v: q, N- m: N, N2 J8 D; v4 v3 E+ w
        }& r% D& O$ s' b: _* ~1 U
        */
6 n4 w8 a! q1 g7 i5 D& o" y2 F' M: t& S- T& e* w
       asm(" nop");  \* O' l6 K1 Z1 L' J! \
- h( s* f* X, h- d/ ]
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
0 c' |: q6 t$ `    }- `' D$ M7 G) g3 m2 D1 L7 g
$ T, _1 o3 m6 s; x) B% k
    /*检查UPP传输的数据是否正确 (loopback modes only)*/6 ]& |  ]% N+ g
    //UARTprintf( "i=%d\n",i);
- ^" a1 f( E. I$ _& u    //UARTprintf( "j=%d\n",j);
+ u- q9 w; X& U    UARTPuts("Data mismatch in buffers.\n",-2);+ I4 R6 g  z) ~. `4 l1 y; f5 n
    if (upp_interrupt_count == 2 && upp_error_count == 0)
9 z/ |5 O6 c! _2 Q7 E# e: h    {
; L5 Y  |, L* I* g        for (i = 0; i<upp_frame_size; i++), k9 \% ^1 t/ C9 F5 x7 J
        {" `* r! T) @! r2 y+ b
            if (upp_buffer_a != upp_buffer_b)
+ ]2 ]1 Z" [+ H            {
5 l( P- p2 f  v6 }( d                upp_error_count++;' }- v0 U) U: b& x9 x. l* o/ v
            }
, Z3 ~+ O& _- T- P! Z3 E, q' ]        }( N7 L/ N  e  U
    }
/ U4 r% Y0 K. q! b& s4 ~  f' s$ D, |- J. u) G1 M  g
    /* 报告通信结果*/
& O) T( {" `7 A+ @    if(upp_error_count != 0)
7 m3 b( j  h: f( y! e        UARTprintf( "upp_error_count=%d\n",upp_error_count);
) P% h0 r% M* e" l' z" L- M    else
! H( Y  }2 v7 F, b) n        UARTPuts("uPP transfers complete!\n",-2);
% w8 _" a7 T& d% m9 v% |4 H% y
8 m8 O  c8 c- ]" V    UARTPuts("Do you want to print all the data?(y/n)   ",-2);' e3 j5 ~* b) L  `% h: Y( u# @
    UARTGets(ch,2);6 K' I. L3 P0 M  F
    UARTPuts("\n", -2);
& A* T* B2 e+ U1 _0 c* }' t' E9 b8 _' {8 h, U3 K2 _
    if(ch[0] == 'y')
4 ]6 ~& P/ }# U, A6 a3 l% q    {
+ h6 G9 ?6 S1 G! j        /*打印全部读到的数据*/
4 Z% F2 z3 k+ V1 J: {        for(i=0; i<upp_frame_size; )
! Q% i* _9 {$ ~$ r        {
' e! {4 F7 D: Y$ T* A- o: L$ R            for(j=0; j<5; j++)
" Y& x, B7 X# ]! v3 v- d, M% `            {& x! ~1 l  x8 \, N' I
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
( P5 ^7 w- v" q4 p5 m- f' G                i++;1 C1 ]4 R% }+ w8 Q9 G% }4 d1 Y
                //if(i >= 4096)9 V3 |/ L  r# n8 i0 t% r2 [
                //    break;
' i; J% i$ r1 J$ j& Q
6 u" c- a' b2 N0 ]; n& R3 I2 S# k5 T            }7 W* d; T! J. q. w
            UARTPuts("\n",-2);: h3 ]* c$ X; X. c9 h6 f
        }: U) j0 B' X" Q) i) }  e! ]
    }
4 i' _  ]5 S( @+ T
3 T2 L: p$ R4 R& I& {2 ]}

8 |" J, U8 b; o/ Q& l! t  c/ M

1 Q* G" K8 }% L8 i; V, E: I8 f( I- t( `% g% t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
+ e# Y: }+ j' Q
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。) D& P$ r4 i: Q8 t, z
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-12 11:50 , Processed in 0.041209 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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