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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?- E/ Q9 z( \$ d4 n& L& a
Void UPP_TASK(Void)9 W2 `  H' m' j, p
{, w5 f8 h* n- b' u4 k
) L% x% C. ?+ {
    int i,j,k,target_int_count=2;, ^- A- s  ~# h6 r
    char ch[2];
- o" ]4 }4 J, R. Z7 O8 ^% k+ k) L1 y/ n% ]+ c4 N: {

) ]0 R( _6 M& u
  N4 u' T+ K" y2 S) d    upp_interrupt_count  = 0;2 E+ F+ O: @* G8 @
    upp_error_count = 0;  G# b( ?% p; q9 H

1 ?# l% A& N& x! v6 b    UARTPuts("\tResetting uPP buffers...\r\n",-2);
6 G" C/ \$ r  t& v    // Initialize data buffers
6 @. s2 J8 g, t: i    for (i = 0; i < upp_frame_size; i++). M3 |2 r. k4 W4 @- G% t! h5 @* Z) Y" |
    {
9 W, \: {! N; M       upp_buffer_b =i;
/ s+ u+ D" a) f! N( g       upp_buffer_a = 0xDEAD;9 c5 M' R; f* K4 P0 H) L: k+ R5 ~
    }
: [$ j9 I8 ~, H
) Z' x7 j0 c8 _+ y    //for(i=0;i<1024;i++)
4 a+ a; L/ k. v: P& {    //    temp=0;
. w. n5 [" W, W8 B7 B& u4 B
* a- N( Q& p% `; G* k! a6 G$ F# g    //UPPReset();0 U% n) h; x, T( Z0 a
    /*启动UPP DMA传输*/8 v9 h( h$ A' i" n3 w/ _
    UARTPuts("upp_prog_dma_i\n",-2);
7 p* B. H3 S3 X    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
. [4 W2 Q+ J9 Y* [5 q+ ?8 I: f& X    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
# U6 r  Z: ]; `5 f! Y3 @0 f6 B9 P    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);. k! c7 v3 G/ w5 U8 g, p: A/ z
; A0 v3 {- L8 _# G" p9 {
    UARTPuts("upp_prog_dma_i\n",-2);
8 Z7 D+ |7 C7 X7 f    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
/ S. e% b/ I5 \, ~1 q    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);% T5 d5 U, O, G2 _/ F1 P- X9 D
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);9 _# }9 ^8 d! w  c1 D

; x$ G4 ?2 w# T+ w# r0 g1 d    /*等待UPP传输完毕*/
* n+ {' _6 m2 E$ [9 _  b    //i=0;
( V- k$ t6 o- X: N# q    //j=0;
, H0 C# p$ e5 f2 P" l    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
+ ]& l  a2 \/ ~* X& j; u    {+ k% g* m4 |8 k5 ~9 E! O( s" ]
        /*  测试UPP传输的同时操作普通DDR数据" [2 Y6 u1 d+ `8 Z9 i
        temp=i;
' ^! f8 k% D3 I' _$ s        i++;
+ ?7 P( n' N" f' {        if(i==1024)1 M$ V# p( t2 Q+ F3 i: b
        {
  r3 R% @) E1 J; r$ {- ]            i=0;7 g7 z9 R! w/ p) N3 m, t% d0 y9 l& o+ q
            j++;
% V5 J. u0 O; o2 ]- o5 ]        }
$ K6 ~; W# Z) a$ s" n        */
2 y" O5 ?* }( t1 l
* K. `" U4 a& f: e# H0 D       asm(" nop");
; V- `% K9 N  d0 V" b6 I0 @( n* o' U1 R8 y* v8 }7 C
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
$ j' M# x2 R4 C+ _% _' O    }
, p# [& j! C, r2 Q; X0 G+ Y  O  P- a& j. k6 q
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
3 f5 \( R9 J! D3 j& }9 L    //UARTprintf( "i=%d\n",i);0 {; @9 ]6 `& b. t, n2 f4 y% _
    //UARTprintf( "j=%d\n",j);1 E1 [: D- K8 |5 ?/ R9 m. Q! o% a) ]
    UARTPuts("Data mismatch in buffers.\n",-2);% e6 T, G- s8 F/ V$ c
    if (upp_interrupt_count == 2 && upp_error_count == 0)1 @7 Q: G2 ^- ?) m+ T  W
    {
5 Z( x% W- q" H0 B; j1 d. r        for (i = 0; i<upp_frame_size; i++)  L) h5 h! R6 g: G& W( D* \, s, n
        {
- x: q/ B7 c, ^% r6 b( _            if (upp_buffer_a != upp_buffer_b)
9 @! a% `2 n: E* t( G+ O5 @            {
5 R  f$ H6 ~* O, q9 X/ i( s                upp_error_count++;
6 {6 \+ D; D" N3 b6 r            }
5 M% v/ y0 i  |( a" L& |5 Q/ C5 A        }
* s* u  u4 L. E( M+ u% v    }1 O4 S* O+ b9 }; S4 q

, y3 D# x6 A" K    /* 报告通信结果*/
+ R1 S: K6 m  l. t) x% ~    if(upp_error_count != 0)5 Q0 c/ c6 G, u0 D
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
" M6 Q6 j* Q+ z  D: ]: K8 E    else. S% ~- S6 c: z- y; Y* D3 F
        UARTPuts("uPP transfers complete!\n",-2);
. A6 [5 @# W5 i% d5 |9 L0 P+ {8 c! y6 ?8 A) t
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
7 D% H- \# f0 q. ]: e, c6 A    UARTGets(ch,2);/ I. d0 i+ L7 d+ B. v
    UARTPuts("\n", -2);
" v/ B, P  {/ C) W0 S( F, g. d$ r4 h% C7 [6 m4 h
    if(ch[0] == 'y')! ?9 p' J% i: F
    {- U; G$ R( a9 T7 ^6 |+ y
        /*打印全部读到的数据*/
  }1 n9 d  J1 o3 D1 W; o! l& f) S        for(i=0; i<upp_frame_size; )' X4 v9 [6 L  _5 |$ X
        {
0 ?% H( O# g8 a: O            for(j=0; j<5; j++)" d7 z1 w- S2 W; h1 O
            {: @' r7 Z6 {, L% ?
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);3 C" X- r  Q) l9 l/ i& r4 y, V
                i++;
& J. c3 o! P* Y, S                //if(i >= 4096)
" O! ]' [& g8 ^$ i" z- R                //    break;
7 p% \, M& s6 W7 k% j" L' I5 N0 w, C# e
            }6 |( }) Q7 f8 J
            UARTPuts("\n",-2);+ A3 u2 C  [4 t; F% g. t+ `
        }
9 f1 D* T. S/ p# X% c    }
, k# {& ]! Q, p3 r0 Y5 `7 k- w! x: X( B
}
9 }. L7 e% h5 P2 u0 F1 r7 H

+ g6 N' @9 Q. a' R- e  J* v9 w0 {3 a
- G: ?+ ], Z( e: U6 M5 q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。" t# t/ u( F: i1 {7 q% X- u
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。8 O" |- r5 C/ d3 o! K5 ]* E
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-10 20:12 , Processed in 0.038025 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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