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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
2 Y1 |& G6 Z" _8 I* g
  1. [code]EDMA sample test application* \9 f- v' V  r' M; G
  2. /*: C0 O7 o" b3 K$ s* Y3 K
  3. * edma_test.c5 Z1 p: G+ b6 W9 C
  4. *
    % ]5 Z8 P8 e- ]! R4 b  d
  5. * brief  EDMA3 Test Application
    " \- Z' V8 R1 n8 @  t: k0 F% C
  6. *
    " h7 k2 d' r7 |
  7. *   This file contains EDMA3 Test code.
    / e4 m7 _: _; `
  8. *8 `, M: [. i$ f- Y/ v8 `
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE) ?; N$ C. i: s$ x
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT# _4 v' X; b2 U
  11. *         TO CHANGE.
    5 i  V) A6 x, W- ~( U7 u
  12. *
    $ ~8 f: V$ u0 E) e( D) ^
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/0 ], U( p/ Y* _+ p1 J# A
  14. *6 f$ C- {7 E" d8 v! m
  15. * This program is free software; you can redistribute it and/or
    % u6 _( M" V2 p* N0 l
  16. * modify it under the terms of the GNU General Public License as; B* n. r1 X7 M" k0 u6 v- H, }; T
  17. * published by the Free Software Foundation version 2.
    0 ]9 d( d- E: `  ^7 C$ i
  18. *. A  @8 U4 c; z  a2 u
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    8 @8 A1 B$ o  G; w/ Z
  20. * kind, whether express or implied; without even the implied warranty6 C  A: ]7 X/ J6 o" e+ I  b. \
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the5 O  S9 k! G3 _
  22. * GNU General Public License for more details.
    , v6 \# V& p( V$ V5 T, J, G: n
  23. */
    5 z7 j# d+ R( f8 O7 L  i. ?2 [
  24. 7 m" Q0 p. j* \1 F, Z5 {8 w- |
  25. #include <linux/module.h>
    % v. i: g9 [9 v, u9 g
  26. #include <linux/init.h>: a* y4 x0 J3 Y
  27. #include <linux/errno.h>
    ; e  G4 S: T) c& j* f6 N
  28. #include <linux/types.h>
    7 N0 s6 F' f$ }  y4 W
  29. #include <linux/interrupt.h>0 m4 M$ ]+ y% V% y6 z
  30. #include <asm/io.h>/ h! `  D" \. b! X- q, B# q) \
  31. #include <linux/moduleparam.h>
    $ L% L) @6 N8 L' R: F! x
  32. #include <linux/sysctl.h>5 m9 d0 X& g( N2 a! c
  33. #include <linux/mm.h>
    ; F# K% N2 X  m3 i! X% L
  34. #include <linux/dma-mapping.h>; E) W9 }  U" y/ Q! `

  35. 0 B8 H7 R2 s0 d. p* Z7 u$ ]  y
  36. #include <mach/memory.h>
    7 w3 ~' \, `" d7 x, L6 g
  37. #include <mach/hardware.h>
    % P0 `: A( ?/ s( Z2 [
  38. #include <mach/irqs.h>6 k0 V. G: O7 P8 N3 i
  39. #include <asm/hardware/edma.h>& f2 M# T2 V+ V4 _) ^. p8 u; x
  40. ( M1 O- l( j# a4 @
  41. #undef EDMA3_DEBUG' H2 k- R. l% y5 K: w8 Y, L
  42. /*#define EDMA3_DEBUG*/
    3 a: i: k' A7 a0 I: @% V: G: }

  43. " l: a+ \' D* C6 l; \  U
  44. #ifdef EDMA3_DEBUG
    3 k  @3 T- J! x- u$ Z1 F( M
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ( ~( x2 k  ^3 e. r: e+ e1 _5 P+ M$ g
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    9 q& @/ a+ i8 C3 Q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    $ C/ w, a7 S$ |& b& M
  48. #else
    ( A, w: h1 Y  q; Q% J. v  D
  49. #define DMA_PRINTK( x... )
    # O1 @$ p3 W/ \1 w& k( a
  50. #define DMA_FN_IN. c# O! r( S3 d6 z
  51. #define DMA_FN_OUT
    4 Z; P; O( E) L2 }. p" Z  q
  52. #endif3 g# q$ N3 W" a

  53. / n' W  p) `3 l
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    4 g5 ~: y1 P& _' d0 J$ M# _
  55. #define STATIC_SHIFT                3  j1 D. g- N4 }0 b
  56. #define TCINTEN_SHIFT               20" h. D" s2 `: q! v
  57. #define ITCINTEN_SHIFT              21( z/ ~$ D7 U0 v1 G7 l; I" ?
  58. #define TCCHEN_SHIFT                22
    3 |& L; V8 |% U7 j  ?
  59. #define ITCCHEN_SHIFT               23
      V* T. j/ V0 X6 Q; N

  60. - |' V: b: g9 V& Y
  61. static volatile int irqraised1 = 0;; X5 ?6 d, q, k# n* ?
  62. static volatile int irqraised2 = 0;
    % v) A2 S: T- n% R

  63. ' O0 E( M+ e5 C% z
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * C: P$ H1 @. V% W
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 o, q/ X1 u  s7 m
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 v; d* p5 `$ S3 |3 t: A) v- s, R
  67. 0 ~* ~3 ~! \$ }. T7 V
  68. dma_addr_t dmaphyssrc1 = 0;
    # |0 }5 W! R! c0 u
  69. dma_addr_t dmaphyssrc2 = 0;1 `9 w  _' U; v) ~% K
  70. dma_addr_t dmaphysdest1 = 0;1 T: n7 {+ v: T8 W3 O
  71. dma_addr_t dmaphysdest2 = 0;+ Z4 O" T8 P1 i$ W& b) o

  72. % t/ U  @8 K; J$ ?# U  e2 Y
  73. char *dmabufsrc1 = NULL;0 a+ _* u$ f1 A+ o1 Z- i
  74. char *dmabufsrc2 = NULL;2 l" X( j, O; ]9 B9 o1 P
  75. char *dmabufdest1 = NULL;* H3 I: B* P5 C3 o4 T9 {% L
  76. char *dmabufdest2 = NULL;
    % H1 h$ p( j! a& Q- v% B( n
  77. 8 N  T- _, F7 O: y1 K
  78. static int acnt = 512;
    : D1 s" w' I. }2 P0 r
  79. static int bcnt = 8;  v+ l# b* O( K, l/ j; C
  80. static int ccnt = 8;
    & I, b5 F; m5 O; P. e7 l* l

  81. . l2 Q6 j; C1 S: s3 k, s7 l
  82. module_param(acnt, int, S_IRUGO);
    " g+ O& B& G4 u1 Y! i" n% k
  83. module_param(bcnt, int, S_IRUGO);* s4 v) y$ L9 o9 n" i
  84. module_param(ccnt, int, S_IRUGO);
复制代码
9 {( m. C) k# t, h9 s& g, ^
% [, _4 k" j2 L( Z5 E) g  _
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用2 P- N: k2 a6 a7 g$ N0 v; B
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。& m* Y, ?" w; r6 G
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
" ?; h0 \" m3 F9 r
5 ]$ p& x0 G' m. b$ j9 Y. }+ j6 J3 v8 s% A4 x5 m3 Y; p. Z* v1 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 06:34 , Processed in 0.038990 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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