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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 " G7 H8 b0 A' b* U
  1. [code]EDMA sample test application
    6 ?9 `& @& X0 H
  2. /*7 [9 B+ U3 N% `8 v, H! f
  3. * edma_test.c* f9 w- I4 t$ y
  4. *
    ! r% k: O7 W& {; ]
  5. * brief  EDMA3 Test Application: A2 h! }  d  e- R8 @+ Z
  6. *" i, E# j, I6 D- Q- V
  7. *   This file contains EDMA3 Test code.1 j* T5 ?, R5 x/ t0 Z# w
  8. *
    # t: [; K! `1 j% H
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE% j0 O5 K$ Q- Y
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT# D: ^3 M2 d* H' y1 Z. U  _# h' {. t( b
  11. *         TO CHANGE.$ s. l' G$ d* L! C0 Q
  12. *2 ~! Z) U  ?4 Y- k
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    / M5 @* b& m0 J+ u
  14. *
    ) p5 F; s" Y( @& b, u& P
  15. * This program is free software; you can redistribute it and/or
    + f: ~/ x, a) l- L5 o; Q+ a4 c
  16. * modify it under the terms of the GNU General Public License as
    7 v/ _9 s2 n) }# z; S3 X6 ]6 L8 ~
  17. * published by the Free Software Foundation version 2.! V9 b+ _% o. q1 l: i' q/ c0 g: v
  18. *# D& S; [& I  d; t8 n
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    . t) ~4 \0 I7 p" y+ |
  20. * kind, whether express or implied; without even the implied warranty$ c' D& N* l9 {; [$ H
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1 `/ a8 V5 }+ M8 [, A6 C% M8 _4 f
  22. * GNU General Public License for more details.
    & @# ]- L; ^( ~: X3 @; i0 }/ u" C/ Y
  23. */
    : f) \1 [" K) Y8 U5 @
  24. 8 k# d6 ^# H$ Z' b& m
  25. #include <linux/module.h>0 D; o. t- @& V/ d( [5 P
  26. #include <linux/init.h>
    4 a8 K7 x) y1 A# c
  27. #include <linux/errno.h>7 t6 j2 J6 j. `  E1 Q2 y
  28. #include <linux/types.h>
    / \2 T$ y. I" B8 F/ L
  29. #include <linux/interrupt.h>
    5 V8 k/ k2 Y3 m) F2 x- y8 E, u# R
  30. #include <asm/io.h>0 C: h& |) P2 ^6 J  c
  31. #include <linux/moduleparam.h>7 P: D) v0 |. n/ q, m) a- f4 R' i) P
  32. #include <linux/sysctl.h>
    / z' \9 q& I1 N2 u0 g) {5 y$ |. W
  33. #include <linux/mm.h>, L, w6 F# T4 [! E
  34. #include <linux/dma-mapping.h>
    # u2 k/ C4 O" ?  Z) s( }3 O+ n0 X

  35. . \4 [$ M2 i- c- V7 ^" z: A# Q
  36. #include <mach/memory.h>
    5 J  F8 e6 O- W0 p4 E' y) K
  37. #include <mach/hardware.h>. O8 I7 x: k  a8 h$ P$ S, C8 P! _; b
  38. #include <mach/irqs.h>0 T& O" _/ j2 D: {- e
  39. #include <asm/hardware/edma.h>& S! l, o1 T6 A' C" O2 d
  40. ( J) H0 p; h; o1 j5 ?( @# G6 _
  41. #undef EDMA3_DEBUG" N- a4 W7 R2 y* S  W* o/ A
  42. /*#define EDMA3_DEBUG*/
    . g) i& k  f6 N8 ?( l# g
  43. ) y+ u8 J  s' Q' q; b
  44. #ifdef EDMA3_DEBUG& A7 m$ y( L3 k! ?9 F% X
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS). k% C0 j+ |$ e' n
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)7 g2 v: \: G! O! H
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    5 @9 K" H  b8 ]
  48. #else7 ?* |- B9 I2 T# i! a
  49. #define DMA_PRINTK( x... )
    # o' O3 J, R, d& V, q$ [
  50. #define DMA_FN_IN
    7 }/ V2 _" f8 Z" ]2 H8 ^
  51. #define DMA_FN_OUT
    ) G6 g" l' t  \  ?! s; V
  52. #endif" x3 G, j. i2 O& I2 Y% A( U
  53. 5 h& o* L" d( u- s) E
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    7 z" r! |( K& P5 ~, V4 M8 Y
  55. #define STATIC_SHIFT                3
    # n# ]0 Y3 v5 g' F9 L- R; n, d+ ?  X
  56. #define TCINTEN_SHIFT               203 l3 I; b0 |8 C
  57. #define ITCINTEN_SHIFT              21/ @+ q$ f6 @% I8 _. I( N8 x
  58. #define TCCHEN_SHIFT                22* L$ `# c9 A- A- {, y/ e# g2 M, I
  59. #define ITCCHEN_SHIFT               23
    : l, i- r' ~: A- L9 J' ?/ s0 C  c/ y
  60. 8 B2 L. ]& l: r! }3 i
  61. static volatile int irqraised1 = 0;
    2 c" }1 e$ A. [" H/ T; k+ ?( m3 i& W
  62. static volatile int irqraised2 = 0;
    * K$ ^9 }# Y8 v% o3 @$ y& H3 `

  63. 1 }, u3 t) W0 ^$ q; |; Y8 l2 X: t
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' @6 C% b  Y; S! o2 t
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 Y' H6 K2 z) q  b: i- A" z7 x3 D0 V
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    + l  }% l# i$ ~

  67. : K! m5 \; G+ K
  68. dma_addr_t dmaphyssrc1 = 0;
    ! r2 o  H. J  o0 A
  69. dma_addr_t dmaphyssrc2 = 0;; W3 i0 ]6 l' @+ j" F' R
  70. dma_addr_t dmaphysdest1 = 0;
    $ {9 A6 F# p  f; v$ s. W0 E
  71. dma_addr_t dmaphysdest2 = 0;
    ) J. H9 v4 t- y: b6 K

  72. ! d# u) i0 k2 G* G, u1 ~; b
  73. char *dmabufsrc1 = NULL;
    7 v6 W* M- H; w+ C7 a
  74. char *dmabufsrc2 = NULL;
    ' r# j/ [, J% L4 ^  v) T8 n* l0 G( b
  75. char *dmabufdest1 = NULL;
    ! K; ?3 z' x3 X# G% z, L3 P
  76. char *dmabufdest2 = NULL;
    * y1 J1 Z' X' l7 z6 T

  77. ) h& R3 i) ~4 N7 \; @. u
  78. static int acnt = 512;
    5 z3 c% k9 V3 H0 S5 q9 n$ N
  79. static int bcnt = 8;
    6 u: _5 X* `3 k' }* G* y5 b5 |1 @! p
  80. static int ccnt = 8;8 {' a* C+ w, [+ w: b
  81. # i+ q# D* U: b9 [
  82. module_param(acnt, int, S_IRUGO);
    ( D8 d0 s9 f, B: n( z+ o+ I
  83. module_param(bcnt, int, S_IRUGO);+ `- H2 c: u+ A
  84. module_param(ccnt, int, S_IRUGO);
复制代码
1 O* N% n& G2 a( Q
0 Q8 ]0 e+ d+ {3 V
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用+ U3 e0 y5 y; P2 Z5 u
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
2 \6 N/ r' j& V& u     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
, C0 m& b% q2 y, s! r$ l3 E* V; c8 f8 R5 H0 ]

! E; [1 [5 b: j) j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-15 04:54 , Processed in 0.039539 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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