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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
' T9 i5 y) G) h8 U; C! y" U
Void UPP_TASK(Void)
! s1 Q9 y1 `  Y$ Y* u8 v( y; i+ v{
" Z, V0 \0 ]$ ]3 Y: P- H; {$ t& m, c8 p6 A
    int i,j,k,target_int_count=2;
  {2 @3 t9 M7 y7 b3 [  }+ d5 z    char ch[2];3 O* f7 `0 h$ O# T& k: z4 d2 l; I
5 Z* ~8 ~; k. t# U) P
: z! D$ F0 o8 g7 ]

' l) E. G- M- W    upp_interrupt_count  = 0;
) D+ ]" u% W$ K& G    upp_error_count = 0;' m' F7 ^$ P* G" a# k  d

9 T+ p" `& ]' [8 l    UARTPuts("\tResetting uPP buffers...\r\n",-2);
; `' T8 y& P. G' h    // Initialize data buffers
  p: z$ ]7 L/ ~1 s5 ~    for (i = 0; i < upp_frame_size; i++)% g8 y6 g. t5 ?! o3 E8 f
    {
3 U* u4 g$ G8 I8 |; r( s8 x: x       upp_buffer_b =i;- V; S8 `7 e1 w$ ?) a
       upp_buffer_a = 0xDEAD;
* M& {6 g: E2 @+ W# f    }: r, M( u4 I2 ~; S' s* `' }) b

! C4 @8 d) D% {# r; D' O; E. P    //for(i=0;i<1024;i++)
3 E/ U* R5 k1 y/ Q6 g    //    temp=0;0 z+ t0 W4 R$ f% _2 Z" s  ~
6 g3 I$ y3 Y8 Z; E3 c4 p& w
    //UPPReset();
6 n8 I9 P7 F7 @3 W) W+ o" B    /*启动UPP DMA传输*/, Z1 q4 e7 k0 f5 s1 X0 A, P
    UARTPuts("upp_prog_dma_i\n",-2);. q; m7 k/ ^  K6 ?/ o7 U$ K
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
6 n( a1 i8 U$ m9 L0 t% \    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);$ _) W$ j& D& |/ s" L6 G/ t+ X
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
' m) v5 h' }7 \, e2 {
: ?" l$ ?8 e5 E0 a/ c    UARTPuts("upp_prog_dma_i\n",-2);
7 d& j: n) i! H& S$ N7 G" D    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
% c* y! B$ a1 r; v    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
1 ?( }+ L/ g  K7 r- G    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
( p) x& ~6 O( l% }4 g' Q
5 F3 L5 |! T0 W2 v; L2 {4 o    /*等待UPP传输完毕*/
4 S3 \: ~. M8 o0 s0 ]  Q1 R    //i=0;
* v6 r% u$ H$ L8 i    //j=0;
6 k, t6 T% N1 M7 N$ z. R4 e    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
$ h  M% h) P3 k& Q5 N" C9 D- G    {
3 q+ t5 J4 l' }( E7 y; C        /*  测试UPP传输的同时操作普通DDR数据$ D  g% m# ]( p- I: s3 c* |
        temp=i;3 y; a- a$ L% `1 a+ K  G9 J
        i++;. _  s/ L. F! t  u% ]# x# a* @
        if(i==1024)
" \% W$ A' U% P' C) m/ u& O5 U        {. z" p3 N+ p( s6 b$ e% v
            i=0;
4 e* c! a' G1 r            j++;5 A4 S2 J6 T% G5 O9 p. c
        }$ I3 K: Z9 Y" r# J9 F$ T$ n3 v
        */" A5 P0 \5 |" X
) C2 }2 N0 K% c- W4 l. l4 U) ?
       asm(" nop");- t, \9 y0 j; W# `4 e: I

6 J1 n8 L/ t) P, K! F3 y       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);+ d9 s3 J+ I9 W
    }
( U/ B) ?& B) _9 W1 @2 z# V. Y+ b* W
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
$ ~. m: a) f+ n3 O6 e. i6 ]) ?    //UARTprintf( "i=%d\n",i);
$ t! L- R8 R* P9 }; V    //UARTprintf( "j=%d\n",j);
! S9 A1 V& w- N" b% k    UARTPuts("Data mismatch in buffers.\n",-2);
0 r0 `0 V7 Q7 J+ W    if (upp_interrupt_count == 2 && upp_error_count == 0)
2 }: P& [8 W4 N; i) u5 n- u) J, Y; Y    {  ?" [. e" U- u( j* b, b
        for (i = 0; i<upp_frame_size; i++)
9 ~$ l2 S! l' K* s2 b        {
5 K5 E2 f' \9 u  @8 g! `            if (upp_buffer_a != upp_buffer_b)  N' N2 d' V* y9 b; E, W0 ^
            {1 r- O- j9 a, U9 s
                upp_error_count++;* |! y5 A$ p4 ^5 q! H) o
            }
  w' O: ~7 H4 d        }
" q4 }) ^% g* w6 {    }! G* `% z: j0 h

2 v9 P8 K3 ~- [' F" W: }6 P; U7 k    /* 报告通信结果*/
% ^$ @% J1 ]' g+ X. ~% D    if(upp_error_count != 0). f. E0 i5 v$ q. x
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
  J; a) r3 C! h* P, N    else
' R: O& p, z. `8 {1 n- T        UARTPuts("uPP transfers complete!\n",-2);3 c* E' @; U3 B/ T6 k

. o: p. E' T& g# z4 R1 L8 Z    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
1 b. G' {" {9 U2 h3 ^) E    UARTGets(ch,2);
4 h) n8 G6 X/ T" q0 v3 M  ^2 U- H    UARTPuts("\n", -2);
* M, E5 j" E$ ]  `+ o, i. @
' `5 S7 |; V+ W2 _0 \* }% ]- D    if(ch[0] == 'y')
+ R' X% p  B' B" B9 m% H: L; W" C    {3 K+ z" t: J. b9 b
        /*打印全部读到的数据*/
- s' _2 g$ ~/ Q! h+ m        for(i=0; i<upp_frame_size; )
9 T4 z" B; }. g2 ^* `% C        {
9 ~/ @3 {" Y* g            for(j=0; j<5; j++)
( `$ ^1 H. [$ \! V4 E9 f            {/ C- }# j% \9 H% ^& v; U3 G) |
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);# X4 |1 d$ q$ ?/ o
                i++;
- b4 Y4 \/ q9 C- L2 B8 v" ^                //if(i >= 4096)
; Q" `# m4 h; M% a5 \                //    break;
! g4 E/ w9 S, F) v8 }& W
% m! m. p# g! n, {            }% a3 ?2 @7 P+ F& @" N5 g% L# R
            UARTPuts("\n",-2);
* _& J0 j8 z: n9 L; T( L0 V! d6 g        }8 M' q/ c7 s6 a0 h5 f- W7 x
    }9 h3 i9 ?3 L+ T/ h

8 q, ?! J( `& V& Y/ _% V3 P}

- e3 J) Q7 B' I( d7 S
2 y1 I% o( b( B. G  C! O7 i; m0 u

. X! q; |8 _0 q. J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
. _) D6 `) w! s: G
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
9 z5 M) K" P- S6 I* U! r0 `! N
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-20 09:10 , Processed in 0.042906 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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