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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
0 v. A$ Y# p; t
  1. [code]EDMA sample test application7 @# C* M3 |8 ~% H$ b/ D- O
  2. /*9 D' G: d1 Z: h# E( S: o: ]& j/ P
  3. * edma_test.c
    ' U3 c( E5 D5 e* ~
  4. *7 ^9 D2 x! N5 j4 i4 _+ p
  5. * brief  EDMA3 Test Application5 b- o+ ^: w2 j# M& f. h
  6. *
    : z% R' X  s& T/ o6 C
  7. *   This file contains EDMA3 Test code.
    : @9 z6 W0 S8 N. t2 n
  8. */ B% e8 s3 e! _8 i' S& E, m
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE+ r. n( l* V; [: M
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    9 y: O3 w+ y0 H% H
  11. *         TO CHANGE.
    8 N# v' Q) x3 J" j; A" U
  12. *
    6 U8 y( r1 e) q( k2 J/ X5 p
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/. {1 @; w" |7 q9 {7 G2 b
  14. *" _* o8 J$ B% U# _
  15. * This program is free software; you can redistribute it and/or
    % c4 M* b! J3 Z& R; w' m- Y% ~" U% g: V/ T
  16. * modify it under the terms of the GNU General Public License as' E" |! Q0 n; y" c
  17. * published by the Free Software Foundation version 2.7 n6 h0 V3 }( k
  18. *9 e0 Q* F7 w) H
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any5 J3 X" F; U- Q* M3 c5 h: m9 P$ U
  20. * kind, whether express or implied; without even the implied warranty
    * D' g! Q) H9 j9 F
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the& I! u- A9 ^) H1 l% ]0 C. H4 Q) r
  22. * GNU General Public License for more details.% f6 \3 B9 g' w
  23. */
    4 h& Z! ^$ b2 N3 Q7 r/ b6 l) k7 D
  24. & |' W: M8 K3 a7 j7 ]3 j5 I5 Q
  25. #include <linux/module.h>0 p% u' _' y1 r" c& [7 r
  26. #include <linux/init.h>
    3 C# k: R) \# G( T
  27. #include <linux/errno.h>
    9 K& i, M7 b9 c( U8 R3 K  {% X
  28. #include <linux/types.h>
    ' t7 y+ d2 I* l1 C- A7 o
  29. #include <linux/interrupt.h>
    % B6 }" |8 d+ E. `+ A1 n( s# Z5 ]
  30. #include <asm/io.h>
    5 Y4 r5 m8 V- x
  31. #include <linux/moduleparam.h>6 W2 Y  Q: V+ z# k
  32. #include <linux/sysctl.h>+ @& X3 Q) h6 ^4 }) l
  33. #include <linux/mm.h>
    : ]1 e! l# c& y1 c! B3 Q! z
  34. #include <linux/dma-mapping.h>
    ) N6 ]. P5 r8 h% H9 R7 o
  35. ( T9 c3 [- l6 W% z! F
  36. #include <mach/memory.h>
    7 s5 ]6 p( t5 ~% r2 ]
  37. #include <mach/hardware.h>
    " z) P  j' \$ `+ M" ]4 a  V
  38. #include <mach/irqs.h>
    6 `' M9 I& k% {$ `
  39. #include <asm/hardware/edma.h>: S$ F7 `" y% F

  40. $ O& Z; o# |% R2 s
  41. #undef EDMA3_DEBUG5 i. f' h/ z3 M2 H4 s6 d
  42. /*#define EDMA3_DEBUG*/, Z4 l5 Q' S- x# u

  43. ; n3 Z" N9 i0 j4 E, ?; k
  44. #ifdef EDMA3_DEBUG
    - ^* ^6 ^* Q0 n, J. W& F' X9 x6 \1 h
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 B. k4 u3 |! }- k$ [0 ~" {+ d
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    3 f# J6 o8 |4 j; ]
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    / z8 y! ], W) w6 t
  48. #else$ H  _% i9 ~: j  b9 ~7 p; ^
  49. #define DMA_PRINTK( x... )
    , @8 A6 L2 F& t- Y1 |% q. s8 }1 [- w- G
  50. #define DMA_FN_IN
    5 }+ S2 p$ L* j# V4 b, p
  51. #define DMA_FN_OUT8 |' X. f' {. O- E
  52. #endif
    + c# L3 \* |, e! u9 f
  53. 3 l5 N, V& A: D
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)6 K% j4 q% _3 ]. |7 e' V
  55. #define STATIC_SHIFT                38 g& M2 F! I0 ]* |7 p+ e, k7 C
  56. #define TCINTEN_SHIFT               20
    $ L4 d: j0 u9 X
  57. #define ITCINTEN_SHIFT              216 ?2 i8 ?! `+ V# V
  58. #define TCCHEN_SHIFT                229 J) S! }# \$ [& d4 `, x
  59. #define ITCCHEN_SHIFT               23
    1 J/ _' W  T& V6 Q* H3 S/ ~
  60. ; d* U$ D9 d+ b4 V( ~1 S
  61. static volatile int irqraised1 = 0;1 F6 w; c" R. {; k
  62. static volatile int irqraised2 = 0;
    4 C8 F& s. y2 q

  63. 6 A! t6 b1 V6 y& R, r
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ Z8 W$ @5 H( i6 A6 C
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 A3 N9 s$ R! l/ S
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);3 H8 b1 `7 D/ w/ x- ]2 {  w% ~
  67. : j( w) T& H. O4 _
  68. dma_addr_t dmaphyssrc1 = 0;
    9 ?8 n% G; ^1 T2 u
  69. dma_addr_t dmaphyssrc2 = 0;
    - c: V7 G! I' D2 ^  K9 @
  70. dma_addr_t dmaphysdest1 = 0;
    7 o5 \! U, u4 X! `( T
  71. dma_addr_t dmaphysdest2 = 0;
    . L: {1 g( Y+ }+ G  r' ~0 ~% R7 s
  72. 5 @1 Y# s; v! t. d9 @* n
  73. char *dmabufsrc1 = NULL;1 ~; u; R. p( {& ?  U0 x
  74. char *dmabufsrc2 = NULL;% K. i) u! ~$ R9 ]' a( }$ _
  75. char *dmabufdest1 = NULL;: A. h6 j+ J: ^4 e5 v
  76. char *dmabufdest2 = NULL;+ V1 ^/ l3 ]" ~  p; V: A( x; W

  77. * y0 ?4 d  m2 W+ O+ p
  78. static int acnt = 512;
    * k$ D) \4 ^0 o) k4 n- C+ n& j
  79. static int bcnt = 8;! X+ Q( ^- ~% j; i* _: l" x
  80. static int ccnt = 8;
    4 ~3 y* s8 m' V
  81. . H0 r2 Q( {" L! _0 H3 ~
  82. module_param(acnt, int, S_IRUGO);
    ) L& i  J: {3 b3 a
  83. module_param(bcnt, int, S_IRUGO);: Z3 g2 q! q& s9 |+ |2 f
  84. module_param(ccnt, int, S_IRUGO);
复制代码

/ x8 J8 \* P% M3 P
6 X. T! A! W  h( S9 M      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用& ]) U0 k* L, ?; r
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
  B# N! Y+ N0 d& t     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。% {/ t# b: `( j7 y

; u7 q, k4 i6 o  o; \
6 Q, v. M& K8 ^% }4 H7 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-2 04:02 , Processed in 0.044484 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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