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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
  ^" w7 k+ w1 `# N' D% j3 T
Void UPP_TASK(Void)3 a) F: r/ N, z5 K% P4 O3 m9 R2 l
{
8 G" x* P! ^# q$ C# l+ v' Z! u
0 I' \  _  f- b. t  h9 Z+ k# K    int i,j,k,target_int_count=2;2 T! Z; {, T# X1 m0 J; I  F
    char ch[2];- ^. X3 W7 z; ?' i* E2 n3 |4 K
- t$ y3 `5 ^% v5 b, i$ z8 `
: v* P1 M, J+ [+ D2 w

- V+ Q+ W3 H7 K7 p    upp_interrupt_count  = 0;
1 E" |" V( U' J+ U    upp_error_count = 0;3 S* F3 w7 q, r* `. c, I2 ^
+ `  q: e# R1 {5 o
    UARTPuts("\tResetting uPP buffers...\r\n",-2);
9 k8 q  g: g0 n7 I) F) Q    // Initialize data buffers
0 |8 {( `3 \& \% I7 ^    for (i = 0; i < upp_frame_size; i++)
1 B& m; u2 F5 U+ h; h# z    {
- l: D% x4 j. j  y& H       upp_buffer_b =i;
. v+ X6 q9 l6 Y8 i5 z" A% r. V       upp_buffer_a = 0xDEAD;; i. V! i6 J* n% x, |4 k
    }
) y) n' d) U- N+ ^. C& Y. `- V5 U) i
    //for(i=0;i<1024;i++)7 {4 l6 O8 o0 V: g0 J- z
    //    temp=0;
9 y% [8 T& M9 |. Q- @8 o3 \, b6 E7 l+ l- x5 g
    //UPPReset();: H+ ]& E+ A4 ^0 V7 u3 l
    /*启动UPP DMA传输*/) x( e: Y5 g0 a0 I2 p. g* K) @
    UARTPuts("upp_prog_dma_i\n",-2);! f" A# m# {  m1 m7 [- }! b+ O9 A
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;/ v2 D+ Z( E! n* a( K# V! Z0 O
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
9 C: e- e5 J3 O    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);4 e* n' \$ S& {; F6 o5 [  u

/ n1 ?+ w4 U' \% {* }* M$ ?    UARTPuts("upp_prog_dma_i\n",-2);
( D$ U+ D; ^7 F7 O8 K    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;0 c1 y6 i0 A4 Y5 o
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);( P3 g+ \% B+ l$ i1 S7 Z
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);' y' ]) A. M7 z" y. X) q
5 |2 s6 L( K& n8 X% C4 D9 s4 |
    /*等待UPP传输完毕*/
& i5 `: J# |7 d4 T    //i=0;
2 X3 Z( c% Q7 V7 L/ F0 {    //j=0;
/ r3 X1 t0 n" q: v' _    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
$ U5 @; B1 w8 ]0 k    {. X* Z( G# K# {" ]! g; Y6 k
        /*  测试UPP传输的同时操作普通DDR数据
' k7 ~$ o, r. ~% `. L" U  S7 |3 C        temp=i;7 r& S1 [6 o7 F1 p0 S# V0 }
        i++;
5 {' [& h( U; |. \7 e$ K6 G' P        if(i==1024)
; Y( [) L& d, m5 p) E        {
! L! W1 \" t. {; M9 y6 b. _. a            i=0;; A) Q2 y$ X& R: ?
            j++;
9 m3 G/ ?  f1 R! A/ n: y        }5 {7 C: f, E) |7 K6 h
        */
. ^% \4 e* P6 a* ?; ^8 `& D
% D4 ?$ X6 C0 y       asm(" nop");
4 U+ _5 B6 p! K4 H( `- K0 s9 I5 p7 b2 i1 o. x; X
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);; o# L7 T  `$ g
    }# L, I% ]) K/ p8 r' x
1 ^/ w* q; }; t2 u) v; `
    /*检查UPP传输的数据是否正确 (loopback modes only)*/( Z; @2 t: B% c$ V9 C  p' u
    //UARTprintf( "i=%d\n",i);
4 Q6 @+ {) @! A/ Q: ?    //UARTprintf( "j=%d\n",j);6 e) M1 N! e+ A$ Q& q( _% m6 z
    UARTPuts("Data mismatch in buffers.\n",-2);
# z( X( h- c" I5 [    if (upp_interrupt_count == 2 && upp_error_count == 0)2 _  ]1 u' G' u
    {
. P  @8 R) d* @8 }2 v" m        for (i = 0; i<upp_frame_size; i++)9 u, s6 E! e6 ~; a- n
        {: q: J, `9 [3 b. y! M: i- a+ R
            if (upp_buffer_a != upp_buffer_b)
% i# O7 T6 e" O2 p  S0 a            {
2 \. U- F: ?  Q! S. H/ v1 S                upp_error_count++;$ I! `. q( K  L) o; ?
            }& B' f3 S# L. J8 \* e; R
        }0 ~% }  L. Y" w: F0 ]' E
    }: M/ A+ R9 t" a8 S
5 A/ Z; ?0 K0 i9 Y' Y
    /* 报告通信结果*/
# b# B8 B, m3 N7 u$ `2 G- K( c    if(upp_error_count != 0)
  x7 W3 B& Y$ d        UARTprintf( "upp_error_count=%d\n",upp_error_count);
( O; L' r+ X2 d9 K4 y% ?    else& g! P! w* y5 q: @2 G! g
        UARTPuts("uPP transfers complete!\n",-2);
4 o# ?5 q' |  \2 j! Y  Z4 _6 j+ H$ i+ |6 s! Q: G- A4 f. T3 S
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);: j% u0 s9 W* \" o, c6 b' |0 t, {& S
    UARTGets(ch,2);# b- a( W' _2 g# [& G% p) S
    UARTPuts("\n", -2);
; ~9 d( _  f" h9 D7 E; B% l/ _7 A+ N7 F
* d' X: O5 W  p  J- m    if(ch[0] == 'y')' b- Z8 J+ Q& {8 i! E$ G
    {
: o0 r' k0 ?6 {9 n/ ]8 W        /*打印全部读到的数据*/
# h& S6 E4 s& x( L3 o/ Z        for(i=0; i<upp_frame_size; )
# e3 |% V# S1 l9 `6 Y        {1 J$ S3 k$ K* s( f4 w. ]2 i
            for(j=0; j<5; j++)
, v% X5 H& T4 C5 k5 a  @            {% m1 `' }; R& `* W  _/ h
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);# P4 q1 C+ Y7 H7 Q! k
                i++;' W% S& Z; x. C6 w1 f" Y
                //if(i >= 4096)) T/ o: g0 l, t& _/ F* p  O" n5 I
                //    break;- U( U5 n" G" Y% `) O; W
9 c0 g% C# z6 B% }
            }# I  p$ U% U! U% h
            UARTPuts("\n",-2);, m. _# ~' a( y; J# X1 D2 F* n
        }1 h( ~. @+ X+ j. J# l( f% w
    }
  {$ Q7 A4 Q. V2 L/ h, X8 r
# ^; U; E) B8 c; |  }: U}
8 C1 l( b! i7 p
, [2 w/ C  O% ?" e: L# e

! d7 d5 l$ n& b. p) b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。$ P7 y2 x" t6 O+ D
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-7 20:03 , Processed in 0.044155 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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