OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10829|回复: 0
打印 上一主题 下一主题

[未解决] OMAPL138如何在Linux下使用EDMA3驱动

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
' c/ Q/ Q) f5 t& S" v
  1. [code]EDMA sample test application4 z) R* s) w. ^. h& D4 y$ |: {& Y
  2. /*
    5 g8 _$ [5 D& S
  3. * edma_test.c
    * e7 I* Z! r) S3 n5 e$ f
  4. *
    / v( }5 S3 d/ N8 M* C5 f& {2 R& u
  5. * brief  EDMA3 Test Application
    8 b( Z5 q$ u% ^" ?  x' b
  6. *, l' p9 P  B8 V) W  Q  E
  7. *   This file contains EDMA3 Test code.
    % m& t; o  X) j# {
  8. *
    7 a4 y/ o( U4 b
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    + X* |- N: \5 V
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT1 R- ?. T  [4 n* s, \( F
  11. *         TO CHANGE.5 C' u& d/ Q0 A* e8 O
  12. *3 S8 T2 S" b9 X0 V: h; V
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    7 \" n, p  g1 S7 F3 j$ v: i" v* i
  14. *4 N) Q) Y& b/ n% w2 O' u' G
  15. * This program is free software; you can redistribute it and/or4 D. S/ E1 M. s, z
  16. * modify it under the terms of the GNU General Public License as
    & L. y0 S! ]& `/ u' V+ F
  17. * published by the Free Software Foundation version 2.8 S+ Q1 q" y2 L) g+ B
  18. *
    * i* H# @( \+ x' }
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any# x$ O! h. U- o) H& i
  20. * kind, whether express or implied; without even the implied warranty' Y6 Z3 H, K5 l& [# e6 e! t1 b
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    9 `( J' j  [- K# `* b. G6 f
  22. * GNU General Public License for more details.
    ; m' e& B3 J. A! C- x
  23. */
    8 c0 }. n9 E& E+ q/ K' b& Q5 u# `
  24. " v+ @9 B) |5 l- i
  25. #include <linux/module.h>
    , T9 h9 A8 Q% I/ U" J7 u8 a
  26. #include <linux/init.h>0 T9 C' ~; y+ V7 \: J
  27. #include <linux/errno.h>
    4 k/ d# l/ Y0 w( w! y  O% D9 z$ z
  28. #include <linux/types.h>/ B, u$ T: X+ ?4 }3 U$ r0 K5 S
  29. #include <linux/interrupt.h>
    2 g% \; K! B% I: A" A0 }/ H1 }0 U
  30. #include <asm/io.h>
    ; l' I0 a1 e! g8 h, T' x
  31. #include <linux/moduleparam.h>
    # k$ J" q8 f: I: |; e# C8 Z
  32. #include <linux/sysctl.h>6 l# U' |+ V5 S! m* e1 T
  33. #include <linux/mm.h>0 K( M* Y) a2 O& q  ^# W
  34. #include <linux/dma-mapping.h>3 h7 ]" }& }6 g1 e

  35. 6 Q$ y' L1 y% F' b0 C5 ~* s
  36. #include <mach/memory.h>
    & ^1 M$ u- x' H8 s
  37. #include <mach/hardware.h>
    1 k/ d/ D' X9 V; J2 c. m9 a( I
  38. #include <mach/irqs.h>
    7 O+ F! J' S- ^  Y" |( b
  39. #include <asm/hardware/edma.h>+ r/ ?9 m/ b6 k0 C
  40. % K; m' P* H! ?! B4 g5 o' ~
  41. #undef EDMA3_DEBUG+ [7 g, Z4 O8 h' F! n$ x* e! U
  42. /*#define EDMA3_DEBUG*/
    / b; q! I6 T, S4 k5 A
  43. 6 g& |  I" s  d) q! R
  44. #ifdef EDMA3_DEBUG- y% I/ H, s  |5 g
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS), i$ F9 f! x$ S$ W
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)6 l5 m% z; N! e
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ( A6 w# C* _8 d7 S5 s
  48. #else; q  m- D) `) A' p. V( |6 w! N
  49. #define DMA_PRINTK( x... )( F9 t2 n5 I; P, k
  50. #define DMA_FN_IN" o4 G' \+ p' {( Z" Y3 L( X' V
  51. #define DMA_FN_OUT( r6 _6 a( u& v- l7 L9 @) A
  52. #endif
    ' A9 C( m% f- [3 s3 O, d/ B1 k

  53. * p' o; h, ?. B# M8 b( ^* o5 v
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768). I; t4 B( j( [$ R: \
  55. #define STATIC_SHIFT                3
    % |, b  ~" k: z8 R6 O
  56. #define TCINTEN_SHIFT               20% X: d1 k0 m# ]6 f2 ^" p
  57. #define ITCINTEN_SHIFT              21
    9 \3 e+ g* [, N/ v  a+ q% O
  58. #define TCCHEN_SHIFT                22/ I1 [. i' ?1 Q9 a4 z
  59. #define ITCCHEN_SHIFT               23
    % Z3 Q( _  O0 O. `+ X/ {

  60. 7 k/ B4 |) }  ?! a% d2 k
  61. static volatile int irqraised1 = 0;4 F; i9 }" S2 r; L9 a/ R
  62. static volatile int irqraised2 = 0;( S( x% S1 C- s6 p- Y8 H- m

  63. 0 h" f% S7 \# _
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ! c3 z" _, o3 ^& o0 G- Z
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* X" {/ o  e: Z2 I2 q
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ c) i1 V( V' H. O  _- Q0 u

  67. ! [) T+ W  i1 @+ L4 ^
  68. dma_addr_t dmaphyssrc1 = 0;# R. e* C/ V+ w3 e4 X0 E5 v
  69. dma_addr_t dmaphyssrc2 = 0;" c5 V( ]& y: b  T
  70. dma_addr_t dmaphysdest1 = 0;
    6 r/ X2 V/ b$ d; k9 C
  71. dma_addr_t dmaphysdest2 = 0;. h5 `7 ]. N+ h) p1 R
  72. + ^* q( a. ~$ n; d' @
  73. char *dmabufsrc1 = NULL;
    ( `9 P, `2 \7 J; f. @/ }8 V6 u
  74. char *dmabufsrc2 = NULL;
    4 z; S; z! N& D" |2 i# h
  75. char *dmabufdest1 = NULL;
    3 }6 |3 }6 A" x$ p
  76. char *dmabufdest2 = NULL;" Q3 t! d' l( R# C8 E$ c& s1 z7 z

  77. 1 A2 @/ ^: p1 F. g& E: q
  78. static int acnt = 512;
    $ N# w: o; W) i
  79. static int bcnt = 8;0 d+ W1 U$ f: C+ i5 ^- G
  80. static int ccnt = 8;
      @$ n6 l+ ^" g  j0 b; B

  81. ' j2 m' y+ k: C, S
  82. module_param(acnt, int, S_IRUGO);- ]( }5 t/ j4 u" Q5 r
  83. module_param(bcnt, int, S_IRUGO);
    , A% }% U& O5 h
  84. module_param(ccnt, int, S_IRUGO);
复制代码

4 E6 M" U2 a  Q& m* U* l1 R" R/ a1 K( T& E
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用9 L2 a, I- Y3 l. p
arm-none-linux-gnueabi-gcc  -I /home/tl/omapl138/linux-3.3/arch/arm/include -I /home/tl/omapl138/linux-3.3/include  EDMA3test.cpp -o EDMA3这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。1 B6 F* p- N! U4 x( Q
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。' i) `, l( C7 R

& T8 @, N3 P( J* v
9 Q( M1 D# }# ]  `- f, C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-1 16:43 , Processed in 0.038709 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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