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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 $ c" M& i9 _, l9 h: J0 o3 C, t( w
  1. [code]EDMA sample test application( }. A1 x$ Z; J5 d
  2. /*" [8 k* M. Q- N% ~/ |, E+ w
  3. * edma_test.c
    8 J- O; J, u5 `% c& h8 K! W8 Q
  4. *
    ( J  M' N- a) l: Y. ~9 A
  5. * brief  EDMA3 Test Application
    2 T+ I; I/ `) u5 `6 e
  6. *$ |" M9 }8 I  L# A8 f
  7. *   This file contains EDMA3 Test code.. v- T6 z( [2 g; J2 g
  8. *
    1 g' d2 p% t; r) Y, C
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    / o+ K3 ]: F: C1 i2 T4 c
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ; g4 a) X/ i  z
  11. *         TO CHANGE.
    : Q5 d) F6 ]' ?8 F7 b4 u
  12. *! Y: G/ L' [6 T9 G
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    $ u7 j& @3 ]5 k1 v/ n1 J$ S: ]
  14. *# _0 V: G1 \6 N8 `% L7 F- M3 x
  15. * This program is free software; you can redistribute it and/or
    8 `; i5 a9 Z. e7 J: `- O: U
  16. * modify it under the terms of the GNU General Public License as
    + z. p* }0 d; O! x5 p
  17. * published by the Free Software Foundation version 2.
    ! m# n, N3 A" W5 P, r" B- Q) Y
  18. *1 G# y  q8 K/ x9 y& W7 v
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any/ a# g4 R% F! _) k8 k8 ]# V& v
  20. * kind, whether express or implied; without even the implied warranty5 \* E1 F/ e& J& ?6 e
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the% c. b0 O# b* y" I% H
  22. * GNU General Public License for more details.% b/ h& S) C) U0 Y, u. R0 q
  23. */
    * m: g7 r6 U( {" f- M, S+ w; C; }) s
  24. 9 j8 i* V2 {) g) G  C
  25. #include <linux/module.h>
    , h) v1 ]* R+ M
  26. #include <linux/init.h>! }4 P$ y. n! n: _
  27. #include <linux/errno.h>
    $ N4 G* Q. {7 K7 l/ X+ r" F
  28. #include <linux/types.h>
    . C! U; \4 N) K( o; p* `6 h. t
  29. #include <linux/interrupt.h>; ?5 R4 @# K0 Z" Q
  30. #include <asm/io.h>4 p6 k# F- K' j+ u1 J( n  f
  31. #include <linux/moduleparam.h>4 o4 J7 r' x. T0 I* ?& C( {
  32. #include <linux/sysctl.h>2 s3 S! E: t# @; z, g
  33. #include <linux/mm.h>, k% s7 M% ?6 |7 k$ x5 I5 b* I
  34. #include <linux/dma-mapping.h>5 g. @, Q' P1 H' R
  35. 0 D3 C5 B% n1 Q# @" }7 M
  36. #include <mach/memory.h># `* k* E; |0 l4 M9 {
  37. #include <mach/hardware.h>" f2 x& a% X6 U! f$ [
  38. #include <mach/irqs.h>6 [7 A6 H& [% }2 |6 o" a" e
  39. #include <asm/hardware/edma.h>; [# b! V8 c5 ^: h
  40. 5 i0 V8 B+ s6 z; w
  41. #undef EDMA3_DEBUG
    # S' |. ?7 B* K( s! o: D
  42. /*#define EDMA3_DEBUG*/2 @, X# I- h8 e$ P' d

  43. : ~, b* Y4 R) C( I( [/ |0 B
  44. #ifdef EDMA3_DEBUG
    1 V( l( V/ J5 F* E( \3 }; _
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)1 R3 f+ u7 H1 C9 E5 T; e
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    0 e% y1 z+ I" Y& [! H
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    1 V. w- M. G6 M% [5 T! ~: i5 v- i
  48. #else! k  i) t3 O  _
  49. #define DMA_PRINTK( x... )1 ]. N& T- D; i6 s% q* w
  50. #define DMA_FN_IN
    1 T! c  V) {. Y% a$ R. ~
  51. #define DMA_FN_OUT9 Y' C! w) D5 c
  52. #endif% J- f3 U/ X/ f' M4 u
  53. ' u& J' ~% ^3 L- l9 k
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    / l( B* Z9 L2 l( B" M
  55. #define STATIC_SHIFT                3
    % L: T" A. v( ^. o
  56. #define TCINTEN_SHIFT               20
    ; a" A' p# e  b0 {: ^+ x9 a8 M8 d
  57. #define ITCINTEN_SHIFT              21$ y3 h. I! e4 ^, m- r3 `# @" B6 z. N
  58. #define TCCHEN_SHIFT                22! w, l/ G9 v6 k% j+ }0 R
  59. #define ITCCHEN_SHIFT               23
    6 R( R+ q  e& h- I7 U, t
  60. 8 W8 I9 |/ X" z7 n: a" Q
  61. static volatile int irqraised1 = 0;1 U0 D7 u, p7 c) m, _% f" L$ o
  62. static volatile int irqraised2 = 0;
    . N" h1 [8 q+ b3 s
  63. 2 {/ w1 p. O" _9 H* t
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);/ t4 ^% c  n. ~$ R9 [: ]/ J
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' x1 j7 x+ Q" x8 X- b
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' k# r( I" e) i! }5 l' A4 N

  67. * b' G, p7 b( a$ W4 \$ P
  68. dma_addr_t dmaphyssrc1 = 0;
    & }, m+ a( t5 d$ E! ?
  69. dma_addr_t dmaphyssrc2 = 0;
    0 P0 i' e/ C0 Z3 h
  70. dma_addr_t dmaphysdest1 = 0;" c7 J' {% X" S; E* i
  71. dma_addr_t dmaphysdest2 = 0;
    & T; Y, v* s* v- u
  72. ' E/ l4 G0 B1 z  V2 ]
  73. char *dmabufsrc1 = NULL;, t7 W5 Y1 ^; X% w5 Q
  74. char *dmabufsrc2 = NULL;) O4 W- a. \) _+ O0 a8 Y1 X/ C
  75. char *dmabufdest1 = NULL;7 @6 |0 ^: c( P3 S5 @9 t, E. k
  76. char *dmabufdest2 = NULL;
    8 j% |0 \! H6 K  G4 x

  77. 5 P1 x  b7 A) h! W
  78. static int acnt = 512;
    2 @/ Z/ _) \- `/ L/ u2 R1 t+ k
  79. static int bcnt = 8;
    ( B/ m" I7 G3 N
  80. static int ccnt = 8;. l  b8 s8 o6 k' x0 [

  81. & q% X5 p' p4 C
  82. module_param(acnt, int, S_IRUGO);- L! S+ x! R0 q: q- G: y' j) `! I
  83. module_param(bcnt, int, S_IRUGO);, G- U9 r7 d1 ~9 r$ C
  84. module_param(ccnt, int, S_IRUGO);
复制代码

* G" c+ x$ E4 c7 r. S$ Z. C# V* Y" M9 Q
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
0 Q) Q( h# X! r1 P) Xarm-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 J7 _! `* K; V) F, \     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
3 ?) I- s7 W7 o- y5 [' `7 W" V, K3 A
4 m' h4 b% ]# i& v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 15:01 , Processed in 0.053224 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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