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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?
+ G1 `- ]% s" v) W7 ~$ c7 b
Void UPP_TASK(Void). B4 C8 r+ C- C9 @& U, m, C
{# \5 |; E. V7 q! @& ~! m  q

9 h0 [; Y& e& E    int i,j,k,target_int_count=2;
" h! l1 |+ P0 v, P5 C/ N    char ch[2];
* U( i+ [! G, c' M, _. F! c2 `  h; N& i; R, u" }# B# K
5 y) _7 J* ]) Z6 t2 G
8 S# h6 r' C# ^# S6 C% I4 |
    upp_interrupt_count  = 0;. R' M) g! q/ r2 n% U$ o) ^
    upp_error_count = 0;& c7 Y2 S" s( u! u8 J
2 w( ]: N/ u: r$ R7 ]- ]8 t0 t
    UARTPuts("\tResetting uPP buffers...\r\n",-2);9 q7 t5 R! p2 S
    // Initialize data buffers+ w' o- n. m: O
    for (i = 0; i < upp_frame_size; i++)
2 |- r1 O  z4 Z1 Y% v- K    {
$ i, o3 Q: @" g       upp_buffer_b =i;
0 \( D0 _* ~9 K6 ~8 M* C/ s       upp_buffer_a = 0xDEAD;
8 B: g6 J: H$ O( O8 V    }8 I3 p5 h' E$ g9 D+ o( }6 e$ j

$ W" m* M' H- J- i% H) ~2 Q    //for(i=0;i<1024;i++)
2 N! G& [& m2 L4 f1 ~    //    temp=0;: }% U& I. M. t6 ^0 p' Q+ _
6 U$ d# A. d9 p- y/ d
    //UPPReset();
6 r1 g6 K$ [/ z! n- @" M    /*启动UPP DMA传输*/
) l/ D4 c7 W5 g0 z& N    UARTPuts("upp_prog_dma_i\n",-2);
2 u7 s: T2 k) F4 ]& T8 Q* d    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;& [* z' @2 W+ o; w9 X8 O( {9 v' I" {
    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);9 L- P( E, a+ v9 z
    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);
2 k* H( e# ?) y$ z
6 O5 I0 F0 e( N    UARTPuts("upp_prog_dma_i\n",-2);
; B) K* n: p4 j7 f+ @    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;6 k0 i& K+ U2 }- L
    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
# D* R# f6 A& d8 v( M    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);( T; w5 o! @6 V8 q  G- V
, a7 V8 \  s( F# [; ?
    /*等待UPP传输完毕*/
$ x9 G3 J* m# {6 i' i- a# b: X    //i=0;
- }3 W5 X  U- p    //j=0;/ l: n' R& S4 P% Y4 O  x
    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
1 O+ e# ~' S9 s& j9 x) T. I" i    {
+ m- e2 N4 g0 R: G8 b3 z        /*  测试UPP传输的同时操作普通DDR数据  Z2 h( Z' @7 _% @+ _5 |
        temp=i;0 ^& A: l9 d5 M- @; k
        i++;
7 y/ A* J' k: x! o9 k4 f: N        if(i==1024)
6 S* W1 U0 h" o8 J! T  p8 a        {
+ B0 k. Y7 I8 u6 s3 v; g            i=0;7 G( }: s) h# s$ o7 K% G+ h
            j++;7 C8 x4 A. {9 ?
        }
. O5 |4 [7 {8 Y3 ~* t& \        */9 o( z& k3 p* j. p- ]- |: t: o

- T9 v8 N  n* S3 G: Z' d       asm(" nop");
9 t$ ^9 k# y% u2 A7 E& X
+ g; F6 m& R$ g5 z' B       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
; s) c% o/ g' H8 S' f- L    }
) {) ~& E' y% P9 l& m% k  I2 o; e/ G) I) J# N8 Z9 i/ I
    /*检查UPP传输的数据是否正确 (loopback modes only)*// ?/ g2 e( H* r( [- t) l& d4 v
    //UARTprintf( "i=%d\n",i);1 X6 T$ q* X" C6 p
    //UARTprintf( "j=%d\n",j);
' x! J6 L+ r+ w, J9 w3 C    UARTPuts("Data mismatch in buffers.\n",-2);' q6 W5 J5 K$ j% Y
    if (upp_interrupt_count == 2 && upp_error_count == 0)( B; F: x# l, s* S; ]
    {
1 |7 @' @' G  F7 ]2 X3 e        for (i = 0; i<upp_frame_size; i++)
  L4 |- g1 [' [( S5 e        {: M; {6 m4 ], Y4 O' O( w% P( G
            if (upp_buffer_a != upp_buffer_b)1 q, ?3 f- g, H
            {
5 N) Z1 @* I) t: |; i                upp_error_count++;
! ^* W1 S- ?0 D1 S8 d& L            }( H% ?& x# d5 R2 z2 j! O
        }+ V9 L+ [* \1 @* O, P$ m* ]
    }/ \" P) Y1 G/ A9 r& o6 t

3 Y0 u: c$ y0 R; s; z! S6 e( Y    /* 报告通信结果*/% C$ r- p' ~, H( ~
    if(upp_error_count != 0)* h% h+ z4 i0 c2 `8 ]: w
        UARTprintf( "upp_error_count=%d\n",upp_error_count);9 U: ?5 J  q% x1 q0 a2 o
    else2 Z  P# z' C. R, R
        UARTPuts("uPP transfers complete!\n",-2);
& I. N* A) Y* i: I4 v/ K
( g: \0 B  ?& G) H$ [- j) L8 M    UARTPuts("Do you want to print all the data?(y/n)   ",-2);$ t; F7 N: X( e; l) D% K
    UARTGets(ch,2);- U- L' M3 N5 [" M
    UARTPuts("\n", -2);
# o, A' }! S, N. j$ y- {8 b$ g5 C
    if(ch[0] == 'y')
9 _8 R" S) o, D0 H    {: X) `' q5 B( U% N1 H0 U7 D
        /*打印全部读到的数据*/, F' Q( R- d5 p5 f0 ]. }3 |
        for(i=0; i<upp_frame_size; )
2 s/ k$ F4 a6 {/ S) k8 k        {, [) h/ _( q. g
            for(j=0; j<5; j++)
- ^1 V+ Q; `% A& v0 Y' m            {
8 i$ L+ g# E6 q, {) `                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
% R/ U# G* z0 y( e6 e$ V. T* f                i++;$ e5 C) P. A. x, t
                //if(i >= 4096)4 M- e/ J( Y2 n% ?- W4 Q6 Q0 N' y
                //    break;
3 w6 h2 H2 c: a6 h' ~+ N( L' E% ~
            }
; D% i; {9 x/ h( e            UARTPuts("\n",-2);4 C! P2 M4 d& ^2 o. c* y  v
        }
% l- h! v0 j4 ^# k: }5 K) m# d    }1 O7 ^4 a8 D$ j
/ ~, `( e$ Y7 z0 m, w7 x4 y, r
}
( @) a4 J8 _5 w; p! V

2 u# a: `- ~- F+ N3 V+ {2 y2 C7 V# v0 h- l  g4 O: ^& k% @8 U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。2 p5 n& S/ K: t: ~) ~$ v
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-22 05:54 , Processed in 0.038621 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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