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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ) m0 l2 p' Y2 b8 V5 f
  1. [code]EDMA sample test application
    * d* Z4 i0 x6 f* J
  2. /*" K6 e: X2 b' J1 B9 B0 K7 s1 ~
  3. * edma_test.c
    1 X0 D0 x3 d' v7 p
  4. *
    % U1 K/ k  Q2 |& C
  5. * brief  EDMA3 Test Application* C  o6 S& b5 V  Q, b
  6. *
    1 W0 b# e: G/ x$ m4 z! L# T1 [# F
  7. *   This file contains EDMA3 Test code.0 L  H1 z( L* H' E2 |) R( g
  8. *& J5 L! Z+ [1 `$ K, X# E
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE+ n3 F7 @! c* @' u; |+ ?7 H
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    4 p$ K" ?% o6 ~$ }/ Z
  11. *         TO CHANGE.* x# Q9 j) j+ |8 E" R
  12. */ g, ]7 J6 {# v: ~
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    8 M# O( _1 z- h
  14. *) F! I  ?8 p' Q; v
  15. * This program is free software; you can redistribute it and/or
    / ?9 r4 C# L" Q& ]
  16. * modify it under the terms of the GNU General Public License as
    " s0 G- |1 }6 d2 A3 c8 `- G& D6 j
  17. * published by the Free Software Foundation version 2.
    3 y4 `2 }: Y$ Q  j( a2 q' O  V
  18. *
    + t6 W& C- [. L* m9 ?3 E
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    * W) X" X" H- v8 X+ P
  20. * kind, whether express or implied; without even the implied warranty7 n% I, m0 x! {4 q! Y9 r
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    $ \* }1 w: I7 F! M
  22. * GNU General Public License for more details.# Q/ B0 g( |3 W7 F2 c  q% p% `
  23. */
    " n/ U% B8 X3 [- ^6 G
  24. % G  T8 _9 Q, U7 `8 V
  25. #include <linux/module.h>3 x! @- ]- w  f  D
  26. #include <linux/init.h>
    , g4 z7 Q  @+ \; O( B
  27. #include <linux/errno.h>$ {$ u! k- `& h; c: @. g/ }8 x" v
  28. #include <linux/types.h>
    / U9 `) P1 W  @% `
  29. #include <linux/interrupt.h>( {! T- }) r; h7 m  W4 F
  30. #include <asm/io.h>% l. E4 a5 C: J& P' Z  L
  31. #include <linux/moduleparam.h>
    - a, W+ {& Z; V) p( \
  32. #include <linux/sysctl.h>
    6 c$ ^" Z0 T/ v4 F8 R& b" O
  33. #include <linux/mm.h># [+ Q1 P+ Q, ^7 y: r
  34. #include <linux/dma-mapping.h>
    # ?/ M6 U* z( d3 H

  35. 0 E0 {; @- p8 G- o0 b' A; [
  36. #include <mach/memory.h>9 K. I5 I3 O$ ]# f& S6 d
  37. #include <mach/hardware.h>
    : L- i* A! H# e) o- f
  38. #include <mach/irqs.h>% _* j! p. D9 _3 j: B
  39. #include <asm/hardware/edma.h>+ Q5 T1 h- U: [9 x! x5 d* \

  40. " t* z) N+ I& H4 r
  41. #undef EDMA3_DEBUG
    : N' `$ m: Z- ]. p+ R% D
  42. /*#define EDMA3_DEBUG*/
    ' ^2 s* y3 \* Z5 T& o

  43. / a- d3 `( q1 a! Y
  44. #ifdef EDMA3_DEBUG: m: O9 s, e* P# e+ S
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)" L0 a& X% U/ }9 D) W' w
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)3 p. H" u" }2 m4 B
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    * |2 W& V  S% F! r) D  q9 y
  48. #else
    2 I4 i1 N6 I4 g% ?, `- q
  49. #define DMA_PRINTK( x... )7 c. f: X  Q! `, X4 l
  50. #define DMA_FN_IN2 ^  A3 l- P/ ^
  51. #define DMA_FN_OUT1 f! t2 H# R1 r7 ^, C
  52. #endif2 D* w" N+ I8 {& ?& @/ D" w9 m% F

  53. & u7 q+ [& N' S" O7 j' R, W
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    & ^6 Z6 n/ z1 s& a6 \! j
  55. #define STATIC_SHIFT                3! Z) H9 G4 [* x& E, B. h8 z4 E2 R
  56. #define TCINTEN_SHIFT               205 b5 c9 [# @& E0 ]5 w3 s
  57. #define ITCINTEN_SHIFT              213 @/ M! T3 p; I1 d. n
  58. #define TCCHEN_SHIFT                221 @  a# x4 J. n2 a9 b
  59. #define ITCCHEN_SHIFT               239 H3 f  O: e3 b; k6 m: O8 u

  60. 9 J) R! W' q8 R( w. R: q  X
  61. static volatile int irqraised1 = 0;9 g! a) I8 R) T: ~. V: r8 j2 z1 D) Q
  62. static volatile int irqraised2 = 0;
    - e( a. O% a3 i, m- a3 l$ [

  63. 7 p1 t5 O# k: y6 Z0 d3 V
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' u6 p7 n8 W( v( K2 I
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) D# e' d# n8 x/ a
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& S: P/ `" j; q5 [! `( f
  67. / M6 h; l  [- n# i8 i9 n
  68. dma_addr_t dmaphyssrc1 = 0;
    # {0 @& h, G3 ?
  69. dma_addr_t dmaphyssrc2 = 0;+ n% i4 j5 E  f. r' v4 h! M) P' n
  70. dma_addr_t dmaphysdest1 = 0;  t% K+ `4 C9 H- `6 z% |
  71. dma_addr_t dmaphysdest2 = 0;
    7 V* B( d" Z8 {+ ~- l3 [" |

  72. 4 Y* _# e/ q5 v" J) p- c8 B) t3 H
  73. char *dmabufsrc1 = NULL;. t, N) A. z+ [# H
  74. char *dmabufsrc2 = NULL;
    8 c& K- k: S, C9 C9 O5 j9 v
  75. char *dmabufdest1 = NULL;2 i: j8 Y% @8 M- w, z- y
  76. char *dmabufdest2 = NULL;6 c( G: r$ {! N2 e% J
  77. ' y/ n. b* ~- J. x+ [  Y1 F
  78. static int acnt = 512;% D1 l0 R; W: O1 ^- c3 f: s
  79. static int bcnt = 8;2 I* b& @$ J) c- F
  80. static int ccnt = 8;
    ! Y; U+ x7 i$ W/ l" |
  81. 4 ]4 U8 g/ _5 l+ B
  82. module_param(acnt, int, S_IRUGO);
    9 Y1 p" S7 w3 R& ^3 C# e  c
  83. module_param(bcnt, int, S_IRUGO);0 j1 C6 Q! {. D& _, Z6 w& l& ~+ ^
  84. module_param(ccnt, int, S_IRUGO);
复制代码

' h: V( E5 f6 @; A' a9 x. A1 ^+ s* F) L$ ~& U8 h& F+ Q  r# _+ {8 O
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 A; Q% Y2 N4 X" g
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。  J. v' N* m) X2 X7 W* U
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
; s4 y0 |" G! L# r; X. b: l1 [2 c2 W0 r/ v
: I- e  e5 t; n9 a! D: D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-20 09:32 , Processed in 0.035902 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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