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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?# c% T6 i5 A! |1 p5 W' u( i1 P5 Z) a
Void UPP_TASK(Void)
; u0 U7 u2 Q5 h) T{
, S* e  `% F/ M  ^/ \- N2 f' q# ?% l% r
    int i,j,k,target_int_count=2;
& s- g  H/ c' @  y8 b5 l) T    char ch[2];
4 R/ E3 i. I3 ]! T: c+ I0 k, X' ?* s5 V9 n0 W" R  I# m. A9 k8 n2 X
% Q, h6 p# g$ D1 o% A5 O5 G

% R, z' U: D- T4 o# ^  d( w    upp_interrupt_count  = 0;
0 x  a6 u! f& y; W" [5 }    upp_error_count = 0;
, `! I5 c7 ?/ x1 p' U5 g/ [' M/ N  {" Y, `5 y9 E2 X
    UARTPuts("\tResetting uPP buffers...\r\n",-2);+ `7 H0 M6 x  D
    // Initialize data buffers
( H! @5 K5 Z: t    for (i = 0; i < upp_frame_size; i++)- B% m  A4 K, O) {6 I% `
    {
1 u; R/ E1 z( g, H" J% R2 m: A# i, @" S       upp_buffer_b =i;
% Z  S' b, N. S' X5 o* p% B/ C       upp_buffer_a = 0xDEAD;# A$ h# B* y" ]5 A8 H1 n8 \
    }
5 a, E8 f1 r; `! [: [$ _' N9 z6 ?/ N0 ^( t# |: f8 ^
    //for(i=0;i<1024;i++), p# T% m% \9 Y
    //    temp=0;
# B" q) |# X1 L2 `& ?
5 d6 L: t" R/ w    //UPPReset();4 ?4 y' r$ z- b4 N2 K/ Q- r7 W6 G
    /*启动UPP DMA传输*/- ?  K, K* n) p- E
    UARTPuts("upp_prog_dma_i\n",-2);
& ~' N3 G5 O# n6 r9 f0 j0 @- G    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;7 V, |5 {. h0 F. p8 V
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
" A) e- Y7 G) ~$ `% P/ f' Z! c3 z# N    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
/ [7 W/ q% `2 d! Z% p
4 ~1 Y& p- [) \+ {    UARTPuts("upp_prog_dma_i\n",-2);
+ _4 Y8 H8 `( [+ s" H    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
1 W. Q0 G& W  A: K9 p    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
' n2 c. `' C3 Q6 F" M    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);; t$ B+ Q% c/ x& N/ E; \- l& ^
! `7 E- y& X# L" ?
    /*等待UPP传输完毕*/' @) T; M5 V0 V
    //i=0;
5 V: T. X& u6 i1 v  Z    //j=0;
  ~: }2 y% L/ ^/ l) a$ |4 L    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
+ S0 X) B5 r3 X3 Y    {
' e& z' ^( p/ ]# f0 g, b% V        /*  测试UPP传输的同时操作普通DDR数据
9 K  O# W7 @/ k0 j% V- H0 S) T' S        temp=i;1 _* O  G! q+ x/ V! @
        i++;
; ~& [  [, d% @3 l+ l4 ?        if(i==1024)/ P! G4 X# {( E
        {# s( z5 X, @' U  r% w$ N6 H* v
            i=0;8 k' ~0 Z4 f/ D$ l- S. D" ]+ j6 q3 n
            j++;7 F( y. |) j1 H- i+ H* K6 b
        }* M9 ?+ h( O$ |4 ]$ f! l
        */
: O: Q$ _1 y$ M. E& S, u; }3 ^9 U1 g) D
       asm(" nop");  y% B5 J7 [! Q. {: P

1 ]6 y1 V% \9 u       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);0 n( q8 e2 p; p, G) s
    }
  u- t' U' @) w6 S9 M( Y. C9 W5 q5 {3 \5 K$ p
    /*检查UPP传输的数据是否正确 (loopback modes only)*/( A: ~% R" S0 X( n: n3 v/ \- t
    //UARTprintf( "i=%d\n",i);
- R$ M3 L5 `* M- B& I1 i; [2 t/ |    //UARTprintf( "j=%d\n",j);* J# t) `2 {0 j2 f4 N* x! R8 `" T
    UARTPuts("Data mismatch in buffers.\n",-2);  I$ Y6 w6 @4 C- x* @! n
    if (upp_interrupt_count == 2 && upp_error_count == 0)
0 D; Q1 P7 q1 l" a+ ~    {4 u- w1 Q& A. w2 Z0 i' N5 |0 E( M+ A" P
        for (i = 0; i<upp_frame_size; i++)
0 X! S- {& P% L! s: ]2 K# k        {
% r3 Y5 |8 u9 w            if (upp_buffer_a != upp_buffer_b)8 w. C( d& `0 }
            {/ s2 X# e0 ^. E8 O
                upp_error_count++;9 X: p/ ~  B: f% e; {) L% z
            }
2 T6 L6 [( F9 _/ _3 W# x; d  U8 u        }) C& b0 S; @& ^9 }
    }
4 v$ G* r/ b% d$ n/ p, x
1 h  |" t1 l, O/ |( \- {% i( ]    /* 报告通信结果*/
: N7 y& ~, j; D2 a    if(upp_error_count != 0)  W  E& Q9 o- _/ b# _; \( g* B* U: b6 O
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
* t- Q9 X, g" S$ K/ C    else; E0 ]1 P3 `: T$ w
        UARTPuts("uPP transfers complete!\n",-2);
7 `9 q- P) b% Y/ E& l4 h1 R: H" T7 i: h
    UARTPuts("Do you want to print all the data?(y/n)   ",-2);# y! |2 B% d8 ?1 ^8 p
    UARTGets(ch,2);
6 Q/ c! H6 Y( G: |, R    UARTPuts("\n", -2);1 O$ ?- Y+ Q! A: A; V" u
' g0 L( x, ]; N' r1 ~7 w% q( p
    if(ch[0] == 'y')" w, ?5 T* D8 ]/ U, |
    {- Y4 i/ C( _; Y) p" x) d. U! l; r
        /*打印全部读到的数据*/
# L* ]  F0 ?- _        for(i=0; i<upp_frame_size; )' d7 A$ R4 |, l
        {* ?% E5 ~4 e' n  ?: X0 s. |
            for(j=0; j<5; j++)+ }4 h- j+ t8 J, e3 Z
            {
7 m! c$ t6 N; w! n( I                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
( l( D; o/ x- S) i( o3 R                i++;0 P, N4 F0 V* r# z& v
                //if(i >= 4096)
9 J5 r$ a: T, s: ^; J* l( ~                //    break;7 v! Z# D6 ?) I8 D! j6 Z
$ W8 q. m) m9 w
            }
" |* ]& F/ z- d+ c' o) ^: z            UARTPuts("\n",-2);
) l) Y( y5 f, Q+ P        }
: X. v" b, F/ X& x  ]" f0 X8 n4 {    }
! n& }/ P9 m0 S9 k% a
* k7 h* c' l% \+ X( a+ `}

; j, V3 S* [6 e* ?! I5 [( [! H

) ^9 ]0 j9 J! ~- T' X/ p" E  N. u9 v1 A& {4 u8 x% t; e4 z9 N7 Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
) K; e. e+ v) k: v0 H  H# j% M. i9 o
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。
/ k6 Q0 [- q: G9 F% _, A# s# \
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-19 10:11 , Processed in 0.045236 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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