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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 & U1 P7 I; f& o4 Q
  1. [code]EDMA sample test application
    * |, S: k, x: V7 ]
  2. /*
    * R0 A- ^( m7 j; I
  3. * edma_test.c# k6 ^% Y. V" D  d* o' p9 W
  4. *
    7 |: }  i" q" Q" i
  5. * brief  EDMA3 Test Application7 @( W1 c5 J3 ]# @  K% U2 Q
  6. *, Z$ `  H3 d  n/ A: w
  7. *   This file contains EDMA3 Test code.' v; g. m, f8 E$ I
  8. *& k3 x9 C; b. u  z$ i; S
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    4 B# O; ^- r; Z1 p% U
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    4 [2 G, H+ I* x3 Y1 M
  11. *         TO CHANGE.  w6 v! K9 a. z/ [5 c% @
  12. *
      `! A+ r1 U6 g# }3 G
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/  }$ x: h, ~; e  p
  14. *$ c  W2 X1 `1 o5 j$ g
  15. * This program is free software; you can redistribute it and/or8 u8 g3 W( f' F: F  w8 }" A
  16. * modify it under the terms of the GNU General Public License as
    ) Z* a' i0 W5 h5 a8 s! y5 `
  17. * published by the Free Software Foundation version 2.
    9 X0 E. X2 p0 S  R' t
  18. *
    " p# i! C/ o3 H2 L) t) I2 S6 p' S
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any! m& I) i# B1 U( k
  20. * kind, whether express or implied; without even the implied warranty
    , Y9 U% X9 g5 f/ x
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the" q, |$ H% S) x# e; n) R
  22. * GNU General Public License for more details.9 b+ @- S9 s5 r! S' ^3 `
  23. */
    7 M3 O6 F) ]2 h/ E* O
  24. , w% M9 }5 N) \* _$ p, P% q: d
  25. #include <linux/module.h>
    3 b# J. |+ `$ y; Y
  26. #include <linux/init.h>
    ' X5 Q/ _$ ?- U0 r) {; g# v: N; L
  27. #include <linux/errno.h>
    * ~+ }) {& W. R% z1 B# E
  28. #include <linux/types.h>
    8 t  i* c/ j3 L
  29. #include <linux/interrupt.h>
    ; K& J6 u* p1 d
  30. #include <asm/io.h>
    ( J( j, R  p6 c& @5 G
  31. #include <linux/moduleparam.h>9 E' U4 e1 f' f  v
  32. #include <linux/sysctl.h>6 E+ b* |- C# c8 i$ X/ N: N- R4 o8 G0 l
  33. #include <linux/mm.h>
    1 U, H9 \& t% ?) t( R
  34. #include <linux/dma-mapping.h>8 _3 b+ M$ @! B+ ]

  35. 3 h% i5 a# g8 t$ {6 h8 \2 P
  36. #include <mach/memory.h>; V7 y" h8 x; K/ x" Z) r! w0 x
  37. #include <mach/hardware.h>; d3 b, O* w3 Y2 `4 c: W' |+ A- N
  38. #include <mach/irqs.h>
    ( ~) z8 {. f# C* B/ d
  39. #include <asm/hardware/edma.h>
    & z' x; {$ m9 G2 z! b% {2 j5 V
  40. 0 d8 d/ j, r+ Y+ G: V$ i5 G6 a
  41. #undef EDMA3_DEBUG
    - N9 }/ N) L" B6 i$ z8 Z
  42. /*#define EDMA3_DEBUG*/
    4 e: K2 ?4 U0 T3 B% k2 j5 l
  43. 1 k0 Z+ Y2 X/ b" [. I
  44. #ifdef EDMA3_DEBUG
    : r8 E8 S8 z: d, @9 P5 r& X' j
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    7 S5 r3 U( e0 v% O
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    / _$ `( A* a$ S% M' o) S# y. M0 d9 X
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    6 _" T+ o6 I  p3 y$ e9 \1 v* m
  48. #else( H, A0 T: m4 A# M0 |$ h
  49. #define DMA_PRINTK( x... )
    * A5 N% k( g: q6 j' X
  50. #define DMA_FN_IN
    5 J% @3 C$ H0 O
  51. #define DMA_FN_OUT" t3 F' I- S! J- `! f$ `% `
  52. #endif" S* N( S9 H0 @% ~

  53. / p6 `: r# U2 W& v5 |1 h
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768); I/ y" ^$ ~) A1 z$ v
  55. #define STATIC_SHIFT                3
    7 @$ k! y5 B. T) e& m
  56. #define TCINTEN_SHIFT               20- }$ b) ~$ t9 A- A
  57. #define ITCINTEN_SHIFT              21# @3 Z( ~8 ?# g+ x" b& i0 G
  58. #define TCCHEN_SHIFT                22/ e. I1 H# [8 n4 c/ w1 z9 Q
  59. #define ITCCHEN_SHIFT               23
    & q# a/ j* W8 |% I2 M" c
  60. + {6 G- d' i3 n+ {$ V/ q4 v
  61. static volatile int irqraised1 = 0;5 {1 \1 E6 o  ]
  62. static volatile int irqraised2 = 0;# [* z0 Q  _9 o5 Q0 r) v+ f
  63. ! |4 a& p8 x7 l: ]
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 x: N2 g, S& d+ X% x" a8 v( R* @
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' n- [- J; A7 V& _. Y* k2 x, f6 h
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 V" m( v* }; ~! a( c8 f! X
  67. 1 i1 u4 x: v# l& k+ O5 `9 U
  68. dma_addr_t dmaphyssrc1 = 0;
    ; W3 v) M) x3 g% k
  69. dma_addr_t dmaphyssrc2 = 0;
    0 {/ [/ l. [' b0 x6 y% X& ^" U
  70. dma_addr_t dmaphysdest1 = 0;2 U3 H: C. x4 p6 }8 ?& L
  71. dma_addr_t dmaphysdest2 = 0;, G& G) Y; h6 p: n- g
  72. 8 j3 n. \$ Y# Q4 z
  73. char *dmabufsrc1 = NULL;
    $ g2 B  Z, K/ x* L
  74. char *dmabufsrc2 = NULL;+ x( O3 b2 }+ r/ ^! T4 ^
  75. char *dmabufdest1 = NULL;1 m2 S+ a7 J9 ]2 X  u
  76. char *dmabufdest2 = NULL;
    ( z7 V4 s0 ?) s" Z6 t. w8 n6 ^

  77. ! Y: h' C8 K* K
  78. static int acnt = 512;
    / i6 H( f8 j2 M0 T! @  U
  79. static int bcnt = 8;. n4 k# b; \  g9 e  U$ v$ y' X! j
  80. static int ccnt = 8;
    & f/ }$ B/ T4 h! ^0 R) g. [' E, b

  81. 5 I6 R2 G, m: @$ C
  82. module_param(acnt, int, S_IRUGO);
    9 O" y7 l8 k& Q) i
  83. module_param(bcnt, int, S_IRUGO);1 v' D) v; l" Q7 _$ j0 ~
  84. module_param(ccnt, int, S_IRUGO);
复制代码
) r/ O3 Z% C0 K! H; z4 s
) O& d7 R) H. h& T1 T' u9 a
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用5 m5 E( K3 r  u2 E7 I
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
: a$ Q6 p1 a! G4 J     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。% x* J3 z) u6 o! N0 o" n
% F0 |) l) z+ w( N
! M" y* \( C$ p  |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 09:10 , Processed in 0.039547 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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