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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
+ {& A4 _, M) a0 Q
  1. [code]EDMA sample test application5 e4 ^- C! I+ R6 u$ M. m
  2. /*
    - r6 R& h' x! S# g
  3. * edma_test.c- y, b9 t' w5 Q( b, Y
  4. *
    ! r! Z# R: u' b! n' v. G3 Y( _
  5. * brief  EDMA3 Test Application0 o& g& t, Z8 F; b$ I& t
  6. *: L, G/ I9 b/ g* I& g/ L
  7. *   This file contains EDMA3 Test code.  q, ?3 e/ ^- S( u# w4 d7 |
  8. *
    ) P& ]# u( @% u) V# h& z- `. ]' W% t
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    3 L! h  F; c) q2 T2 S9 q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT, v3 q% d, H- a% }3 k7 U( g8 M& H8 z
  11. *         TO CHANGE.* H& i0 J# m/ \
  12. *- {6 f' Z! Q" _$ \, {3 J
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    8 F( W2 Q5 _4 L3 S, X8 M8 B
  14. *( Z( W9 @, p+ I$ d
  15. * This program is free software; you can redistribute it and/or) a2 U& Q2 L) T# ^" X4 W
  16. * modify it under the terms of the GNU General Public License as  ^! Y$ _: r  A7 c( }
  17. * published by the Free Software Foundation version 2.5 P. S  b  ^5 U0 N
  18. *
    0 _9 ]; s% r& p
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any  p  |- e8 M# S; t% G- Z. j
  20. * kind, whether express or implied; without even the implied warranty
    * G$ m; k0 R5 C% @* j& U
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the% U/ v5 I1 v( e5 O& C; f0 i, u3 S
  22. * GNU General Public License for more details.
    # m/ j' D; e/ r' m% w
  23. */9 C/ p" _' ~3 H# t1 Y: r
  24. 4 j6 r8 L5 F2 Y7 q, k/ @0 M! x5 Z$ u
  25. #include <linux/module.h>
    : I/ p1 E5 B8 k) B( {: h3 d7 B
  26. #include <linux/init.h>
    3 b0 G& y% v' e5 K) N0 N
  27. #include <linux/errno.h>4 b" c* d' p0 g/ J
  28. #include <linux/types.h>
    : B5 x1 @3 @! V" G+ C
  29. #include <linux/interrupt.h>* p. U) ]4 U( {2 R
  30. #include <asm/io.h>
    , N3 X* `5 o/ o4 a" i5 o5 b
  31. #include <linux/moduleparam.h>
    / x& V0 z& {! m: H+ O
  32. #include <linux/sysctl.h>
    8 n8 S. N7 e& n) ]; L" M5 F
  33. #include <linux/mm.h>
      ]; Q& G$ p2 k) v  `
  34. #include <linux/dma-mapping.h>* W$ k) j2 @( f3 M! X

  35. & Q( R! v/ Y3 X$ m0 G
  36. #include <mach/memory.h>+ ?6 H+ W* Y/ D" H6 n. u
  37. #include <mach/hardware.h>8 m( I, u$ i( w0 h
  38. #include <mach/irqs.h>' \' ^/ \- `( G8 l
  39. #include <asm/hardware/edma.h>
    $ ^3 X" f3 b6 `# m

  40. + {$ J. s* W( F$ r+ o* \# D
  41. #undef EDMA3_DEBUG9 Z; V7 O- Q+ w1 l" i
  42. /*#define EDMA3_DEBUG*/
    : J3 O- B8 U$ b# F' ~5 l6 U
  43. ; {1 h1 N. T( @
  44. #ifdef EDMA3_DEBUG
      _7 A$ C% _/ Y
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    4 L: b& c, N# Z) s& d& y
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ( o( g8 y8 A4 ?+ K
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    4 ^* b. t! @/ T5 N: B8 C
  48. #else4 N& X& x2 k& K" C: B+ S
  49. #define DMA_PRINTK( x... )- G, c; f9 K# I
  50. #define DMA_FN_IN1 t6 U; A7 ]3 M# o2 e1 Z# y
  51. #define DMA_FN_OUT
    7 ~/ G# V) W6 V9 r1 n$ _! ~
  52. #endif4 J0 m" q6 f5 k' l$ z2 Y
  53. " B4 N$ f$ y& }+ }1 ~- E% y2 c0 C
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768); M4 }, m9 x* {7 G0 Y
  55. #define STATIC_SHIFT                3
    . r: d1 l5 C0 |" N: ^; \1 L/ r4 B
  56. #define TCINTEN_SHIFT               20
    ) o( w+ t3 g6 b1 k# _" K4 a' g
  57. #define ITCINTEN_SHIFT              21
    & i' {& s% f! Z# D. ^$ W
  58. #define TCCHEN_SHIFT                22
    1 g0 T7 E/ u7 o  A: q. J# c' g
  59. #define ITCCHEN_SHIFT               23- P& D  S. s$ F) x, _4 ]" Z

  60. 1 n$ J; N: S$ F% U) ~/ B$ u
  61. static volatile int irqraised1 = 0;" A! R9 P+ S7 J1 }
  62. static volatile int irqraised2 = 0;
    1 }/ |% {+ @3 p- W  g
  63. ( [1 b. v0 w% x1 z9 ^
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) _: r7 f) z2 |1 K3 C6 D
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: r+ x; _5 h5 P  H/ W! g
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * p- e2 \* n4 X& q
  67. " O4 E; B5 X% ~9 k  ?/ q" [
  68. dma_addr_t dmaphyssrc1 = 0;/ l8 a3 B- L& \5 ~' D/ R# _
  69. dma_addr_t dmaphyssrc2 = 0;0 i& H) l+ w( U4 s3 N1 Y. z7 ~7 U
  70. dma_addr_t dmaphysdest1 = 0;
    # j- O4 c" l/ w, _3 F3 D% H8 {$ S
  71. dma_addr_t dmaphysdest2 = 0;
    ) O# u* s0 S9 {; v; X1 h6 L9 M

  72. ( O9 `: q9 d/ |% Y( e
  73. char *dmabufsrc1 = NULL;
    . L( ~; B. I2 d5 ~
  74. char *dmabufsrc2 = NULL;; G; \( P8 L3 a. Y1 ~" v$ C+ m2 j6 x
  75. char *dmabufdest1 = NULL;% f' `" z8 N4 F- }" j  T2 y/ C
  76. char *dmabufdest2 = NULL;
    ' e3 g5 s; M: ?+ K
  77. / z! f; }# D* c1 ?3 v% @* n& U
  78. static int acnt = 512;
    1 G/ I! S( [7 j, f" u
  79. static int bcnt = 8;
    6 R/ g4 _. {" |# f
  80. static int ccnt = 8;
    0 m6 Q' S9 q5 }5 c4 n

  81. " N. {9 y9 Q. x9 A! b/ N) w
  82. module_param(acnt, int, S_IRUGO);
    3 q' B- W- h  k. \/ ~' F! U- ?
  83. module_param(bcnt, int, S_IRUGO);
    2 M* h' e9 i; o. J! u
  84. module_param(ccnt, int, S_IRUGO);
复制代码

6 O; }( c4 q7 E1 b# t* H( j( Z  l0 i+ U, f' c
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用# w. ?: l; _3 ]& w1 _
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
! {) o! r8 I0 }$ i0 k     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。& d: u: U+ `4 d$ r6 P
: Y5 w6 s& C, E: ^, V
$ L1 L! G% {; [/ Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-3 04:52 , Processed in 0.044317 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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