OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
5 Z; `; e1 _- a2 l* F% j
  1. [code]EDMA sample test application: V/ g  U& R! m6 f3 [9 X8 t
  2. /*
    . c" }/ U" t4 k6 D. c& @
  3. * edma_test.c
    7 K3 V4 m: g9 V, e7 I
  4. *( R- r  h0 I- V, D
  5. * brief  EDMA3 Test Application
    5 Q; _4 k8 G2 u, J
  6. *
    # E7 q" B# s6 N
  7. *   This file contains EDMA3 Test code.
    ( j8 b* Z% }$ ?* Q9 I4 {/ Q
  8. *: |/ j. k! g, d  V* [/ p
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ) ^  S' N9 P2 `1 w
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT& p: ?! C3 P2 k$ Y
  11. *         TO CHANGE.! k/ b* e- _4 `% m% e% Q
  12. *3 P3 ~5 y6 ]1 h
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
      F  s( f8 S8 j. i  G
  14. *
    : i; N8 \9 q1 k5 ]
  15. * This program is free software; you can redistribute it and/or
      D1 m4 `1 @: Y: o
  16. * modify it under the terms of the GNU General Public License as' _0 e/ E  d9 e4 q+ G6 L- B
  17. * published by the Free Software Foundation version 2.# l) r3 V% W5 e" M8 z& _% n4 |) s
  18. *
    8 Z; Y! _9 c( i. X' h3 ^6 l2 |
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ; C! T- B! r) t, X% {
  20. * kind, whether express or implied; without even the implied warranty
    , s$ D9 n- L; w0 M$ r7 t! [
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the- a3 @, S1 L2 s6 @. T) f6 L
  22. * GNU General Public License for more details.
    3 h8 i' g9 h7 ^' v3 @$ e$ K
  23. */8 J* V5 d; B* \3 v
  24. 7 ^, v  L+ O& B* d; _" ?
  25. #include <linux/module.h>' [( ~8 t5 k4 H0 t& v' p; z
  26. #include <linux/init.h>' b7 H8 u. a, p
  27. #include <linux/errno.h>
    - t9 T! ^$ D0 {$ s: e, ~
  28. #include <linux/types.h>8 \4 h  G) e: m) g5 \
  29. #include <linux/interrupt.h>. J5 k( E" Y3 f
  30. #include <asm/io.h>
    - r. A( y$ M! a' N7 ~+ x& f8 G3 x
  31. #include <linux/moduleparam.h>9 S' u5 Z" L* T; {, [/ x; G
  32. #include <linux/sysctl.h>
    ; b% [6 k: u6 x5 n  t6 z
  33. #include <linux/mm.h>  B, [' a+ `0 Q0 y/ E
  34. #include <linux/dma-mapping.h>6 _" T' l- X, ]

  35. 7 O- ^" P% x6 ~+ V5 m$ q( E
  36. #include <mach/memory.h>
    + ?1 m) v- D3 X
  37. #include <mach/hardware.h>
    + @5 l/ s3 {6 i' F
  38. #include <mach/irqs.h>  d! M+ `9 f: m5 S! D  j/ @+ i% e
  39. #include <asm/hardware/edma.h>
    * Q0 p' x- q2 N" X

  40. 1 r: c4 D, r' [5 }
  41. #undef EDMA3_DEBUG- y* x# \% ~4 N2 V
  42. /*#define EDMA3_DEBUG*/, g1 N% B+ z, k( M( i& A0 o

  43. 0 G7 K4 c+ e$ m
  44. #ifdef EDMA3_DEBUG
    + h5 H% |' @* _9 k+ S( W) t4 f
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    8 z' W8 `( E4 i& Z3 @6 O
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__): p8 R8 ?' P  f& z/ _
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ' m! j& o; n! I6 k1 P; R( y
  48. #else
    ; t" f( k* A  {0 ?. i  S
  49. #define DMA_PRINTK( x... )  c* u0 _; D  g. ]' f' v
  50. #define DMA_FN_IN
    9 Z6 e6 j. k$ d! r$ W$ S0 x" L2 S
  51. #define DMA_FN_OUT
    # j% {) H( A+ e+ O7 {
  52. #endif1 j9 s/ @  g" o8 Q

  53. # h4 m3 j  T' z( p$ [: K  u. h+ C
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)5 {8 |% y* K2 ~# Q- f2 h
  55. #define STATIC_SHIFT                3, Q1 Z- v3 }. C5 Q6 m7 W
  56. #define TCINTEN_SHIFT               20
    3 \6 S& d7 h. d& O, O
  57. #define ITCINTEN_SHIFT              215 S! v+ V, h% ~" J% `# X. R
  58. #define TCCHEN_SHIFT                229 J" E2 q& }. U
  59. #define ITCCHEN_SHIFT               23
    2 ]# ?' h8 Z9 o
  60. ' ?+ ~) g' x, p5 O2 L( i0 c
  61. static volatile int irqraised1 = 0;
    % u1 D) Q2 c3 W6 V; s+ D) l
  62. static volatile int irqraised2 = 0;9 o1 h+ h& s1 q! D8 P1 r4 h
  63. 7 A& D& U9 Z0 e7 y/ ]8 m4 d9 }
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - z  G" N" F' |& _9 X
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. ^( \' ~! d2 m1 C% Q
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 l/ h* c  y; q4 {7 P8 _7 g1 _

  67. 1 }  z7 m& q& A0 Z
  68. dma_addr_t dmaphyssrc1 = 0;
    ( _2 ~. j( D8 n& V
  69. dma_addr_t dmaphyssrc2 = 0;& C( h: Z3 j5 g4 M2 N2 W+ I
  70. dma_addr_t dmaphysdest1 = 0;1 }, O  k5 ~2 ]( w; e/ |
  71. dma_addr_t dmaphysdest2 = 0;6 a4 X3 H: `* q5 l9 I5 t

  72. 6 A, o5 x. Z- j( U- ~
  73. char *dmabufsrc1 = NULL;, N9 _. K0 z1 A. l" f+ z
  74. char *dmabufsrc2 = NULL;
    1 B. B/ r9 B0 ?1 P- N# d; d# A
  75. char *dmabufdest1 = NULL;
    * Z; m5 `$ `5 \4 F
  76. char *dmabufdest2 = NULL;
    # U$ O+ ?/ f3 k& Y, i$ ~

  77. / N2 q* B. b: `+ j" n+ e% a  Z
  78. static int acnt = 512;" c8 A0 ?8 \4 P
  79. static int bcnt = 8;! G/ O2 D) l5 V! F3 O  T+ W
  80. static int ccnt = 8;7 p4 ]. ^& l( r% m4 ~/ m

  81. . D4 w0 x8 E, B
  82. module_param(acnt, int, S_IRUGO);
    + P) [2 F2 [( c" t
  83. module_param(bcnt, int, S_IRUGO);5 `3 K+ t; t' |" n; X
  84. module_param(ccnt, int, S_IRUGO);
复制代码
3 M! M( S$ |( _; C/ f

8 |* [  ^1 R4 l. U& A! S      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用) [4 i% y1 u0 O8 J) T7 d
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。+ q, M3 A& ?7 ?6 i, C
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
4 l3 Y4 }% ~  g' P+ z2 d3 ~8 X, }) w8 L9 m" M3 d% K

- J( l3 p1 S. }, D5 T' u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-17 02:39 , Processed in 0.036953 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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