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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 $ N3 Y7 v% a& K2 B
  1. [code]EDMA sample test application* B3 g" b: ?& C  E1 y" ~
  2. /*! X  @, a4 M) F5 m4 Z, Q0 }
  3. * edma_test.c
    3 Q: I& n2 n9 V' e( M( f
  4. *
    5 F" ?. ?+ S3 E2 l
  5. * brief  EDMA3 Test Application2 s; u# V. C5 e: V: E& T4 M3 E, T) p% v
  6. *
    ; ?# |+ A3 R) t3 h4 H- R/ U
  7. *   This file contains EDMA3 Test code.6 j, X' T# K4 k' T
  8. *6 S* {6 M$ u8 q, E6 [" w( c& s
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    % k; B) B* F! l3 K( f0 `7 I( [6 Y1 `
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    3 y* J8 o# l; [7 c$ D
  11. *         TO CHANGE.
    . \5 k, P: D3 o" X7 _6 f
  12. *! l6 I' X9 |/ ?' ^
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    & c3 c# g0 t0 t) ?( ^$ p
  14. *7 O& X7 j. o, P' J2 p
  15. * This program is free software; you can redistribute it and/or! f7 m: r/ q& P9 D
  16. * modify it under the terms of the GNU General Public License as5 T1 @/ n' N8 I  o4 e
  17. * published by the Free Software Foundation version 2.
    9 l- g( {- \0 s; ^* n, V* b# A
  18. *( [" x: b7 M) N6 s. \  c; v, r
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    * m8 @: X0 g  W. A
  20. * kind, whether express or implied; without even the implied warranty
    4 a4 H' W4 I$ t$ h- g  h6 G( S" R' w
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ( b) T5 Y5 u8 ]
  22. * GNU General Public License for more details.' e" D7 s) S( f" C
  23. */
    # C# x/ g0 r' k1 |0 E1 f
  24. / C" L/ J% C, G/ x
  25. #include <linux/module.h>" ]: F/ u5 X8 _9 O0 j: Z$ A5 z" ~
  26. #include <linux/init.h>
    # L# Z2 t9 G$ D+ q
  27. #include <linux/errno.h>
    0 q  ~- Q2 ~' p
  28. #include <linux/types.h>
    # t2 H1 [, p& I" a  m
  29. #include <linux/interrupt.h>
    , {% s: s, W2 W
  30. #include <asm/io.h>" c; r6 a2 s8 U$ y* _
  31. #include <linux/moduleparam.h>1 p% M. R: v6 N
  32. #include <linux/sysctl.h>% i* m2 o! L, o. o, a
  33. #include <linux/mm.h>
    - @) Q& H* n5 D
  34. #include <linux/dma-mapping.h>: E, e$ G6 `0 V

  35. + a: W/ r! x/ }3 E
  36. #include <mach/memory.h>+ u: `0 V9 |" `: u6 t2 u. L0 a4 O4 x
  37. #include <mach/hardware.h>  |& ^6 P) R* H: \
  38. #include <mach/irqs.h>$ z5 w0 ~7 J, e3 V. L
  39. #include <asm/hardware/edma.h>0 g. z3 i, Q: ~* H) b/ T* ?

  40. $ z& |- |, b1 [- H
  41. #undef EDMA3_DEBUG5 L% y) _, u# V* c4 r; y: m4 n( q
  42. /*#define EDMA3_DEBUG*/, ^9 p: b- Q, Q  t" D$ S
  43. 7 G8 I! p0 `. P2 A1 W
  44. #ifdef EDMA3_DEBUG$ H, R. _: b4 L  m& c
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)6 i1 ?; c; i& h" b% }% d1 g* }# x
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ( ~0 ]4 J9 e) T$ Y9 G
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    % d3 K, o9 ]0 T
  48. #else
    $ E" [/ P% P0 X/ G# F
  49. #define DMA_PRINTK( x... )& X* `9 ~2 K% T/ a, U3 y
  50. #define DMA_FN_IN. W5 y. d, a0 n: m, j7 }
  51. #define DMA_FN_OUT
    % k# m# M; X0 O
  52. #endif
    " ]% ~3 P2 O5 H0 s# Z; d9 s
  53. 5 R% o0 L  v- U, q: i
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    - m# w; u- e3 P' G
  55. #define STATIC_SHIFT                38 k& ^! J. X+ }* |) i
  56. #define TCINTEN_SHIFT               20
    ' l2 C& e5 u( S( W  E
  57. #define ITCINTEN_SHIFT              21# p- Z: {5 H9 ^" S8 D
  58. #define TCCHEN_SHIFT                22
    # k, l; T/ \. X3 V% A
  59. #define ITCCHEN_SHIFT               23
    + ~) R( Z) G* N+ q

  60. 3 O0 R; w5 t5 m$ t, O1 ?
  61. static volatile int irqraised1 = 0;8 m$ W8 `" z' g, ]# G7 |  d
  62. static volatile int irqraised2 = 0;
    $ s. A% `, _/ a4 |7 c* M

  63. $ n( r% G+ o' ^. F* Z; A( p. K
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ L$ F: e- }) O3 ^/ b
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    % {0 t8 j( v  y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! r/ x  _: s& N- l0 W; ?

  67. / n9 T  ^; ~( u! P3 M
  68. dma_addr_t dmaphyssrc1 = 0;$ E, Q$ z/ _2 ]+ L$ j
  69. dma_addr_t dmaphyssrc2 = 0;/ s" g0 C$ v$ N8 P6 W
  70. dma_addr_t dmaphysdest1 = 0;; v6 I% ^; S+ u
  71. dma_addr_t dmaphysdest2 = 0;
    3 `0 o6 B; X0 P9 W! x& a

  72. & a7 z' J+ `9 W4 {8 S9 @- X& Q
  73. char *dmabufsrc1 = NULL;# Y7 Q: ^5 P2 z$ C
  74. char *dmabufsrc2 = NULL;* k) A1 n" r$ T
  75. char *dmabufdest1 = NULL;. F4 k4 [" p# }% b9 }; l
  76. char *dmabufdest2 = NULL;
    5 k0 C5 w- Z4 |6 s+ Z* N

  77. 2 A7 R  v& `& y9 R) E
  78. static int acnt = 512;
    * Y# y5 Y+ n: \# A. U% {. N
  79. static int bcnt = 8;  T7 M, |! q% C. E
  80. static int ccnt = 8;  m2 X: Q, T9 d

  81. ! y" O3 U; A% v9 Q  Z# ^
  82. module_param(acnt, int, S_IRUGO);
    , y( n4 K$ h1 R0 _6 I3 R
  83. module_param(bcnt, int, S_IRUGO);2 f" v. _& C  c( {9 W. K
  84. module_param(ccnt, int, S_IRUGO);
复制代码
/ u" A8 X6 f( v% i( I6 a% h

* i+ ^/ ^# a& K/ x      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
3 F0 h1 a. A* U) Iarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。8 o( h& X( j+ s! [" V
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
- X$ c0 w& U4 j$ P
3 i' v5 [. x0 ?! Z4 u8 W
; M. `2 L. i) Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-14 04:44 , Processed in 0.048844 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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