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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
: e1 ?# ^$ f: G. p) H+ T9 ~+ j
  1. [code]EDMA sample test application: M5 W* h6 m' B3 h# p
  2. /*  d1 [$ m: G! G/ u& n& V: h
  3. * edma_test.c
    " ]& F: m, m1 |0 u# F- G
  4. *$ E, G6 X. l  u; k; o9 ]
  5. * brief  EDMA3 Test Application* ^  D( L. ]4 U6 x3 [$ q/ e
  6. *
    $ J% G0 K+ H8 }, i
  7. *   This file contains EDMA3 Test code.8 z/ @6 }. |( t& W& s, T
  8. *
    7 ^) |3 M7 G( a. |
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    , V' B7 @( Z. h7 m
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    $ w( X% i! y7 [! q
  11. *         TO CHANGE.
    2 }- @( k7 R+ d" a) u3 @6 H
  12. *3 G7 V( X* f8 ]( r
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ' }3 M" j/ Q- M1 S+ o$ G4 {+ Z
  14. *
    % e* S: m% ?) f  G& S
  15. * This program is free software; you can redistribute it and/or
    4 }+ [' f; p8 I
  16. * modify it under the terms of the GNU General Public License as
    ' c% p3 i' ], L! a
  17. * published by the Free Software Foundation version 2., g; d- N9 d$ M2 Z
  18. *- K7 T9 \. J( R, F8 n/ L+ u
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any( n8 P6 y+ k; N1 v: O7 D
  20. * kind, whether express or implied; without even the implied warranty
    5 o  d$ w. P  m9 S
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    8 K) f5 m/ c- [
  22. * GNU General Public License for more details.
      `% f4 y8 i% P% y6 d2 R* |/ R
  23. */
    % w. f( I2 N1 M
  24. , e- R5 p; @# J3 t
  25. #include <linux/module.h>! V  {# a4 Y# W+ b8 e3 R; i
  26. #include <linux/init.h>
    $ T- x- f' S" Z( p
  27. #include <linux/errno.h>0 q1 O/ f+ W, C9 ^7 \: ?3 T8 j
  28. #include <linux/types.h>4 `) E0 w) t1 Q. B9 ~) }2 B& t
  29. #include <linux/interrupt.h>
    $ f3 O& u' T, w3 c+ L# h
  30. #include <asm/io.h>
    9 H( n6 {) V% e" i! d
  31. #include <linux/moduleparam.h>
    : h9 L4 D. p" _: q5 h- q, M0 W( {8 ]; }* W
  32. #include <linux/sysctl.h>/ N0 ?0 t( O6 S  P% I. O
  33. #include <linux/mm.h>
    - z' ^! H! G. G* `0 e* J0 t  H
  34. #include <linux/dma-mapping.h>
    8 n) h. G2 g1 K2 e

  35. / d, N0 r* i* P' x
  36. #include <mach/memory.h>+ @( E: K5 ^2 [  t/ C6 F
  37. #include <mach/hardware.h>* m1 U  T9 [6 r
  38. #include <mach/irqs.h>4 x9 q0 z& X$ C
  39. #include <asm/hardware/edma.h>
    ) f# m& t; M' @3 l# G* g
  40. 4 @* I6 p4 S$ m& a
  41. #undef EDMA3_DEBUG
    6 k& J& C; C6 m, L' P
  42. /*#define EDMA3_DEBUG*/
    + X- M! k0 f+ z$ Y
  43. 2 O$ @7 y, e. E$ [
  44. #ifdef EDMA3_DEBUG
    , G7 k- C7 s" `8 P0 [
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ) Q/ K0 b, V4 T& l: W2 a0 ~9 S
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)) I+ o6 v) s3 E2 I) _( b9 V
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)9 Y1 v3 I) {) B7 D$ N; M  @
  48. #else" R/ V" y- B2 ?/ q5 r
  49. #define DMA_PRINTK( x... )0 F6 K0 {9 B8 E" q8 C5 T( S" n
  50. #define DMA_FN_IN
      K& d! A; l. A) v6 k+ Z* v* E+ A
  51. #define DMA_FN_OUT+ ^* n* Z1 ~. Q( t! G
  52. #endif
    # B) T' y+ ?7 ]; S! L

  53. 9 y: @, g5 ]; v
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)0 X- s) W: R6 K
  55. #define STATIC_SHIFT                3
      s- F. s) j- g" e6 R
  56. #define TCINTEN_SHIFT               20" y  D! N& A2 S6 f7 h% h0 m( C
  57. #define ITCINTEN_SHIFT              21
      A5 w3 v8 a; @. ]! P- @8 z
  58. #define TCCHEN_SHIFT                22* F3 t; B* ]  C; W
  59. #define ITCCHEN_SHIFT               239 z/ h  [0 f/ m; [) v5 C. `

  60. * t! A/ f. a/ r6 t
  61. static volatile int irqraised1 = 0;; y) A9 w5 X& [( X% k; j+ r
  62. static volatile int irqraised2 = 0;
    1 M  D0 W5 T' L  f; \- t5 k# j

  63. $ Q- f) U3 q  z% ]5 ^# f
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 Q" W$ y8 q/ c, ]
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! C7 z! O4 T: s
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 _7 e& o$ m; p( K2 W# L
  67. , ^$ n6 |9 d4 y; b# [* W- `
  68. dma_addr_t dmaphyssrc1 = 0;
    + Y. h. `) P( V8 p. Y* s! V& q7 m
  69. dma_addr_t dmaphyssrc2 = 0;6 E; |8 m' P5 g) C6 A
  70. dma_addr_t dmaphysdest1 = 0;
    2 |' \' t: d  P1 s9 J
  71. dma_addr_t dmaphysdest2 = 0;: \! V9 P2 s  J# R6 e0 H
  72. * G. `; k+ P% I. }
  73. char *dmabufsrc1 = NULL;
    0 N* I. Y) c" Z
  74. char *dmabufsrc2 = NULL;4 F, c5 Z7 o1 u9 R% R8 O
  75. char *dmabufdest1 = NULL;
    9 ~! y4 K# M% \- f8 C8 ]4 B
  76. char *dmabufdest2 = NULL;
    9 n# [5 E0 ?. j  C! w

  77.   y8 J% T6 F8 |$ n  \
  78. static int acnt = 512;: P; @' J! p! T/ U  V
  79. static int bcnt = 8;
    . C$ R3 h/ k+ o4 |' D
  80. static int ccnt = 8;+ R7 |$ {7 F6 I$ @
  81. 7 J; M" v5 w. w9 v
  82. module_param(acnt, int, S_IRUGO);" q5 W  r! S' y# f8 L1 b! p  {
  83. module_param(bcnt, int, S_IRUGO);, A; O( T5 b1 ?* ], ~+ U( ~: g
  84. module_param(ccnt, int, S_IRUGO);
复制代码

, L# Q  Z4 `) z* _' [3 c7 l
4 s* f# {. y. y' A% S" a2 i5 P      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
$ I5 U' d/ X6 a0 carm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
; U0 q6 a+ q! W, f  I. [     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。7 ]" W2 w* F' b: t$ f7 p1 t
$ _8 H& [  [. l7 W) Y

! O9 B& G+ l8 _0 J, V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-11 11:19 , Processed in 0.043531 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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