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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
* V  x5 l" ^9 h. K% X" l
Void UPP_TASK(Void)
4 A3 o8 z+ @! J# I1 W0 u{0 K- t; n3 j. z7 G) Q
3 f* D! w/ q* C+ H7 O
    int i,j,k,target_int_count=2;
9 X( A7 I' @& r+ m    char ch[2];
0 M& E0 r$ a3 f: ~' l
3 b4 e/ i# V; e0 g- t% d5 j3 S  K
' }$ U5 y6 u, i9 l& t7 ~6 C
! V1 x) F; j- K- w4 L" g$ F4 _    upp_interrupt_count  = 0;# j3 ]3 z5 w. N
    upp_error_count = 0;
( @& ~  V8 h3 T( J+ X6 i
/ `4 y2 ~4 m7 S4 q/ n    UARTPuts("\tResetting uPP buffers...\r\n",-2);- n7 s) {" w$ k$ }  }# |8 o
    // Initialize data buffers
; Q1 _: y' Z2 m$ J8 x5 N    for (i = 0; i < upp_frame_size; i++)
! ^& P! v7 e+ K: d& e' S* ^9 \    {
+ A$ I1 U' {7 N# k       upp_buffer_b =i;
5 j" d. A1 ]7 ?! r/ }+ u       upp_buffer_a = 0xDEAD;6 |- ^3 H" Y, H  B6 [
    }6 U8 [) V: u  V- ?3 Y0 {  T6 ~
! o( C1 e' Y! ~1 h
    //for(i=0;i<1024;i++)4 _8 y. r+ I$ `+ p/ T+ ~  G$ g
    //    temp=0;
, H$ S# ?, i6 P; N; W' Z7 e1 f) a2 D# J' J0 n  d
    //UPPReset();
) s1 A3 z! D5 n, w' f    /*启动UPP DMA传输*/3 M* s0 h: a0 q% p0 |
    UARTPuts("upp_prog_dma_i\n",-2);/ b% P, f% a6 L# }) D" W0 q
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
0 }4 G* H& m3 Z- W2 m: I    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);' _( a6 @. |2 w- Z+ v9 [3 u
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);# A0 B) b% }3 j. ]! f

  A0 J2 K1 Q6 Z3 U* H+ d% s    UARTPuts("upp_prog_dma_i\n",-2);
8 w3 b+ J( v1 P& R    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
7 Y* c% d" P& [; p9 m    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
  F1 x. g7 T3 W3 @+ b8 `$ {% [    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);8 `) R' q, e6 ^! \

5 }: }+ o0 v7 O" a    /*等待UPP传输完毕*/
4 ~( L" u- m) }- C5 T' X( w. M" p8 h% h    //i=0;7 @: Q6 h( Z5 V
    //j=0;
4 s( L" {8 J+ r7 }. T& b% {    while (upp_interrupt_count < target_int_count && upp_error_count == 0)! u- U# G& I. @' I) ?
    {5 o+ q( c/ d2 u& [7 W
        /*  测试UPP传输的同时操作普通DDR数据
% Q. t4 p4 o7 q" k  B  @. A2 L        temp=i;: k4 o1 n1 X9 B+ k, A
        i++;
6 @3 q5 c2 [2 u8 F4 i7 m        if(i==1024)
2 m9 A- U+ q, D4 _2 K! u1 H" M        {$ f# x$ ^" R1 Q" s& M$ A; Q
            i=0;
1 ~! `8 S7 B" d% Y            j++;
+ X  z8 ?3 c! `! N        }
* R2 E4 t, [& E& n* D3 b' q0 i$ u        */
) ^- R& K' L1 }) a$ t$ `) \7 J. f% v5 H; ]' \
       asm(" nop");& q! q2 g. ~" k$ C9 g& W

( ^2 t$ d# R6 p9 g       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);4 X# C! V" h; W, V- N' f% _9 P
    }% B3 S+ V- j; ^8 o3 D* a! k7 [

5 I' o# ?/ G6 Q% }    /*检查UPP传输的数据是否正确 (loopback modes only)*/7 G  W& a/ c2 \/ C% Z7 O; m" t
    //UARTprintf( "i=%d\n",i);  z1 F+ \3 A8 D/ p2 `; i: G
    //UARTprintf( "j=%d\n",j);
5 f6 e- [7 U4 e2 V    UARTPuts("Data mismatch in buffers.\n",-2);% s) d  H8 w1 X5 o3 B: n( k
    if (upp_interrupt_count == 2 && upp_error_count == 0)
" ?5 B3 N1 _8 i; ?6 ^, J7 t    {' r* ~6 \7 c' V9 m& h
        for (i = 0; i<upp_frame_size; i++)
" X4 G. J" q( z) y; G3 F        {
* w( g, P0 d0 _& o& E            if (upp_buffer_a != upp_buffer_b)6 a% D) w. u% N% s
            {' M* `4 s* }- Q7 K3 X
                upp_error_count++;
. T) c- ~+ b; k, N; H' l9 W            }( a7 \5 A+ \8 d' ~" U( d5 y
        }
, x; f; O8 d# j    }
2 d% W% V( x; I& R% b
/ z: ]) Z  X9 J) C: b    /* 报告通信结果*/
5 |, Q7 J! W5 Z& i! ~    if(upp_error_count != 0)* t6 g, \7 J; Z0 `( [7 p, o% ?
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
/ R' K( H7 z) ^1 p6 x- S! P9 q& L    else& n# b. Y: }+ {  n
        UARTPuts("uPP transfers complete!\n",-2);  v/ y$ w6 M# U" E6 K- F
) T; }% A! K5 v9 H
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
1 x. T+ y2 S4 ^; T+ A$ s5 H    UARTGets(ch,2);, @3 v: @* F$ I& E2 _
    UARTPuts("\n", -2);( z: ~& J% L/ Q3 |: n+ a7 G1 p

- f( }% Y* r/ W+ W& y    if(ch[0] == 'y')
* D! C  u/ A+ E/ @/ S    {
  l% c# S! a' `) }9 w5 |3 E! Y        /*打印全部读到的数据*/3 w/ v$ h/ `; O% u0 l
        for(i=0; i<upp_frame_size; )
7 }; k- {/ y" J/ D, {, X        {9 ?/ n: [% E1 l8 c; c1 `
            for(j=0; j<5; j++)
4 T2 _* i/ g# j+ Z; ^            {
/ m" y$ P7 c2 c- P3 w" m                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
# S9 t( B) ]& I/ e' b- G0 M                i++;+ n2 h/ ~' P* H+ ]8 H% _4 A
                //if(i >= 4096)
1 s8 a+ B/ j4 K% ?5 U) i7 I                //    break;4 l; F6 X$ x" a/ o; K, ]
. l+ o7 b, B6 A3 O4 u4 _
            }0 O9 T: g1 x1 n: w
            UARTPuts("\n",-2);5 z) @" m! I1 }" ]$ L2 L0 N8 b
        }5 a& V' H$ ?9 H3 X. \. l# M) D
    }" w" X; [* J5 h. y  p

3 ?  ~: e% |) I$ U0 p9 l}
7 y5 K5 Q8 ~* T; T! L& \
+ I* W+ `. `5 ?) ^3 H$ H

" a1 U# \" ~% r8 m, w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。6 B' T- L+ v; d, Y
回复 支持 反对

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。8 n3 R* n( n5 G
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-14 09:26 , Processed in 0.042192 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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