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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?% [# s& G; X& O; F
Void UPP_TASK(Void)
, C, l3 D& c0 D- J  Q" @" [{# q. F  }+ n: Q' D

2 y" j3 O% L+ [6 t. r    int i,j,k,target_int_count=2;6 V% O, p& t! E# G! R9 y) B! X
    char ch[2];* Q# Y& b! E2 o2 I; L/ E2 y8 \

* I% }% W9 k$ l5 O4 w& g- c
/ S$ x8 J$ `3 [# \
! N; Q2 m5 H5 Z0 L7 _    upp_interrupt_count  = 0;
, Q+ H1 S1 ?' B! J: ^' {    upp_error_count = 0;$ M# n  d8 T* U0 S  A0 u
1 y  B+ B' A* w7 o9 e- `* y
    UARTPuts("\tResetting uPP buffers...\r\n",-2);" E; t; ]" ~. f  W, Q  q4 S
    // Initialize data buffers
8 Y9 Z0 o) ]& M. `; y! n8 G) s: ^    for (i = 0; i < upp_frame_size; i++)) ~% [9 \) Y# f
    {6 {  a3 U1 Y. S5 {1 r# e
       upp_buffer_b =i;$ @4 \9 T% g, C( `! q
       upp_buffer_a = 0xDEAD;& d% ?1 b5 ]) t7 X# C# c  z* B1 w
    }
3 `% h7 g' J4 _  P7 A# ~  |/ E% h  j1 X$ |0 |
    //for(i=0;i<1024;i++)
# G' _( l& r9 j4 {- C    //    temp=0;" m1 `( _# _* T3 E* _+ y% D0 s" T

: q5 n( E' z0 f1 W) J    //UPPReset();
4 T& z8 x0 t2 s3 H7 M3 {( _, v. H    /*启动UPP DMA传输*/( c, f) c" X8 t0 X* E
    UARTPuts("upp_prog_dma_i\n",-2);
0 Y" T8 u; u/ S( x# ^    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
; ?% w7 o- d8 d    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
# }; j$ _0 R% P: H$ P8 o    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);2 c% f+ p# F" v8 W, L$ Y+ U8 F7 M

  B/ d+ o) b- C3 w    UARTPuts("upp_prog_dma_i\n",-2);4 B  z1 X2 E/ m& m0 Q
    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
6 K9 S+ a  D! I, K2 u    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);; ^$ k! d8 _5 e! p% R
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);/ |1 {, Y5 B2 O/ S, S
+ J2 B' i4 L5 T$ S1 n! l6 a! n
    /*等待UPP传输完毕*/
- ~) I: O  a% \) U3 J2 ]    //i=0;
$ l3 S9 k$ v2 |: y  v) p: U  g    //j=0;
  s( x: M& J5 W, L2 t    while (upp_interrupt_count < target_int_count && upp_error_count == 0)( j' ^3 U8 `& ?, s2 a7 F
    {, C/ r# z9 {. q5 b5 R3 E
        /*  测试UPP传输的同时操作普通DDR数据& `+ F; b% ]2 d0 D+ a. T
        temp=i;
1 |0 d* `% w3 C5 }# p; c        i++;1 ^8 i& k9 f  F- U' m( W! C0 H
        if(i==1024)
0 I( |* ~& b* M) w( b" w        {/ W, H; z! [0 @  `& e
            i=0;
& ~1 _/ H9 W, L/ D$ z* I& C            j++;. U- @3 B' M$ e$ Q7 `$ h3 a6 D
        }: G( G5 {! Q3 h5 W5 I9 n( q
        */  A; i$ ^9 G% a4 p( z0 o0 `

& g/ t; n: G% l6 j! M' c- I       asm(" nop");
. z% Z- H# T2 k" u5 _4 g$ K/ n6 I- w7 s8 G3 m
       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);
7 E0 `+ w* n* _" B0 u    }
( }$ W, g( d2 j1 t+ Y4 C0 y3 x2 u4 g0 S
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
! a7 |: h, x" A; d# M+ W6 @8 ?: r    //UARTprintf( "i=%d\n",i);
+ Z9 M: D0 O" M& S: E    //UARTprintf( "j=%d\n",j);
5 e/ u4 y; P8 J: N+ V& c    UARTPuts("Data mismatch in buffers.\n",-2);5 ]7 F2 L& D3 G$ J$ _
    if (upp_interrupt_count == 2 && upp_error_count == 0)
7 X8 g! I. E! Z    {
: K6 w( H1 U- z7 m% C4 D        for (i = 0; i<upp_frame_size; i++)6 `! X; i$ d, Q3 |8 G, ]! a
        {: [! t; l2 n/ u
            if (upp_buffer_a != upp_buffer_b)& L5 J/ a8 ]) l9 _: A# R
            {
) t' m/ |- P5 d, \) Z  X' V: {3 L                upp_error_count++;4 y3 Y5 h, R8 x2 M6 t' ^7 K$ _
            }
: a  u; r. k& r/ g. T% B        }
, T6 |  L1 T# n: W; l    }
* g4 `8 V% ~3 R5 x/ C; s7 K' u8 R* j* a# S7 P+ [; E4 J
    /* 报告通信结果*/% l9 N1 |4 n- p; X6 d6 `5 r: v
    if(upp_error_count != 0); S8 u& ]( @, [, {0 [/ @& ?
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
" Q, U+ x8 Q6 p, f! _3 O2 d9 s2 i    else
) P* ^* k4 N2 a! b! `: k        UARTPuts("uPP transfers complete!\n",-2);/ m7 |/ ^5 ?4 C/ Q8 q1 |) A

. j! @1 K/ E3 n0 Q; L    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
! B# B) Z% a. [! W$ g    UARTGets(ch,2);- a# S8 h8 U& S6 T: ]) U
    UARTPuts("\n", -2);
' F& M# O" f- [5 J8 T1 v% D: ~2 w5 m8 w  F3 I5 r
    if(ch[0] == 'y')& k( P- d3 ?8 W! v3 s
    {
# f& p7 z( R6 r! V- `" u& L( ?        /*打印全部读到的数据*/& ?1 J2 L4 a- T7 ~# `
        for(i=0; i<upp_frame_size; )
- [( ^! U9 A: i; j( h3 a% @  e        {; P% O' c4 Q3 N& {# C1 i
            for(j=0; j<5; j++)
9 v5 K: O' u5 i            {
5 L3 M! z/ I' K0 b                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);
9 X7 I5 b; }) ]. H6 \) J# f                i++;* p% s* R2 ^. N' D9 N7 F8 ?
                //if(i >= 4096)
' B, r% |5 p% Y) ?5 E; y                //    break;: p9 N; Z) R3 m# B* H* {

8 j- M; ^- c0 K% O% _& ?            }
3 [# e6 L/ R$ a            UARTPuts("\n",-2);
5 i" [: x* v# u. F- H0 E9 k        }
- x) T, C0 @, J4 x  z    }
% {/ k& q+ [0 |  W3 _* o; g" U
* j' {0 o5 J3 e; r: o}
4 W/ T$ C2 `8 Q, w

  m! g  w4 u4 t3 N) [% A3 G* H* g/ a1 {0 ?1 F. U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。
% k8 \. W& y/ {1 B! S
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。& R! k3 X& m0 [0 y# x7 Q( |8 J
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-10 19:27 , Processed in 0.040389 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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