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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 0 G- R3 j+ g4 J5 @* }4 h
  1. [code]EDMA sample test application
    $ t# X5 n, D6 P( Z/ q; F
  2. /*; g5 `3 [2 k) @# z. l4 V
  3. * edma_test.c1 c0 l- p; [1 A$ T" V7 C9 ]4 V. V
  4. *
      s0 [5 r3 f/ I, Y
  5. * brief  EDMA3 Test Application
    ! a$ Q9 h: e( {# w4 w6 I$ q
  6. *' i1 h( a0 ?$ C
  7. *   This file contains EDMA3 Test code.
    4 a2 x# ~/ z7 Q+ \+ y6 ~- ^
  8. *0 n: S7 m0 ]. F6 e
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    3 k1 U& d- w6 X1 C
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    0 J) E% t. e8 @  U1 D7 r, s: a! x& b
  11. *         TO CHANGE.
    9 M% g/ v8 `* z$ a; x) `" x. b
  12. *3 X& n' b5 k3 ~
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/; E) {' n* `7 J9 l/ {4 \# K
  14. *4 L8 @! [. \1 _) O& s! u
  15. * This program is free software; you can redistribute it and/or5 Q$ p) U# C1 ~1 M: q8 B
  16. * modify it under the terms of the GNU General Public License as, Y  g$ b/ h6 d4 G# N+ M
  17. * published by the Free Software Foundation version 2.
    / V. ?  o; X5 L" E: i0 y
  18. *2 d9 a! v% v) E, i3 k- [+ [
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    + R6 |- R1 `' H, J+ Y
  20. * kind, whether express or implied; without even the implied warranty% N- W+ u1 I1 X: k% h) N- {0 ?
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the% e7 o2 \; D0 h- z- }1 A. B! E; v  U
  22. * GNU General Public License for more details.
    ! u: r! M, K0 ^" g. x
  23. */
    4 g& E) P$ ]: j& X) F6 Q; o
  24. 7 q- d& _$ i0 i( V# r- }
  25. #include <linux/module.h>; n9 _% ^  Q2 r8 w7 }
  26. #include <linux/init.h>0 i, M& Y( s  X: \$ U# @0 Z
  27. #include <linux/errno.h>6 y- M4 j& u  W$ j
  28. #include <linux/types.h>* g( u9 E2 d: S4 b
  29. #include <linux/interrupt.h>
    5 `. t, ?( n4 `7 P
  30. #include <asm/io.h>
    , H5 Z( u! z1 ~% V$ @8 j. [
  31. #include <linux/moduleparam.h>( X, d3 y" T  [) N$ D
  32. #include <linux/sysctl.h>- F, y  w( J9 C
  33. #include <linux/mm.h>
    1 [4 k# J4 N; ]1 _
  34. #include <linux/dma-mapping.h>+ k0 s5 x7 L' V. U

  35. # n- t# g/ l' g! [6 G* j6 X, c3 L
  36. #include <mach/memory.h>
    8 y  g8 z+ b# H* k0 M
  37. #include <mach/hardware.h>
    " `1 x' b. {& u7 R  j# N
  38. #include <mach/irqs.h>
    , y2 F5 V2 b- ?. o
  39. #include <asm/hardware/edma.h>
    # @/ r( {# Z1 L$ H7 |, h
  40. 1 i  a; T2 v8 o6 w8 B
  41. #undef EDMA3_DEBUG3 U, {& k# X1 M1 |8 Z0 s5 g. W
  42. /*#define EDMA3_DEBUG*/# F: l7 L3 x  |

  43. 7 _3 y/ C; q% }) d6 K% @/ \& }& U
  44. #ifdef EDMA3_DEBUG
    - T# A/ j! m) I; x/ G3 b
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)2 \5 q6 S; ]% C; d
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)* |8 M" S) g% q$ `% h
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)& L& v' C; _0 M: u! T/ y% p( o# L
  48. #else
    / M4 i) X- P. m( b
  49. #define DMA_PRINTK( x... ). V' P& r5 O% y3 h$ t6 ?: v4 ?6 w
  50. #define DMA_FN_IN! w' c0 o' ]4 v3 Y3 ?
  51. #define DMA_FN_OUT
    $ {; s. b, [6 U# h0 f
  52. #endif6 j0 J! x9 N/ {8 B, ]

  53. % c# c5 U0 V% a' K/ I# ?; m
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    + Z& n; ^1 V* f7 T( o  s. z
  55. #define STATIC_SHIFT                3! b& g. S9 N) I# Y1 @+ P
  56. #define TCINTEN_SHIFT               20
    : F0 J# G9 ~( H2 R3 d+ g
  57. #define ITCINTEN_SHIFT              21
    ' g$ H3 z: `/ c3 X
  58. #define TCCHEN_SHIFT                22: z: ~0 U3 i3 B3 \  e' b
  59. #define ITCCHEN_SHIFT               23! e# U1 {, R, a" H* F' F# G
  60. 9 Y! h' Y8 j, I
  61. static volatile int irqraised1 = 0;1 @" U* G2 e  R; W. L) }  M
  62. static volatile int irqraised2 = 0;4 ^* K# E; g7 P% N2 x3 y

  63. 1 ~  L5 p2 O2 U5 a9 u$ h0 P
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    # Y, g9 v! N  i3 ~: x
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - X1 ?) I7 s6 V8 n& o" W+ `
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: n" I1 ?7 A1 r* }
  67. 5 r& m, y" h8 I0 a7 f
  68. dma_addr_t dmaphyssrc1 = 0;
    8 r4 E  @$ K( A; U' D
  69. dma_addr_t dmaphyssrc2 = 0;
    ) T5 d% Y8 e+ H  ?9 O7 y
  70. dma_addr_t dmaphysdest1 = 0;: h7 ~4 @2 @; D; G" K% M
  71. dma_addr_t dmaphysdest2 = 0;; T, {3 C3 h( w; }
  72. + c/ _; J6 J8 H: D- Q- q
  73. char *dmabufsrc1 = NULL;, w: e+ Q7 R! g9 C. t9 E) @5 |* `
  74. char *dmabufsrc2 = NULL;
    ( Q  G- v. W7 \4 \7 I
  75. char *dmabufdest1 = NULL;- \7 d# |5 d4 ~5 a" b
  76. char *dmabufdest2 = NULL;
    + `( D6 `5 U4 u4 B) n/ K1 L! I

  77. * F- M8 E$ q9 Q
  78. static int acnt = 512;
    ) j& h0 j, i; T' R. ~
  79. static int bcnt = 8;
    / z+ {. C) m5 h; {8 ?
  80. static int ccnt = 8;- a/ x& k1 h* X# Z

  81. * L7 L4 E" ~  G
  82. module_param(acnt, int, S_IRUGO);+ r' _4 V3 b6 M
  83. module_param(bcnt, int, S_IRUGO);3 J9 L# A6 X/ W" Q# t! ~+ ?
  84. module_param(ccnt, int, S_IRUGO);
复制代码
$ ^4 X" S$ D9 s: p. o" `& e- a+ e2 k
5 ^. E: _+ U% P% ?8 H
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
1 v9 z/ g) Z4 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。. k/ \# b- y( w& A, I
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 C" l( I3 I, M# ^6 P/ r/ K3 g- V; a. Q

0 {, y) w+ M/ j) h6 O' K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 17:48 , Processed in 0.039306 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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