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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
跳转到指定楼层
楼主
发表于 2014-12-22 14:35:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面的任务,只能在第一次执行UPP时成功,后面的均不成功,请创龙工程师看看为什么?6 M$ ^3 _1 b, j( ]. v$ i8 `
Void UPP_TASK(Void)
" _1 h# {7 d7 S, K$ a3 e3 z; W( u. l5 A{
6 A) y9 Z; m. j3 ~+ G0 h2 c* N# o: ~/ S7 x6 d  \; _4 f! ?6 M0 I
    int i,j,k,target_int_count=2;
/ l" }. F9 m- X, H# t# {8 }5 U- `; B    char ch[2];  [) U  N6 W" W' {3 j# N/ e

$ C  j3 h7 O: u& }1 w) ~" Q# y7 |8 e; S+ |4 J; S" L# b: U
: q' X+ N3 x' U
    upp_interrupt_count  = 0;
: E5 X0 P( H& {  M6 Y    upp_error_count = 0;. }3 I. w( H5 v* i- `2 h0 v

! F  o8 A8 o6 T# [  w0 k$ q8 T! j, Q    UARTPuts("\tResetting uPP buffers...\r\n",-2);
" N8 Z- s6 X2 t/ Q    // Initialize data buffers
1 P$ e$ s9 \8 A: e    for (i = 0; i < upp_frame_size; i++): `6 X6 {4 H2 t! K& ?
    {
: Q& m3 ~, c1 y! Y, s       upp_buffer_b =i;
: B( M- o3 l7 l( w3 l# r2 f! ]- P3 @       upp_buffer_a = 0xDEAD;
) R8 Y% }$ j, J8 K; G, B1 q    }" J6 W1 Y# W+ F  p' w  z4 n" F6 f

1 e1 {* ?8 Q. c2 }    //for(i=0;i<1024;i++)
" ?0 k+ U5 g- n7 v, P    //    temp=0;: n; @6 E5 I( w2 J
* j+ Z* @8 u8 t$ r1 v* L
    //UPPReset();
, i/ F0 {  W! e( W, i. ?; {    /*启动UPP DMA传输*/  A/ Q1 |( A! B' `8 [
    UARTPuts("upp_prog_dma_i\n",-2);+ Y0 J/ R( ?4 N& v/ w4 a( E  ~' y
    upp_reg_hdl->UPID0 = (Uint32)upp_buffer_a;
" b5 W+ O( ~" G    upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);
$ p0 t" J. h% q    upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(Int16);6 }9 z9 z# B4 D! H/ e

5 a5 ]5 z2 ~) P) o: b' a: J  z1 z; [    UARTPuts("upp_prog_dma_i\n",-2);
! Q& |- B6 |1 }    upp_reg_hdl->UPQD0 = (Uint32)upp_buffer_b;
% N; V0 d. E8 Z& j* O8 U; C    upp_reg_hdl->UPQD1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(Int16);5 A4 M2 ~. t- y# l; @
    upp_reg_hdl->UPQD2 = (Uint32)upp_line_offset*sizeof(Int16);
0 O# }! _& p% T9 t' V' q/ }  S7 `
( j, N# K+ H1 r6 z    /*等待UPP传输完毕*/6 R: c# K$ `, \* p5 E
    //i=0;
  o6 ?0 t/ `2 V+ o2 A( G, V    //j=0;
5 v( s# c# D* x1 N! H/ w    while (upp_interrupt_count < target_int_count && upp_error_count == 0)
% c1 X- T" [9 j/ `    {
* b) }+ h. e! ^( j# h' m; R        /*  测试UPP传输的同时操作普通DDR数据
" ^0 [# L; r# c& M! @4 I5 z" E        temp=i;7 w& ^) B/ g: {7 L- N% b2 o
        i++;
" H3 d/ m+ `  Q# O        if(i==1024)" Q3 u5 j; [4 m/ V% w( Q8 y
        {# T5 k' @; v% p7 t/ y1 c
            i=0;, F# }* y( u, w( e: e
            j++;
+ @1 l# e3 e0 v: w        }
0 m, M9 a5 s6 i$ ~! b        */
$ o* t+ E% l/ X& d% o7 a
  X  j+ X  Y1 h: W# ^+ T. R       asm(" nop");
3 l$ W4 y; [; S6 e% I) T
& v) a+ `9 b! I& o* k& M, {9 x       //UARTprintf( "upp_interrupt_count=%d\n",upp_interrupt_count);) _7 G# t7 F1 a: j; ]  Q/ F
    }& R1 C4 _& D* F% u
- \% m& U/ u# h* Y8 ]. Z
    /*检查UPP传输的数据是否正确 (loopback modes only)*/
# g0 {3 V; z$ H" C+ G+ s    //UARTprintf( "i=%d\n",i);
# v0 z2 ^* c/ d- V    //UARTprintf( "j=%d\n",j);% I& D# @: h/ x9 ?3 p2 p
    UARTPuts("Data mismatch in buffers.\n",-2);( f+ S: N5 ~) o1 j7 I, J2 `3 v
    if (upp_interrupt_count == 2 && upp_error_count == 0): S+ s% I% ]& j4 x" v# {
    {+ o) _6 F$ m- o' y$ D* q' R
        for (i = 0; i<upp_frame_size; i++)% b8 I; Y) S4 u0 q/ u( k0 V
        {2 f/ [4 _7 y+ I6 Y# D
            if (upp_buffer_a != upp_buffer_b)
" h# o6 E" x9 Y            {  o% y2 a( k  M, I& n
                upp_error_count++;
- o  A2 {2 o. {5 n' K            }
. f1 C, V+ g9 a" G4 h9 L        }5 t4 b4 ^) g8 ?% _
    }# I# X8 e& E! E0 j# p2 E1 v
. g8 o) S7 g$ ~
    /* 报告通信结果*/
7 A) `6 H3 P$ r  _    if(upp_error_count != 0)* B% M( E+ Z& B/ ?
        UARTprintf( "upp_error_count=%d\n",upp_error_count);
& q' Y, @0 M; e  }    else6 L5 [6 u8 l# {$ N7 Q. n. s
        UARTPuts("uPP transfers complete!\n",-2);7 E0 w1 r+ ~0 r6 C. `1 f, g

9 h# X# {! W) K/ Y' B; s2 \8 O4 W5 `    UARTPuts("Do you want to print all the data?(y/n)   ",-2);
/ G0 k6 B/ B. e  G( J4 {! v    UARTGets(ch,2);) o( f3 h: x- `) W( e, C
    UARTPuts("\n", -2);
1 b( p7 S3 K/ ]) w) V
, ~4 {3 Y5 w  `5 W+ J0 h4 t    if(ch[0] == 'y')# B9 W- N% \' ?1 G# N% ]
    {
- O, K6 ^( w* k5 P) B2 o6 O        /*打印全部读到的数据*/
0 w8 f% s- i3 @5 c; I# H        for(i=0; i<upp_frame_size; )( N* O1 L! R7 L" z7 O; c5 y
        {
" p. v7 n, C; L9 `' t, C2 _7 L            for(j=0; j<5; j++)
/ v# o+ \% U; j9 T* N% m2 U3 Q            {4 @. v6 g3 J) W5 n3 H# |
                UARTprintf("upp_buffer_a[%d]=%d   ",i,upp_buffer_a);1 L: ~% ]# J9 T% |
                i++;/ L3 T: R& @  v' g/ \
                //if(i >= 4096)6 @0 Q. Q: e7 t2 e0 @4 F, I
                //    break;
+ U, @; s4 y) Y) K8 v5 g. G) I# k7 S" V: Y" g6 ]4 ~
            }+ b/ j6 q0 `8 j# o& ?
            UARTPuts("\n",-2);
2 M2 ?( B2 [5 E) f) g9 C; ^9 y  `8 w# W        }
+ z. ~4 B8 ?% V2 I; b7 a4 O" [! v    }
1 X( E$ X' W' U8 m$ I: W, C" C
7 f; p  w' _' s) C' R6 }}
9 E" ^5 \! W) [" S, o

5 s  |! u* g, k  u: H/ Z$ B* t9 U; c) h6 ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

19

主题

74

帖子

253

积分

中级会员

Rank: 3Rank: 3

积分
253
沙发
 楼主| 发表于 2014-12-22 16:08:56 | 只看该作者
追加说明:任务是空闲任务,因此没有做循环。" _/ B  G+ q2 O% U* ~
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
板凳
发表于 2014-12-24 18:06:21 | 只看该作者
多次执行是没问题的,最好不要用空闲任务,优先级太低。! l' N( e# K/ d9 `# o
回复 支持 反对

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-11 17:17 , Processed in 0.042531 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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