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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
* y3 ~1 h( R* j) J
  1. [code]EDMA sample test application" h5 o8 Y* R( ~8 N/ [" `! X% g' H
  2. /*
    ; m$ T( N/ p6 c: e9 H. F
  3. * edma_test.c6 ~' P' V1 r8 g: t6 }, s' y9 }
  4. *
    5 W- e, Z/ P) g4 F& s
  5. * brief  EDMA3 Test Application9 r- s* B& E9 T9 {  S4 P
  6. *+ G7 u& s$ [& ]3 A% [1 Z
  7. *   This file contains EDMA3 Test code.+ ~4 R% N. O% j# @6 ^$ G0 g
  8. *' i% Z9 c& K1 r/ d  z9 h/ z
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    . K  B( F0 S6 ?9 k0 A# i" U
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ) a- K+ D( i) ?3 s! n6 P
  11. *         TO CHANGE.- x, U! [2 s0 q* D
  12. *. [! m1 Y3 i; j, N
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    4 m, O1 y" d( E8 r! z
  14. *: `2 a' h& w9 K# V* _9 u; Z. w
  15. * This program is free software; you can redistribute it and/or
    % \! Y. d5 l. q$ [* |8 y4 [" z
  16. * modify it under the terms of the GNU General Public License as& c! i  g$ Z% s: z8 F8 E
  17. * published by the Free Software Foundation version 2.' i3 Y! j* `+ J6 y& |/ H0 J
  18. *
    7 H, l( I" S0 ]8 n; F
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    . C; |/ c2 O: ^3 w/ F
  20. * kind, whether express or implied; without even the implied warranty
    ; v! ?5 u; T9 _1 N1 A' f
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    + U9 K7 M* q" N7 b& \: U
  22. * GNU General Public License for more details.
    ( G8 t5 g) f5 }) P! s5 Z8 \# A
  23. */
    & s7 p+ H* `* z5 \& o+ S
  24. $ F1 p( a- |" c8 ~% F5 y# |9 U
  25. #include <linux/module.h>3 D! g* g4 g( C/ E
  26. #include <linux/init.h>
    6 T( |4 O. r' r1 ^* i
  27. #include <linux/errno.h>% ^: U  c' \, e/ f' ~
  28. #include <linux/types.h>
    2 U- r/ Y4 Z7 E; q* [! ^9 A
  29. #include <linux/interrupt.h>
    / B2 u* Z; r$ H" o  y5 f/ z1 T* V
  30. #include <asm/io.h>
    5 F* h  f" F- s/ Y
  31. #include <linux/moduleparam.h>
    4 i2 N& d: b1 Q8 m" H$ T, Z/ i
  32. #include <linux/sysctl.h>
    5 D6 L  G/ @1 o. U6 B+ k2 }# H
  33. #include <linux/mm.h>0 m5 b$ X6 L8 L: c! P. t
  34. #include <linux/dma-mapping.h>  b# r, m7 N( Q+ H% \3 H4 h- v5 `

  35. ! P, R8 a0 Q) R; L0 Q
  36. #include <mach/memory.h>
    8 B; h4 Y- A% i+ ?, u% I
  37. #include <mach/hardware.h>" f5 J# n0 v) }  N- ]
  38. #include <mach/irqs.h>+ l- ]2 {7 u3 Z! @8 G
  39. #include <asm/hardware/edma.h>
    " D+ H, o, u/ X

  40. $ j, u' Z8 D, q9 C4 R( ^8 J  ]
  41. #undef EDMA3_DEBUG; _7 \4 `# M. R: }8 j$ R1 y
  42. /*#define EDMA3_DEBUG*/
      P$ q! U: }8 U1 M  u

  43. 5 c: g# L1 M" p, T; L
  44. #ifdef EDMA3_DEBUG
      [0 Z# A5 v0 c) J0 P% K
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)& \" }& P- D# t0 s& J
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ; b, X7 ^4 t2 C4 K7 `
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)* N! Z" N$ O- _( E8 W
  48. #else; D+ g8 T/ p' l) J( p: f$ g6 y
  49. #define DMA_PRINTK( x... )/ p0 ?( F  v& Q% z& @( C- Y4 k
  50. #define DMA_FN_IN
    9 k1 j; \; U. x  X4 F. J1 q
  51. #define DMA_FN_OUT
    0 B+ {/ [1 f& j$ [
  52. #endif
    & G* V; D: M. n) t

  53. ' m4 q- n2 Z! o& \) K& {8 v# Z
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    , E( ?. L' a7 A
  55. #define STATIC_SHIFT                34 r; ~- o3 a3 p5 i" V; M
  56. #define TCINTEN_SHIFT               20% z, V# W# ]4 I7 K) ]( i
  57. #define ITCINTEN_SHIFT              21
    ' F0 V, x5 V6 d: T2 ]4 R5 g7 v
  58. #define TCCHEN_SHIFT                220 }7 D  c5 k9 O2 ~! d, M
  59. #define ITCCHEN_SHIFT               23
    ' `( }! p$ R4 I6 r1 C
  60.   p* {  a7 L" i& `. d% N! [. H( R
  61. static volatile int irqraised1 = 0;
    * u3 [/ d- }6 W: L1 z1 X7 h: p
  62. static volatile int irqraised2 = 0;
    * s% {9 F# x/ T/ T! F# i! Z

  63. 4 G8 @  `1 D* y
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    % G0 J# Z9 j9 |+ h
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! q  O' }. s& B! N
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% G( V" j% z9 C$ g

  67. 8 ?0 l- ~; P! ]9 h  {
  68. dma_addr_t dmaphyssrc1 = 0;+ p5 |4 B1 N7 \6 M% [7 O
  69. dma_addr_t dmaphyssrc2 = 0;* `2 Z  M/ ?0 f: K. T. L
  70. dma_addr_t dmaphysdest1 = 0;
    ) T/ E+ }2 i4 X5 z* }8 N/ Z
  71. dma_addr_t dmaphysdest2 = 0;
    ; `1 r, q4 ^2 y4 |2 w) O: [8 V  L

  72. ' t: p. p8 N7 X' d( n
  73. char *dmabufsrc1 = NULL;
    $ A* Y* X+ e/ e  O1 r4 Y. A
  74. char *dmabufsrc2 = NULL;+ w5 n' v7 o+ K7 x. r
  75. char *dmabufdest1 = NULL;0 G8 z. o" [) I  F8 v: k
  76. char *dmabufdest2 = NULL;
    * J( z7 a2 I/ e% ~0 T: v0 h
  77. / e7 d& D( z: a* T, Z5 C
  78. static int acnt = 512;: l5 g/ f. s$ q) l4 P1 s
  79. static int bcnt = 8;
    ' ^  P3 r' z" D; D* W
  80. static int ccnt = 8;; v* |/ D( R- V0 C8 ~4 j  @
  81. * P# h$ z4 I: w2 ~
  82. module_param(acnt, int, S_IRUGO);
      t6 o) E& t( T' k# U7 `( G5 o
  83. module_param(bcnt, int, S_IRUGO);
    2 \* y2 }( s/ U
  84. module_param(ccnt, int, S_IRUGO);
复制代码

' z. ^" h! A5 l) v! o% e+ ]0 F
) v7 T0 L0 j. P( H      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用8 j  y% X$ E9 q  q/ ?
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。7 {1 |& R( k+ X
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
% g$ C. o7 D- K1 h% L5 H! n5 O3 ~2 ~9 ~$ X
) z4 D8 C4 I2 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-21 17:36 , Processed in 0.036982 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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