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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 5 i  Y8 c( c4 u. f
  1. [code]EDMA sample test application
    5 G# q6 A- \( j) ^: y7 w# ^
  2. /*
    + {$ U2 i% O7 A% k
  3. * edma_test.c
    " J: @7 X7 L5 b2 O& r
  4. *9 o9 g8 q: k  G+ e; T
  5. * brief  EDMA3 Test Application
    ' i$ B- u, m  I* }+ Q) G1 ^! {% q
  6. *: o5 P$ \8 E% `4 p2 W
  7. *   This file contains EDMA3 Test code.
    ( L6 w& W. m; n; p) O& Y
  8. *
    2 X  D% w% S" f! j8 t! M
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE8 H7 I1 a+ V4 O! g! U9 W
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    7 S6 ~& Y) W1 A0 v$ i
  11. *         TO CHANGE.
    ) D$ ?5 K& A" e& r4 Z2 x
  12. *) v' H: f! }$ Z) d) U; G% f
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    5 X8 K' G( ?: h
  14. *
    , Y$ B# C& ?& a- B
  15. * This program is free software; you can redistribute it and/or4 {; R; O4 _3 V8 D9 r
  16. * modify it under the terms of the GNU General Public License as
    2 J1 h' x% G" d( ~
  17. * published by the Free Software Foundation version 2.
    7 }( i: K; z; e' F& ~! M% x7 h
  18. *7 L# u) \' q1 r; q. S1 c
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    9 I3 ]% r6 O( E/ z
  20. * kind, whether express or implied; without even the implied warranty
    ! i6 O9 {0 J+ k1 |% m
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the: F9 r2 ~9 m8 J  v, o0 b: G6 d
  22. * GNU General Public License for more details.( a# s; X( a2 x- p' i$ s7 P; i
  23. */
    7 A! j2 X, u. Z; R% s1 G0 z2 G, b3 _

  24. / i8 S9 B- E5 Z/ Q0 r+ c
  25. #include <linux/module.h>7 _5 ~0 q# h- t3 U9 [8 H4 @3 @2 P1 `
  26. #include <linux/init.h>
    ! {0 |& v9 k/ ^: W5 \
  27. #include <linux/errno.h>1 @; t9 q3 e! B/ y
  28. #include <linux/types.h>; F0 D4 r: I+ d, r& [$ W
  29. #include <linux/interrupt.h>
    4 N) E9 \( y+ o4 _" c, D. c& Y
  30. #include <asm/io.h>. v4 k. u! e5 e  B4 L4 C% B
  31. #include <linux/moduleparam.h>$ ]# b7 N; r  m: k1 f  v
  32. #include <linux/sysctl.h>
    ! _- @4 Z9 H. S9 _$ e* X+ K
  33. #include <linux/mm.h>2 d: |1 _! ^- R' f/ w( ^
  34. #include <linux/dma-mapping.h>
    6 _, }1 j: A1 s$ G8 [" Q. e4 f* ?
  35. 6 Z' v) J: t. x9 d' ~( _# D
  36. #include <mach/memory.h>
    # n  H! B0 ]" ^" L
  37. #include <mach/hardware.h>5 N% D/ h5 v; |% K# n0 \) u8 W4 A
  38. #include <mach/irqs.h>. l  ?$ F  j: n1 s0 `' v; o
  39. #include <asm/hardware/edma.h>9 E; t% k3 s4 c6 V- m! R: e) E( t0 W
  40. & Z  [- k2 a4 a  n0 o" e; e
  41. #undef EDMA3_DEBUG5 J" E, N4 R% M* D* V5 \! n
  42. /*#define EDMA3_DEBUG*/3 G% S: ^. G/ d7 Q0 d' @

  43. ( c: e0 d( `2 n# i
  44. #ifdef EDMA3_DEBUG
    8 y* ?; J) J! Q5 m" e* ~
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ; l# p3 d; m2 W" }" l' Y! {
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)1 T9 G  \8 B1 c- N
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    8 r) N0 }0 q  n, A& ^9 s& o1 c! y1 j$ @
  48. #else
    5 {! ~9 I  a: Z- P  a
  49. #define DMA_PRINTK( x... )
    4 C3 F9 F% d+ I3 ?
  50. #define DMA_FN_IN
    ( ^8 ^1 E) ~9 I0 F: d. j
  51. #define DMA_FN_OUT  i) w4 j5 a4 R2 ?; c& I5 Q) j
  52. #endif
    7 A- c* c7 x2 R8 K  f, |

  53. & @$ P* P/ X* L0 ]/ M* @
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    1 w7 r0 }: k9 l7 q- A* e, {1 X/ A
  55. #define STATIC_SHIFT                3
    + `: J, @3 Q4 k$ k
  56. #define TCINTEN_SHIFT               20
    ! B' s4 A& [% b/ N% r
  57. #define ITCINTEN_SHIFT              21
    # U3 |, w1 }, x1 L
  58. #define TCCHEN_SHIFT                221 Q6 Q' ^# h8 }% G) |+ X* S: Q
  59. #define ITCCHEN_SHIFT               23
    2 T" D6 E$ s2 q, D. @
  60. ; I( W! ~; Q: i
  61. static volatile int irqraised1 = 0;
    8 v  B/ N9 Z1 ^. I4 f' b5 f6 z9 X
  62. static volatile int irqraised2 = 0;: ~) k& Q% {4 }; a
  63. 3 ~9 d5 u' ~2 M1 n* H
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 a2 x, i; v. u( \8 x" F1 }) H6 y0 I$ d
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. L" v+ H  l: U+ F+ u: C/ Z
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( s6 `0 H. c$ ~5 a+ l* j
  67. + E' q$ c9 D- x5 ~/ R( |
  68. dma_addr_t dmaphyssrc1 = 0;1 O2 s# ~! g, u4 d9 L
  69. dma_addr_t dmaphyssrc2 = 0;
    5 f! q5 O5 m7 C9 u
  70. dma_addr_t dmaphysdest1 = 0;
    - u( W6 j, \3 b6 w" \0 Q
  71. dma_addr_t dmaphysdest2 = 0;
    & E& b; ^& E$ e

  72. 9 I4 S) K) `" f7 \& V
  73. char *dmabufsrc1 = NULL;! a" i+ V* D* |  |
  74. char *dmabufsrc2 = NULL;. [% H! ^9 s2 f
  75. char *dmabufdest1 = NULL;
    * i$ Z( b) v8 i' A5 k) X; Y+ z3 d( v
  76. char *dmabufdest2 = NULL;
    ) E# {; G/ J2 a
  77. 1 V6 @/ d2 p- D# {$ ?/ Z
  78. static int acnt = 512;
    & N  G5 o% U) B8 ~3 ?
  79. static int bcnt = 8;
    , W& a3 _  C# m7 @3 f. \) K4 [/ f
  80. static int ccnt = 8;
    % Z; _- @! ?5 K, f+ E1 V

  81. 2 P* I: ~6 o9 C$ h
  82. module_param(acnt, int, S_IRUGO);% A4 \+ [# |! k( c
  83. module_param(bcnt, int, S_IRUGO);6 D: ]8 l# \" j. H* b0 c
  84. module_param(ccnt, int, S_IRUGO);
复制代码
( o9 D" X3 B! s
& k  W2 O. R0 I( J
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
. Z5 \. j8 w% _* v$ R. E. ?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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
  R( Y4 \# m0 {3 M/ U     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。" \4 W9 m2 t5 @

, a) U- q* E6 p. ^0 G$ o- x6 l4 T* O/ H" O1 e- e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-21 04:41 , Processed in 0.041668 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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