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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ( H+ @5 e3 o% U% W# ^  z
  1. [code]EDMA sample test application4 Y1 Z8 N; a* e# {# Z
  2. /*8 m0 v5 @' W8 k4 h2 i
  3. * edma_test.c
    " B0 y  O) b' ?& ~/ J; {
  4. *
    3 h7 H# d& R& [/ l$ m' E
  5. * brief  EDMA3 Test Application8 |& W  ?: Q! C
  6. *6 C) R6 F9 z9 o4 A  a
  7. *   This file contains EDMA3 Test code.: D! M6 `& [  |, m  n5 {1 H
  8. *
    " y, I& v; d; T  t
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    4 O/ r& V7 n! ^5 E, t% h5 m
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    4 r  A- ?$ G# Y; C9 @2 X" D* C
  11. *         TO CHANGE.
      ]7 v4 i- s3 W0 Q$ @# k& I8 j
  12. *0 q: {; D" U+ c" A) v: K& p
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/" o4 p% J9 U; l7 E
  14. *
    " j9 _/ Y0 K* g1 J# ~) j
  15. * This program is free software; you can redistribute it and/or
    ( X- R, F% w3 {5 L- J+ v: X% ^* \  Z
  16. * modify it under the terms of the GNU General Public License as' \* M1 q+ {9 B2 E7 N, R5 |  ~
  17. * published by the Free Software Foundation version 2.
    2 ~- ?6 j5 y6 Q1 L
  18. *1 L) x% D+ [6 p3 I
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    $ W9 }6 N9 E8 k; Q- |# J
  20. * kind, whether express or implied; without even the implied warranty
    ' {9 k' e+ p9 K' L8 o8 u: w
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    $ R* Y6 v3 \3 Q# A* w8 e4 o
  22. * GNU General Public License for more details.$ `( y8 \9 s5 }9 B, D. D& R
  23. */
    ; J2 T% m; O4 d$ {9 q. \

  24. . [' E# x" h0 S) L1 e
  25. #include <linux/module.h>; b3 T# p6 l$ ^7 t  K$ b
  26. #include <linux/init.h>
    ( ]3 i$ m9 |! X& D7 b: e0 `+ x9 t2 g
  27. #include <linux/errno.h>" |' B, m& l+ c) q! q
  28. #include <linux/types.h>
    8 C, X( n. G) |7 `, J
  29. #include <linux/interrupt.h>
    / [7 ?6 v, |8 r" ~& S9 t
  30. #include <asm/io.h>
    # z# k+ Y; P/ v1 _5 j
  31. #include <linux/moduleparam.h>
    6 |# n$ u6 \8 ~
  32. #include <linux/sysctl.h>5 L4 l4 D; q% Q* l7 c- M' j
  33. #include <linux/mm.h>3 {: k+ f5 U0 Q& |8 b1 ~
  34. #include <linux/dma-mapping.h>
    4 t' E, F+ n$ I; B- E
  35. ! g2 u+ W+ y. ?* [/ B3 v
  36. #include <mach/memory.h>* Z' w) C- e% J, p( ?  o) ?
  37. #include <mach/hardware.h>
    5 j+ q3 o2 P3 N- W/ h2 l
  38. #include <mach/irqs.h>
    ) s$ N5 Q; x* t+ F
  39. #include <asm/hardware/edma.h>" O4 i6 j4 E/ b! p+ A: t
  40. $ Y( n. _3 w5 ?9 a8 ^
  41. #undef EDMA3_DEBUG
    7 G4 O: X4 W- P
  42. /*#define EDMA3_DEBUG*/: c' e/ H9 ]& L' Z2 F7 S

  43. 4 K/ |1 N; p6 e% O4 h7 B
  44. #ifdef EDMA3_DEBUG
    ' t4 y- ~6 l% P' v* K! @; V; C
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)/ H: }! T5 B( j5 P4 C* Y
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)/ t2 U+ }7 N% x) j2 T0 n
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__); Q, [8 |, ?: S% G
  48. #else4 ?; l3 |' B6 u9 w1 M) g
  49. #define DMA_PRINTK( x... )
    ; f$ d3 |: i6 b% d) P+ @7 q: L
  50. #define DMA_FN_IN+ R! g2 S" X1 V1 U
  51. #define DMA_FN_OUT
    8 ?8 ]& T2 ~$ p* `$ |" C+ i* c
  52. #endif
    # e# ^" Q/ c; b
  53. $ P5 Y/ k" ?: X2 R2 X
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    : R8 O" u$ Q' i$ w& q; M
  55. #define STATIC_SHIFT                3
    " F/ N0 ]/ i1 N: D1 V( ?  w
  56. #define TCINTEN_SHIFT               207 {0 J- ~0 K& X9 a
  57. #define ITCINTEN_SHIFT              211 n; Q5 O! h6 u, R( h
  58. #define TCCHEN_SHIFT                223 g  _, V  s4 Q: V  Y# G3 V
  59. #define ITCCHEN_SHIFT               23
    & R1 Q8 J/ l; j6 Z3 b- T( U

  60. 5 ^/ A1 e/ H6 F8 }& N
  61. static volatile int irqraised1 = 0;
    6 n: V7 u' f% A/ p+ U
  62. static volatile int irqraised2 = 0;
    1 d& s! L( O# y9 G' o- x

  63. , W5 n# \5 h  [/ q: u$ y3 g
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);; {+ M/ G; ~/ W1 T# D! j& S/ f0 Z
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
      S; e6 z! _4 A& f7 |4 ?4 A4 k) j
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ E7 r4 v: U* ^/ V$ z( z

  67. $ {5 M; v% ~) r- w$ j! m
  68. dma_addr_t dmaphyssrc1 = 0;
    + J5 s: T, u0 w/ @, p
  69. dma_addr_t dmaphyssrc2 = 0;
    , W' L9 _6 f5 E/ D* w( Y- M3 w
  70. dma_addr_t dmaphysdest1 = 0;& {3 t# F( @, |3 \4 M* u8 u
  71. dma_addr_t dmaphysdest2 = 0;
    0 L; z- r7 v& S  |9 J2 |4 \
  72. . X" B( v1 ^7 o( d# \
  73. char *dmabufsrc1 = NULL;/ Y: W* G: _* k6 M' S
  74. char *dmabufsrc2 = NULL;2 h! f# p9 Z5 j, a' d* c! Y) P
  75. char *dmabufdest1 = NULL;
    , q: n( @9 X" Q' K7 ^' A& j+ q( p: j
  76. char *dmabufdest2 = NULL;  I1 q0 Q$ k2 a$ }* d( I& N8 I

  77. 0 Z- i% ~: J* B$ D  s
  78. static int acnt = 512;
    9 P$ l5 n$ E1 O: F4 j( g  n
  79. static int bcnt = 8;
    9 t% X" t# O* B) K; U
  80. static int ccnt = 8;
    5 o  x2 I5 U  r- D, S& R0 |
  81. ) y& I, R& E" n
  82. module_param(acnt, int, S_IRUGO);$ p9 c6 W9 C/ e) h& k1 c
  83. module_param(bcnt, int, S_IRUGO);$ Q# U0 z+ ~& K* @' E5 b& o: T
  84. module_param(ccnt, int, S_IRUGO);
复制代码
' q) |! ^, u3 X9 ?8 w5 D
7 R! W3 P0 g. ~
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
' O! R, x. b. E4 f! h' |5 o/ sarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。. ]) o5 @8 `. c3 Y0 o: b
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
$ e; ^7 g, ]( }( x4 T  E
. i  I/ b* A3 Z* j4 M) m2 |
' b8 {3 S% a. D( G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-6 03:34 , Processed in 0.040157 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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