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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
5 g; H# O( g( w
Void UPP_TASK(Void)
) L7 a7 a4 j( j8 h{
( _& z" G5 T& U' H2 l" O( z& @2 p: k+ A1 K' `" O
    int i,j,k,target_int_count=2;
1 v' a; x2 v' I1 C, N    char ch[2];
' m! j4 C. D  L
6 E2 h. W5 |' E( m% q( ~4 p! R
4 z$ k1 g( t  Y7 @$ d% N, S& l
9 E, U$ d! @  g9 f% p% Q    upp_interrupt_count  = 0;% w6 Y  O" C$ F& `# u
    upp_error_count = 0;# z4 s& L- J) [' T3 k1 E
9 L  ^9 x+ ?$ S" h5 J1 B0 d- A
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
8 Q3 L( e& I6 i) y2 ]    // Initialize data buffers& o1 D' k7 o( @- V1 F5 a: S3 |$ n
    for (i = 0; i < upp_frame_size; i++)
2 S" ]0 l& L* l( J0 J" Z+ ?    {
7 |9 j: N9 L. l1 ?. E$ k       upp_buffer_b =i;
( M( A, w; Q6 l! g1 K, k       upp_buffer_a = 0xDEAD;" |/ L: p. F# l2 p0 ^
    }
! l+ X( w* p) ]- j/ O+ S5 j% u( U, c( q* |" h
    //for(i=0;i<1024;i++)
  A8 B* `5 F* `7 _$ Y    //    temp=0;. D. B7 j. w+ y; @

' K: d" P1 x0 J& |; l9 Z    //UPPReset();
) |7 D# W6 y: Z% I, S1 \! D1 {    /*启动UPP DMA传输*/
. Q+ j- s3 }7 ?$ E1 W) \    UARTPuts("upp_prog_dma_i\n",-2);
9 h# ], k$ Q  `5 q    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;' m; ]: n+ n! B: ]. p- I
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);1 ^8 d) D2 v0 q9 q
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);' j- A" z7 ^/ C3 u

! x: R$ {3 g( h; f3 \4 i    UARTPuts("upp_prog_dma_i\n",-2);8 c4 F2 i4 x  W- p' V, u# h
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
. M/ j" C3 }, m    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);- ^. A, Q% r2 ^5 ~1 k( R
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);9 H, K8 y2 S& s' x  \+ y3 @
3 o, j/ s  d+ J. b" Q
    /*等待UPP传输完毕*/8 k4 T. ~) F4 \8 q* V
    //i=0;( C! i, \, l- l0 K6 R
    //j=0;
+ u6 M( h' Z2 R+ u6 p% g! _    while (upp_interrupt_count < target_int_count && upp_error_count == 0)( e0 P  N7 I8 _# D. s
    {
, M$ y4 ]  [; e# L9 l8 K        /*  测试UPP传输的同时操作普通DDR数据
$ p' b1 `( r2 P% Z' ?        temp=i;
# g* @' v% p1 z3 H  C1 d& T, P# J        i++;- B1 f6 t' Z( B2 G/ @4 o7 w
        if(i==1024)
' W5 ~: B; ?) i1 Y% y+ s        {
4 M5 B* N) H5 c3 d2 L            i=0;
7 z" I. d! n0 L/ b& P  g            j++;0 U& n& Y- \7 `( J+ B
        }
+ z3 W+ c5 w0 H/ p2 q        */
( o. T: j+ G* _0 k+ }6 n. K* z, z. T; r' {  j) s9 Y
       asm(" nop");
( t% t: n  x2 {$ b# v4 ~2 F+ u
, W* |0 U, n1 ~, @1 n       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);+ q3 ~( q5 a  O
    }9 F+ M  g0 L3 R/ z( v
) o; @% j0 Y+ s% j. O% w% @- t
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
" ~+ R2 r! [& p2 {* }# {    //UARTprintf( "i=%d\n",i);
0 ^! `& z6 ^0 a0 P    //UARTprintf( "j=%d\n",j);
5 W" K( @! M4 a, k( y, Y/ @    UARTPuts("Data mismatch in buffers.\n",-2);
* ~% I5 C+ B" c    if (upp_interrupt_count == 2 && upp_error_count == 0)
9 g  y  X* i7 r. p/ C: [    {% b  Y) Y, T: f: g+ \9 r% s: L2 g
        for (i = 0; i<upp_frame_size; i++)
1 P1 S! q  e* H7 I$ w8 H# z8 L        {4 v  B& a  r6 k# X$ N
            if (upp_buffer_a != upp_buffer_b)
7 q1 D6 P- S8 a' ]# V            {
4 N5 K! k; H  A+ F" Q                upp_error_count++;6 U1 w& ?+ u4 L- S& {
            }0 P" Q; L1 C# K
        }+ Y8 r& b! [) [8 \; O# i7 F
    }/ d8 G8 s/ s; Y, x6 M
, j& E/ W3 b+ [! I8 O# J% |8 E
    /* 报告通信结果*/
* N8 j3 H" I8 M' S1 H: b- t% ~( J    if(upp_error_count != 0)
# v) T6 F5 r* G        UARTprintf( "upp_error_count=%d\n",upp_error_count);0 e* f* @( r7 ^, \- L. K
    else
( E/ n: g" z4 `+ T3 i, v        UARTPuts("uPP transfers complete!\n",-2);4 [: z! T' q8 `$ P7 X( R, c- n
; N) T& E: C6 p5 N/ X5 D  n
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);* n: n. {6 r0 e7 A: Q
    UARTGets(ch,2);
0 G- \1 F2 ~$ M" t6 x' D    UARTPuts("\n", -2);' I# {0 Y3 l! i7 q; \  R

' ?2 D* S" Y: n3 c# P4 x) G+ G    if(ch[0] == 'y')
; a4 }: o7 L5 K$ W6 K1 [    {
" S1 [8 N* E# L& E: r3 m        /*打印全部读到的数据*/
; [# Q  v, B$ T        for(i=0; i<upp_frame_size; )
8 @; q% @; A4 T: `: N8 W        {
' Y4 e/ O5 C7 S; B) @) G9 i            for(j=0; j<5; j++)/ y1 f% E# s0 S' p1 ?4 w$ a+ v! G
            {1 T2 ]0 p- l8 u! u& {+ U; {8 s) v# P
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
, L" s+ Z! Y. }: Y) |/ Y                i++;
' k, t( l; p; U( t                //if(i >= 4096), E, ^/ z8 p  ^# Z# N
                //    break;
% D* l" A. h6 P) }) g/ ^2 y3 h$ X. Y0 O5 x6 `  |
            }
/ }5 u, ]. x' X0 S            UARTPuts("\n",-2);! s+ M% k9 M' V$ a
        }' J  P- v; n2 n2 U! i; p
    }
  p# {( p2 i, O* C) f9 C1 W9 n: G4 H/ J$ v" N, e! ^. Z
}
, u. l7 g# k* |: v. p% D
$ H2 n& ?2 C4 E* q, i1 W" m
6 W- {  L8 ^: _3 {& o" D, x$ H1 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
1 _& `. Y6 z- a* T
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 20:35 , Processed in 0.038748 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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