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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 2 W9 a" w: k3 b6 f% H( c; p; z* T
  1. [code]EDMA sample test application. T/ S" ^& _7 V0 J4 O( t
  2. /*/ u! z: E5 K6 w- E+ i8 }
  3. * edma_test.c3 B' H% ~* R0 j: y% ~
  4. *
      P, a% X+ L3 r+ @0 o
  5. * brief  EDMA3 Test Application
    ' l& A5 d* b! z/ ~& H; a* W
  6. *4 M- Q7 I9 m; m  v) B5 D* ?/ v, Y
  7. *   This file contains EDMA3 Test code.1 N& K: W, p: k1 G% N" i7 s
  8. *
    ; _  F  }# S8 L
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    2 s' c  I1 U- ^1 b* E
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    * S$ g; \  g& e' p) m1 Q) C% K+ J- v, F
  11. *         TO CHANGE.
    9 t4 w( k+ |/ X0 u/ d; J
  12. *
    . Z9 [8 V, [% O7 a+ M
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/7 F6 z( C0 w8 c
  14. *
    7 X/ m, I5 s" m+ r1 v4 {5 b, H
  15. * This program is free software; you can redistribute it and/or& D8 N4 I' v) ~8 s) Y- {% u/ R8 Q  `
  16. * modify it under the terms of the GNU General Public License as" y3 D& W, E& ~5 f$ e( V( c) G4 y
  17. * published by the Free Software Foundation version 2.+ o1 e! Y9 s* ~1 A
  18. *6 K* d9 W! |# S7 K
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    : J% o/ p; |* {: H! X. ~& u- k$ V
  20. * kind, whether express or implied; without even the implied warranty* X; V+ d" I) a2 P8 G% A9 j" g
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the/ [) z4 L# @3 Z) [$ i; V6 f1 u" `
  22. * GNU General Public License for more details.
    5 P4 ]9 [* J6 g" T5 k+ g$ Y3 w$ Q
  23. */
      C, I# T2 x/ z/ t/ |) l2 s

  24. + ?1 g6 B" C" @  Q
  25. #include <linux/module.h># ]6 m; Z1 I6 _! E9 y* ~
  26. #include <linux/init.h>
    ! f* k0 C; ]; }2 M  f. N
  27. #include <linux/errno.h>
    / I0 w' N: Q! u7 o9 U# E
  28. #include <linux/types.h>. ^% X8 P5 V+ `; P1 X9 y, \
  29. #include <linux/interrupt.h>
    3 I+ M+ M( n0 p
  30. #include <asm/io.h>3 R3 u. [+ l2 {  w: \, a' I
  31. #include <linux/moduleparam.h>+ g' b% E6 q5 ]8 Z& M# p2 s
  32. #include <linux/sysctl.h>- S) {3 J9 e1 s2 }
  33. #include <linux/mm.h>& {, t6 g9 Q- a, j7 V" S
  34. #include <linux/dma-mapping.h>- t# L! P9 R" A# T" c9 q
  35. / L5 e8 M2 M8 E. b1 Y
  36. #include <mach/memory.h>7 ]- @* a. ]& u( v, E4 P9 ]' E2 b
  37. #include <mach/hardware.h>2 x  Y) t( b9 g$ g$ M! P7 a# W3 k6 s
  38. #include <mach/irqs.h>! s3 ?+ V9 |9 v
  39. #include <asm/hardware/edma.h>% t/ X* z+ M4 G  J. ~$ I
  40. . ~2 O+ Z; d9 K" y; e# p
  41. #undef EDMA3_DEBUG7 z* G% `. h3 o$ t" n# G* X
  42. /*#define EDMA3_DEBUG*/3 b2 y& H6 O8 Q# @
  43. 1 I5 V' Z3 h! ?: ~3 P( b3 e
  44. #ifdef EDMA3_DEBUG
    4 F" {1 S4 {: q) C* ^
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS), [  I  p) Q" u7 g' _
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    / c( }, Z3 c6 k) K( x
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    0 r1 H8 _$ d$ q* u/ V2 K
  48. #else
      K# G- L/ U9 H! e5 L
  49. #define DMA_PRINTK( x... )2 E) d; d, O/ T. E$ v
  50. #define DMA_FN_IN
    6 i8 X1 \: s/ h1 p3 G  J
  51. #define DMA_FN_OUT, I1 Y0 Z: V8 h) s
  52. #endif
    # S4 H4 e4 q/ {' @% F

  53. : V+ ^& R2 k& U  I2 j% s
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768). b- r; \5 q7 t9 g% F
  55. #define STATIC_SHIFT                3
    * ^0 T$ J) H6 H
  56. #define TCINTEN_SHIFT               20) Z, `3 A- ^# i- v/ A; q
  57. #define ITCINTEN_SHIFT              21
    9 x) }( r$ |2 P4 I. I3 u- _1 m; m
  58. #define TCCHEN_SHIFT                22; L0 m3 z- a. N; j1 y  Q& V- j
  59. #define ITCCHEN_SHIFT               23
    3 @9 `* l" [. T& x1 ^

  60.   {. h& o" [5 q$ T7 G( ~2 \
  61. static volatile int irqraised1 = 0;1 t1 H/ @, P7 d- S
  62. static volatile int irqraised2 = 0;
    * N& {0 \; ^8 c" S9 I0 {5 g1 d( k
  63. 7 r/ x5 K1 d2 `" z: O
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 D& t$ |8 ^/ s8 r3 u
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  l4 A8 b( a! _1 b, B$ \
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);1 i3 l, E( N/ q6 [3 D9 @
  67. % s' l, U# U/ s7 V& Z$ i/ X6 L
  68. dma_addr_t dmaphyssrc1 = 0;
    5 }, `1 x$ [. q
  69. dma_addr_t dmaphyssrc2 = 0;1 W. O! h4 f- v% z7 L% H: u, w
  70. dma_addr_t dmaphysdest1 = 0;
    0 L2 K* }% {) D- ~
  71. dma_addr_t dmaphysdest2 = 0;
    & ?5 V# h5 ^( a# \* l
  72. - m( k# G6 @  P( f# d. B/ ^
  73. char *dmabufsrc1 = NULL;! p" Y! }4 B& c, C* y+ f1 ^
  74. char *dmabufsrc2 = NULL;
    8 _5 G; s7 o' K: a
  75. char *dmabufdest1 = NULL;
      ]9 v0 y" n- h+ o
  76. char *dmabufdest2 = NULL;+ E- L# ?2 {; s* p0 r+ M
  77. . m5 L- L0 }1 J2 I4 a0 b) T$ \
  78. static int acnt = 512;) H2 H& i- W! V) j7 u8 H4 W, L
  79. static int bcnt = 8;
    0 K1 A; K8 B( ]- W2 h/ h
  80. static int ccnt = 8;) o  D( [. e4 _0 \: v' i0 M
  81. 9 m! ~6 @+ ^2 N& p2 `
  82. module_param(acnt, int, S_IRUGO);1 ^, ], `# O( a7 P* G. ^2 E  s* c
  83. module_param(bcnt, int, S_IRUGO);
    1 |% K1 R! n$ _' T
  84. module_param(ccnt, int, S_IRUGO);
复制代码

6 W3 m* T7 M- H$ W
. X" a+ |/ l7 z+ W" v/ }+ C      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用  b0 Z+ W+ n) `3 f; v% \% W
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。# F7 w; o$ ^0 l3 T# l
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
' R; P. B/ ~% _6 Z" G; ?7 a
( e6 S0 O5 b6 J' I. G' g8 J" q* d& Q& w* Q# ^1 e- B1 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-13 22:57 , Processed in 0.037282 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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