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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?. x( Z& I2 E; K0 E
Void UPP_TASK(Void)
. w6 g3 ^/ z) [& E  Z& \  ?0 i{
1 ]& O+ j2 [. P* d; r; F7 l/ Y/ {* [; V# N
    int i,j,k,target_int_count=2;
& _/ i. ^* }' |2 d4 b3 e- Z    char ch[2];
9 i( l7 S) U" I8 I$ L+ |2 ]7 b7 ~' D. E. l) M. b- P. H8 G3 Z

# ?- m3 }, V, i2 I) d) K) Q1 e
4 l) X; o: M7 W* C' R0 e5 |5 t    upp_interrupt_count  = 0;
) o' U0 f$ K! H* R, s! ]    upp_error_count = 0;: [5 y' l% Y( Z8 R, A  T# {
2 `2 V, A7 g6 q
    UARTPuts("\tResetting uPP buffers...\r\n",-2);; e7 F7 A# p( @  z0 {2 V4 @
    // Initialize data buffers2 E* |! u, X$ H4 b- _: m, l; J. f
    for (i = 0; i < upp_frame_size; i++)+ E2 l$ o8 W$ }) w4 E7 c- K6 R
    {
6 R  V* D2 n  I8 a- b       upp_buffer_b =i;
/ ~" R. W! b/ F; A$ s2 |" m       upp_buffer_a = 0xDEAD;
* N% C9 @' x7 C4 R    }! E/ b/ M/ M# p$ p" P- y) n

; J/ X7 S7 @* x+ V  H& |    //for(i=0;i<1024;i++)* Z  r4 y% p2 ]6 D  ?7 @
    //    temp=0;: e# X- d. x" [5 o! n) u2 |/ m
% A0 O: L5 ]2 B  n+ M& d" `9 k
    //UPPReset();2 x3 I" h- H8 g/ I! ?4 K
    /*启动UPP DMA传输*/
5 I  Z; r) G+ J" R. i2 R; k    UARTPuts("upp_prog_dma_i\n",-2);0 R$ r  r7 l( Q' M9 O3 ~
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;: [& r, z: I5 u, p* M  j0 Y
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
4 g4 N) o! y9 m. \, U    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
" z, L* W3 x; n+ s4 g: R& u/ W/ `% s+ q. N" a7 d2 z0 V
    UARTPuts("upp_prog_dma_i\n",-2);- Q# |% }& A% K7 d0 f# t0 t
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;& |3 @$ \+ s1 o* ]$ k) c
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
/ J( [  K: }( B1 V! m- p" f    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);; F* e3 O% v0 ~* F
! z5 [' ?4 a9 ?+ M) L% s
    /*等待UPP传输完毕*/' O* w- J# n3 e2 F# d8 G  J
    //i=0;3 e& N" k# U3 q
    //j=0;( x; t6 ~0 q+ R% ^- ]
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
1 e# e8 Y: h) ]    {
9 m% ]- T' v6 O  ~3 ]7 H        /*  测试UPP传输的同时操作普通DDR数据
; u0 ~6 n' }# w; q        temp=i;
6 p4 v. f5 a5 M0 l. b        i++;; r' D$ |8 P9 g9 T4 i
        if(i==1024)
. ]5 o  S1 C, c' p9 x2 b        {8 V* i7 O; }$ Z  S( y" b6 ~
            i=0;
8 N( A# r8 @  O: ~( K4 u+ R            j++;
% f' I1 {/ E0 t9 i" i! n0 ?        }
2 n, T- e9 ?7 \/ _6 J        */
1 x, o9 u! G' A$ W7 x- O: F$ O" Q& u3 J: ~
       asm(" nop");; M; t7 O+ u: _1 ^- Q

3 o; v3 J/ u( D3 e5 w       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);* X$ ~, j* u! b3 f
    }2 n# |+ Q8 C6 @/ c( `; o

& Q: D# t( ^2 j# j/ U    /*检查UPP传输的数据是否正确 (loopback modes only)*/" G* s% S: }5 p
    //UARTprintf( "i=%d\n",i);. H5 v, }5 e" G  Q" W6 a2 ?
    //UARTprintf( "j=%d\n",j);) Q' L! X" u7 H  w
    UARTPuts("Data mismatch in buffers.\n",-2);& @# m' R+ _. r: Q& u
    if (upp_interrupt_count == 2 && upp_error_count == 0)
4 g6 V1 S% q  E1 ~9 `0 }7 h6 Q5 }! I    {
3 k* U$ p, y9 x2 U5 A2 b        for (i = 0; i<upp_frame_size; i++)
6 D, J3 G  C" F/ }7 W, o        {
% I4 I7 [( _1 t5 S3 o            if (upp_buffer_a != upp_buffer_b)
% @: p5 D. p- E  d) t7 [) _7 H4 e' f            {. l; ?1 N4 }/ ~9 C; w$ J# {
                upp_error_count++;
, E+ d9 g3 K1 X* }+ g. F            }. z1 Q8 v& w: b: E) w! X* [. T2 g
        }
7 e; V" O6 |) o6 w    }: m! Q3 t0 T9 {5 @! K
4 h3 a% n3 ]4 D5 ?6 [2 q0 S8 Y' m5 v
    /* 报告通信结果*/
" |1 o/ t, |' J5 o$ \    if(upp_error_count != 0)
1 }/ T! q4 f/ ~; o        UARTprintf( "upp_error_count=%d\n",upp_error_count);
6 d( a- h/ V7 x) \4 e" D/ D! Y3 t    else
6 Q3 T- ]3 B6 ?  D        UARTPuts("uPP transfers complete!\n",-2);
5 ^6 v  C! L7 i2 y& R' d1 r
& @% }! F) ^8 x3 x; |8 g! Q    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
; ~" S; E0 d0 s8 Y- h6 A    UARTGets(ch,2);8 r* l1 O- e; O9 `/ t
    UARTPuts("\n", -2);
  P5 c; p, S5 n5 J0 r: @4 S2 \: t& l+ l; X" Y
    if(ch[0] == 'y')+ d  T, c* u3 b5 s( J
    {$ v( |0 r2 z1 @* \1 v, S: _  j
        /*打印全部读到的数据*/2 Q6 R+ ~& b. l) k3 M: B6 a, B
        for(i=0; i<upp_frame_size; )9 N5 u5 q8 s. P6 K# X
        {
; ?; Z, X& E0 P4 v! N            for(j=0; j<5; j++)/ ?, a1 V8 g; K. z. \) p0 u" a
            {
. I( h( G2 Y  |: ]: t                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);3 D- f, X# m4 k' l, l1 D: ~, f; D
                i++;/ s- E/ g; t. u
                //if(i >= 4096)
4 H3 W) r! v- A- D* B* _                //    break;. \6 M8 t5 t4 K+ ~) Y& [7 N
: o0 Z* m6 [" Y- s2 X& v% C
            }: E5 D4 u& H0 r, E* }1 N
            UARTPuts("\n",-2);- a: d0 [% L& @4 j. U/ _
        }  q; \, M$ s7 S& i
    }! E6 Z! O) ], D" `) T% q  G, k
* I  A: [: P. o! L- J; g
}

" }) r; X* @! F, h; l; {

0 E) O: p7 h) y; p/ F8 N. m8 \0 `
& ]  e# r# W; t$ N! j$ l( A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。6 E" g. e' i" f, m; Q; J* E
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
/ |$ ]* U* p# v+ d7 c
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-7 06:41 , Processed in 0.037659 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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