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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
& J& x; T$ R8 Y$ r  x  F' j
  1. [code]EDMA sample test application% K2 ?' r8 g6 N8 t, S
  2. /*$ n0 _  r) L# j0 x$ b8 W$ r
  3. * edma_test.c
    + B  X' Q( D& P9 I( m7 G* y& W
  4. *
    ) D" u" f5 e; A
  5. * brief  EDMA3 Test Application
    6 J1 G) k( h. r7 ^( N3 Z
  6. *' p, m0 t# N2 ^! `  Z
  7. *   This file contains EDMA3 Test code.- Y) ^* W; z/ I, C9 h* R- r) u% `! V6 x
  8. *% X. Q4 Z. `; W, G
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE5 X2 b9 y2 m3 u, K) f5 ~( r& x( f
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT9 B  u- P  V+ ~4 M
  11. *         TO CHANGE.3 v& o% I3 E' O5 T- v4 {+ [0 b' o
  12. *
    / i0 Q# G& o0 c( g, H
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    4 P. f1 n6 f7 }' k$ f4 A
  14. *
    8 J# C0 c2 W/ g
  15. * This program is free software; you can redistribute it and/or
    9 \" r8 H; y+ e+ Q- A; U4 g
  16. * modify it under the terms of the GNU General Public License as8 U; P8 a) d) s( y) g8 B
  17. * published by the Free Software Foundation version 2.
    6 e+ a4 j/ e. P7 j; A- A' i# c
  18. */ N7 M, P- S$ g  ]) }& S! Q' v/ k
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ( i+ [- o& X! p, {1 }+ S
  20. * kind, whether express or implied; without even the implied warranty9 F  v* Y5 P4 u' x8 o7 i, O. I
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    + S% p  Z" z/ q  k
  22. * GNU General Public License for more details.+ T" ^) U6 S$ W" b* F5 ]/ N
  23. */
    ( ]5 _& V( ?' ~9 H) W/ d) p3 T

  24. / c' z* q: L2 K: u" l( P& g' {9 z
  25. #include <linux/module.h>
    3 g. M% x% y, Y
  26. #include <linux/init.h>9 G# _3 P0 w1 h3 w
  27. #include <linux/errno.h>* i8 h+ @2 B" J( L: F2 d' _, |
  28. #include <linux/types.h>
    0 K+ _$ p3 s* w
  29. #include <linux/interrupt.h>5 k4 }% |& e0 E* p4 F1 v
  30. #include <asm/io.h>* x/ u& q9 C  k8 h- f$ A
  31. #include <linux/moduleparam.h>+ D$ p! }6 @* e; z- A( p
  32. #include <linux/sysctl.h>
    / `, T$ g3 q0 Z. r1 g. d, f( A; L) ~  t
  33. #include <linux/mm.h>$ ], A6 R  C/ f- d3 H. X* K
  34. #include <linux/dma-mapping.h># \* K% h9 K$ E/ `2 ^& T& ?* `* @

  35. 3 j$ L9 ^- R  B1 w$ Q7 A
  36. #include <mach/memory.h>4 n, H! V2 P5 [, P# L
  37. #include <mach/hardware.h>* X9 I  o& K8 j/ {. `( v
  38. #include <mach/irqs.h>/ R+ X9 |6 u) {2 U) M+ d
  39. #include <asm/hardware/edma.h>" ?8 ^/ }& M9 ?2 u/ u' y! Y1 X
  40. $ I1 u" w5 z" m) d. G
  41. #undef EDMA3_DEBUG- S, O) |* U; x$ ~) q
  42. /*#define EDMA3_DEBUG*/+ ?# P- K, }) k+ F$ Q4 I

  43. " N" D# ~+ q4 j: k
  44. #ifdef EDMA3_DEBUG4 ?  n- ?/ I* Y. i6 c+ ]# g1 B: J
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 Y, M" t1 x3 |1 F& W
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    9 U* z* Z3 [+ Y8 V
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    1 q1 g8 q+ g1 i; ^7 b! E( A; s
  48. #else
    $ P" v2 K9 e. _6 f
  49. #define DMA_PRINTK( x... )
    : b/ L  A5 Z; \
  50. #define DMA_FN_IN
    " F; G4 A3 I7 ?/ G
  51. #define DMA_FN_OUT
    1 `4 A4 ~7 H; R" ~! c& i
  52. #endif" ^# @( U- X/ X$ B; H1 J5 @

  53. ) M  u/ ^0 k& O: {% s
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    0 y3 Z& S( I# m4 y5 D
  55. #define STATIC_SHIFT                3
    9 o' C) R7 W8 `
  56. #define TCINTEN_SHIFT               20+ Q) L7 w: Y; k/ H
  57. #define ITCINTEN_SHIFT              21
    7 \% }2 S. Y; M9 S. _* t5 |! @
  58. #define TCCHEN_SHIFT                22
    7 j; P: D, Y! |4 Y! }
  59. #define ITCCHEN_SHIFT               23
    ' N+ l9 P. H0 D0 A1 _! k( j

  60. 0 a% ~6 g: j- O1 R+ `
  61. static volatile int irqraised1 = 0;. K2 O1 e- w! T. T9 J) |: t6 l
  62. static volatile int irqraised2 = 0;2 `2 p+ g1 _9 ]9 }( v( z8 i0 A$ s6 m

  63. $ p. r% u! ]4 z" P) w6 K, m' w
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  s7 x: ^( t: a; B, |: ~2 @
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) }1 B# T2 J3 a' t, D
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);1 y' Q: n' ]: t& |: `% D. W

  67. . B0 b( \6 d% V, d4 K# B
  68. dma_addr_t dmaphyssrc1 = 0;
    ) s2 H; E7 r" f: C: u7 @3 ^
  69. dma_addr_t dmaphyssrc2 = 0;
    ! r. [9 E2 X7 u7 G
  70. dma_addr_t dmaphysdest1 = 0;
    8 Q! y. t( U( K1 ^; W  b% e
  71. dma_addr_t dmaphysdest2 = 0;( p/ {' m9 D) p3 V9 j; w$ K

  72. * \& @2 R5 c5 B; {2 E
  73. char *dmabufsrc1 = NULL;/ b2 F: x& i2 O
  74. char *dmabufsrc2 = NULL;6 Z  Q8 X! o' U% V6 i
  75. char *dmabufdest1 = NULL;
    2 H$ t$ ]. e6 b0 a
  76. char *dmabufdest2 = NULL;/ h) v6 }. G! d1 J
  77. 0 \8 b& C% q, r) @
  78. static int acnt = 512;9 v, [# R- O0 l1 N) D
  79. static int bcnt = 8;1 z! T! D  o5 ~' s6 t; w" b
  80. static int ccnt = 8;% N# E/ q* f) F: v& k. i+ Z
  81. 1 E) ~  h4 {, q9 h0 Z7 M+ T0 n
  82. module_param(acnt, int, S_IRUGO);
    9 U8 A2 B/ Z2 V5 o' R# c
  83. module_param(bcnt, int, S_IRUGO);( q2 R* R: q: b) [; r
  84. module_param(ccnt, int, S_IRUGO);
复制代码
$ t2 w' r; B- N$ U
! l& B' h' v& @1 F* o
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
9 Y- M( T+ K' i0 A. W$ h  s, Zarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。* W# T: b0 a/ N3 \+ o! Q. F  S
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。1 v; Y$ g6 t/ L* D4 q
! c( o/ x2 E# \+ A6 D: x4 ~$ P8 Y

1 ~  S( r0 J3 |# |! W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-25 21:35 , Processed in 0.036963 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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