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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
" Z% V0 y0 t0 c) B$ g5 u5 ~! Q
  1. [code]EDMA sample test application
    + N2 o: T; a' c% ~3 D
  2. /*
    : p! U! w: I7 K, Q/ _* a0 D9 y& o# g7 L
  3. * edma_test.c
    * r3 _0 X/ p$ k) o
  4. *
    ) r' v+ {6 |5 f1 U
  5. * brief  EDMA3 Test Application: x- k0 F6 U% _' u; j
  6. *, w$ O" ^' m9 @
  7. *   This file contains EDMA3 Test code.# Y0 a, {! T8 P% W3 O
  8. *8 F2 Y2 n! J3 r7 X* j8 m6 K: R
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    1 ~: N' l! e. b, }& T
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    % N8 W# r+ Q* y. Y
  11. *         TO CHANGE.# {; x- L/ j) t$ ?# ^! z2 d
  12. *
    . h# x4 q- \) h7 W3 Z! e
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
      {% c7 h$ G/ x9 a; [: j
  14. *
    + I: N  h$ H0 ^% A5 Y
  15. * This program is free software; you can redistribute it and/or
    - W8 \# Z: C5 X0 |! [( x
  16. * modify it under the terms of the GNU General Public License as! g, K. b4 C6 t5 V
  17. * published by the Free Software Foundation version 2.: b' K9 d2 m5 m
  18. *; g3 N! c* x5 k
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any! q% s2 Z& Q0 J0 p" h( c
  20. * kind, whether express or implied; without even the implied warranty5 F) Y! \9 P+ C
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the: R$ v: K9 k- l" R  d7 n% U
  22. * GNU General Public License for more details.; ?) ^) ~: w2 y- ?9 t" K
  23. */  D. m% V+ C; f. r6 }2 H
  24. # T* v$ d. [2 C4 R
  25. #include <linux/module.h>; ^: v) |  \4 t, J, S# @. Q
  26. #include <linux/init.h>
    ( p" d$ h6 R  G+ E( f1 n$ b
  27. #include <linux/errno.h>! p. D4 A1 o# O. L3 }+ I! d
  28. #include <linux/types.h>+ D5 z3 t. k/ `4 e2 f; }$ m9 e
  29. #include <linux/interrupt.h>) `! m) }( F: J  W" {( o
  30. #include <asm/io.h>
    + ?4 H% b4 I9 c' S1 k6 K
  31. #include <linux/moduleparam.h>& R3 D. D: J+ S! x) v
  32. #include <linux/sysctl.h>
    9 n3 L2 U) q. C$ V( W
  33. #include <linux/mm.h>
    , F: @& y' c# o$ |1 d
  34. #include <linux/dma-mapping.h>
    , h8 e" u. Z" V& t* O' s
  35. ( W1 K* m0 h  A' K! s* m
  36. #include <mach/memory.h>
    ! l5 k  I# w! M8 o
  37. #include <mach/hardware.h>
    5 }, x' _2 X% R# s
  38. #include <mach/irqs.h>
    3 P, |) I% S0 Z$ Z. l
  39. #include <asm/hardware/edma.h>
    ! P4 Z1 u9 d3 o" c6 \9 d5 U) I

  40. - C5 t1 P* K$ _. p9 ]
  41. #undef EDMA3_DEBUG. e8 Y8 H- R6 M/ P# z' {" [: Z
  42. /*#define EDMA3_DEBUG*/) _* w% Y" N. X+ H7 r2 u
  43. ; [# _: j! {$ |! H7 L1 t
  44. #ifdef EDMA3_DEBUG1 ]4 e; k4 K$ v% X" Z
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)! T8 c$ V1 O3 [1 L9 S* C1 O- e
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    . @5 K& \3 k: k
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)$ g! i' [; E7 Y  h
  48. #else5 E; z+ r, q/ D; S
  49. #define DMA_PRINTK( x... )
    4 k# J# g4 r3 h3 ^* J
  50. #define DMA_FN_IN* L  p1 ^! ]" T) q( T; l* H0 I
  51. #define DMA_FN_OUT. X+ ]  n# h' C1 a$ U* F: u( v
  52. #endif! U. z4 \- }+ D
  53. ; w. `: ]- M1 ^& g, ]2 Q
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    0 g/ e: H1 }/ h6 |
  55. #define STATIC_SHIFT                3
    + l* Y% y! t; j* p6 s% w- z* g
  56. #define TCINTEN_SHIFT               20
    . O: J0 y# G2 A) M* Y
  57. #define ITCINTEN_SHIFT              21
    , e7 a' c# w6 o7 n6 |
  58. #define TCCHEN_SHIFT                22
    % E, Z; U, [& [, t
  59. #define ITCCHEN_SHIFT               23' r9 I4 U) V6 N! m& w  I

  60. 5 ~  g* x/ u$ Q1 p$ |9 r
  61. static volatile int irqraised1 = 0;3 ~, D2 Z. q. `% @
  62. static volatile int irqraised2 = 0;% o- I" D& {( t; Z7 ?

  63. ) p" t$ ]5 k* }
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    6 G4 k4 ^% Q  @% e
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. a( B) H; X$ j* W& t0 U
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 c1 E# d3 c  a& Z+ J% I' I, ]1 u

  67. & r) J2 u) q; D; L- g+ \
  68. dma_addr_t dmaphyssrc1 = 0;6 @- k1 J; Y' R8 ~$ g: Q' M
  69. dma_addr_t dmaphyssrc2 = 0;5 n9 b' v; p: X
  70. dma_addr_t dmaphysdest1 = 0;  g& E7 i0 H4 e. P: @# f
  71. dma_addr_t dmaphysdest2 = 0;
    7 B4 Q( z- o" `! ~; l( `, a0 q$ \

  72. , }' Z2 C: a/ s6 Q( U7 b& ^1 o
  73. char *dmabufsrc1 = NULL;% Q: w8 J8 v& V& [
  74. char *dmabufsrc2 = NULL;
    . E2 m/ F& `. B0 b
  75. char *dmabufdest1 = NULL;
    ' p! V1 M- j* V5 i
  76. char *dmabufdest2 = NULL;
    2 \, q# O# I; Y% J; H. w' n4 c, |

  77. 2 W9 R+ I4 l4 P: i7 @6 A! }: s
  78. static int acnt = 512;, y! r" D1 n) J& J; z$ f
  79. static int bcnt = 8;# H4 m( f' x" a
  80. static int ccnt = 8;
    0 e/ u# {1 O1 p( _1 `
  81. % m0 a7 }; a* X+ D( [
  82. module_param(acnt, int, S_IRUGO);! f6 A; K" n1 X) i: W/ q
  83. module_param(bcnt, int, S_IRUGO);8 y0 t& C( s7 |0 N& B
  84. module_param(ccnt, int, S_IRUGO);
复制代码

- U" I! z+ b) E$ g9 d" r
4 J- p2 X, x! w& Q      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
' X+ `2 Y  x3 I, M- y- F& A" Garm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。6 H$ s9 ~# y/ S- O; ]5 A  B
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。) ~: B" U# a. n

% S+ T/ d! ?# J& B0 S, U& z
. u6 A- ]3 q" e8 q* c$ ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-8 05:12 , Processed in 0.036527 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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