OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
6 v* d) ?4 i- h7 C& H5 }* v! I
  1. [code]EDMA sample test application( i# o: N7 M* N4 c7 y9 ^
  2. /*
    5 g& L* x: p. R- L; L: z
  3. * edma_test.c
      T7 i, j. g$ }% O% o* f$ e
  4. *
    9 X0 f% V/ n* ^2 D  a) G' j
  5. * brief  EDMA3 Test Application- F# n( b2 s0 h% E0 j1 }
  6. *
    / \; k! h! ?' l3 \
  7. *   This file contains EDMA3 Test code./ Z- H/ D( G1 R9 N
  8. *
    8 J5 m: G. l' N
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    0 d: F0 r' @( l; K  f( I
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    5 [; p7 j) I: b0 U
  11. *         TO CHANGE.' ]8 e5 B! u  X2 O7 ^. ]
  12. *
    7 i/ [1 z. `$ z) l/ B( H- v
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    9 s+ T2 u3 D" c/ P( B
  14. */ ~# j- q9 ]$ ?& N( E! B. E7 M) h
  15. * This program is free software; you can redistribute it and/or
    - t. d" @: r, {+ S/ D$ h4 m
  16. * modify it under the terms of the GNU General Public License as: ^# q. Y2 M6 ^8 x" J; j/ X' e  Z
  17. * published by the Free Software Foundation version 2.
    * r/ f. t2 Q7 ~$ z% o
  18. *0 _' g) Z& {5 W( j
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any6 N0 Q* a: L2 w3 r
  20. * kind, whether express or implied; without even the implied warranty
    , {7 x+ r  ]8 |% J4 b
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the9 m, N( F  f0 ?" r3 o; P
  22. * GNU General Public License for more details.
    5 C6 k; L$ Y' @! R
  23. */
    % x/ F- R. z+ j8 j' c
  24. 4 U" A# T. }/ V& g5 m7 ~
  25. #include <linux/module.h>
    / ~2 T" F; }( k; d
  26. #include <linux/init.h>
    " T- n7 m1 ?3 O$ ]5 U' z
  27. #include <linux/errno.h>
    ! c% P. S6 o1 X
  28. #include <linux/types.h>
    & B0 U; {% G0 g0 `
  29. #include <linux/interrupt.h>0 r1 O# x* `7 c4 Z; U& h
  30. #include <asm/io.h>
    9 ~% j& p5 c7 P7 K2 c* Y
  31. #include <linux/moduleparam.h>, o# L' g) X5 x# H6 [, L
  32. #include <linux/sysctl.h>% s. @4 t# q" g* C6 ~6 P
  33. #include <linux/mm.h>
    $ d5 a9 z8 w" M# z( b
  34. #include <linux/dma-mapping.h>
    5 X$ I( _5 u  A1 ?+ x4 ^
  35. # v4 L1 j& y) I; a3 L
  36. #include <mach/memory.h>
    & S, h% N) A6 B$ h0 {% f
  37. #include <mach/hardware.h>
    9 m* ?1 k5 O9 v6 @' Y# V3 }
  38. #include <mach/irqs.h>
    : r4 N  A' l: ?9 F* Y
  39. #include <asm/hardware/edma.h>
    ) q% O# c! t' y2 M( y

  40. * I1 q! |  u- z1 y1 t1 g" b
  41. #undef EDMA3_DEBUG% q+ }+ B* t* S7 N: _  |; [6 K
  42. /*#define EDMA3_DEBUG*/
      }! P% W' |: t" D2 q- b4 p$ h
  43. 9 X. Z- D- Y7 L6 S3 I/ J
  44. #ifdef EDMA3_DEBUG
    " R) H* S! j- x" _5 L
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    * F3 S. }0 K9 o- |. @4 I! D5 H  W
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__), y5 ?2 ?! Z6 C; L3 [% Y: l( K$ p2 {
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)! c( b6 H( h- `0 ~1 ]9 t
  48. #else3 c! k. T; {4 `! ^4 J
  49. #define DMA_PRINTK( x... )
    * B' f4 w; b+ s
  50. #define DMA_FN_IN( m% F5 ?2 b2 |$ {9 |6 Q* y
  51. #define DMA_FN_OUT
    4 q- C# y1 ~4 ^) Q
  52. #endif
    + V3 z% ^6 f; u' j$ n
  53. 0 J* k9 W7 l; j; M. @
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ; i0 Q4 }  o; `: |/ D
  55. #define STATIC_SHIFT                3
    5 P# y2 o* I, i* c
  56. #define TCINTEN_SHIFT               20
    4 b6 k( {5 V# {( w2 h: }
  57. #define ITCINTEN_SHIFT              21
    , C% L6 `6 s: C
  58. #define TCCHEN_SHIFT                22
    ) X( O' |. }" @4 ]2 ]& X% o
  59. #define ITCCHEN_SHIFT               23$ i) L% y- z8 l

  60. 0 Q# A( v) p$ P! U, _
  61. static volatile int irqraised1 = 0;
    2 R) ?% N  g* L/ H- M; ?! Q+ A6 w$ f
  62. static volatile int irqraised2 = 0;
    + ~2 p: T0 C- ?0 G9 M
  63. 1 v. H. ?( \# l' v$ V8 |
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 C( C8 J4 O& f2 J
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & l; u+ o% \$ \; {
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 u4 i6 e$ @5 k1 z/ J; t' g( Q
  67. 7 \, G0 ~; ?( Z# ~3 m
  68. dma_addr_t dmaphyssrc1 = 0;; _2 T7 J$ p0 S  j
  69. dma_addr_t dmaphyssrc2 = 0;
    - t. b9 r( s$ W% [4 k
  70. dma_addr_t dmaphysdest1 = 0;
    $ O6 D' a4 N+ O* ^: k
  71. dma_addr_t dmaphysdest2 = 0;2 k2 {" X. Y. z! W1 V
  72. 4 x4 u$ J! X$ y
  73. char *dmabufsrc1 = NULL;, `" Z7 b, o" P- e
  74. char *dmabufsrc2 = NULL;
    7 }: _  |' I" v: a5 ~
  75. char *dmabufdest1 = NULL;1 t- E. o4 i/ F9 f: e: Q6 }
  76. char *dmabufdest2 = NULL;8 |; {" x! R0 ]3 e
  77. ! d* y% f  _! ^, K& z
  78. static int acnt = 512;
    ( i. C9 C9 K1 @9 z
  79. static int bcnt = 8;2 P6 i( m9 e: ^* y$ S
  80. static int ccnt = 8;
    & m' n) I- V9 c. K/ }/ K
  81. . F" j% P6 v+ o  w" g& V/ V  c
  82. module_param(acnt, int, S_IRUGO);
    & x) L3 c9 X: r" m0 k/ v
  83. module_param(bcnt, int, S_IRUGO);! `% Q" o2 ^) M8 c3 e7 s
  84. module_param(ccnt, int, S_IRUGO);
复制代码
5 e, @& y$ y# X. d. `' v
# w& m: ?3 m/ y4 z$ `
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
: i4 [" ~6 B2 L7 Larm-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; B) o2 T6 l" T  R& b( y6 K     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
' i; ~3 v1 F" i3 I0 K4 {
, w- ?  h1 w( V: p) L# I
0 b  |! Y& ^5 ]# \2 T3 `' W; V& P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-17 09:48 , Processed in 0.039127 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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