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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 * |0 |8 R5 b$ l) v) C7 s$ }
  1. [code]EDMA sample test application0 u& a4 V1 }2 x8 G
  2. /*  }( N2 ~! r- [2 A
  3. * edma_test.c: X& h% X2 e6 v' d( Y3 u
  4. *
    0 V& V/ `, U) Y/ l) R# f
  5. * brief  EDMA3 Test Application
    $ ]3 H+ W/ Z7 {; P" Y4 y; |
  6. *+ d. [/ J3 b# [# ]4 _
  7. *   This file contains EDMA3 Test code.5 X$ C+ }* H6 B9 t( ]
  8. */ p& M5 z3 V6 I: R2 P& [! K
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE1 U" v5 T  Y& |! F
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT2 R5 o8 m/ X0 }" \/ R$ H
  11. *         TO CHANGE.
    ' B% k7 H) V; V2 L9 R
  12. *1 C( k3 D: o$ V
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/5 ]) n7 V9 a4 H
  14. *
    ( }' b; V0 q+ r' C# A1 q
  15. * This program is free software; you can redistribute it and/or
    2 W, t' I* ^' r2 Y$ A/ z7 Q3 @
  16. * modify it under the terms of the GNU General Public License as
    - N+ t7 j/ O- Y3 h/ S) x
  17. * published by the Free Software Foundation version 2.
    9 Z, i  m: n; W2 D# p
  18. *6 ^, A0 i8 K& ]8 ?
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any( Y6 x0 ]# ?; N
  20. * kind, whether express or implied; without even the implied warranty
    ' a/ I- d  G9 H, j
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    6 k; y* L5 l, J* d
  22. * GNU General Public License for more details.# ]7 d0 r: b. e& t, h
  23. */
      n, Q( i5 F; _, W

  24. , S* q5 Z7 w# [% L1 \+ f3 W9 p
  25. #include <linux/module.h>
    1 W: D/ B( a* i
  26. #include <linux/init.h>$ \, e  B  |& c/ K& J
  27. #include <linux/errno.h>! e  t( Z9 N" r+ b2 y7 B. [
  28. #include <linux/types.h>
    ) n  |) y$ M( J& J
  29. #include <linux/interrupt.h>8 N* B0 Z  ~# l
  30. #include <asm/io.h>5 c$ u/ o3 K$ p% I) Q
  31. #include <linux/moduleparam.h>
    ' v! D  |: V! _
  32. #include <linux/sysctl.h># d( i3 y8 F3 f; m; C5 V
  33. #include <linux/mm.h>
    - |. N" c: ~7 y
  34. #include <linux/dma-mapping.h>  a' K/ ~  K. \! X% t

  35. 8 ?; [1 C$ L# S" _" L
  36. #include <mach/memory.h>
    : V2 m1 p, K, e- p- A
  37. #include <mach/hardware.h>
    3 X4 n/ g: a5 j+ m  i7 W: h
  38. #include <mach/irqs.h>7 i, G+ C  Q3 h
  39. #include <asm/hardware/edma.h>  F( Q: Y" P# l8 K0 i- H" @# k

  40. : |' I: R+ G4 ]' y0 R
  41. #undef EDMA3_DEBUG
    4 C2 F3 V8 f% r; k
  42. /*#define EDMA3_DEBUG*/
    ( ~' y0 i6 p; V( J* ~1 T

  43. ! y: m3 B# x8 p
  44. #ifdef EDMA3_DEBUG) Z2 X* O! x& r* v
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)3 l/ _0 }, f7 M4 C9 ^1 ^
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    6 ^5 f. {. i0 m/ o; u+ O1 A
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)# C, ~0 V7 t) M) D4 e" v6 Y  O
  48. #else
      x9 O- k/ l5 @& z. i
  49. #define DMA_PRINTK( x... )9 \$ E! V" U9 t) N0 a
  50. #define DMA_FN_IN
    - w' t+ Q- M8 r$ b( S
  51. #define DMA_FN_OUT+ D6 v" A1 U7 S9 P% n$ X
  52. #endif
    - Q8 s) H; S9 ]; D
  53. + P+ T* }6 n3 Z+ B9 Y' Y
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    % }6 C' G. k3 ~
  55. #define STATIC_SHIFT                3
    - b. {! {' B/ B1 U
  56. #define TCINTEN_SHIFT               20
    . j& h* \7 @. n  h# \
  57. #define ITCINTEN_SHIFT              21
    8 F$ H. x( @" \. L
  58. #define TCCHEN_SHIFT                22, J$ ?9 s! z6 c. [/ v/ v
  59. #define ITCCHEN_SHIFT               23" e3 R5 v/ `7 z( q% L) V$ r
  60. / |( k, n( T0 Y8 H) b4 r
  61. static volatile int irqraised1 = 0;
    , r- ^( W6 I, K; G
  62. static volatile int irqraised2 = 0;
    4 M1 J8 ~- U3 E2 n
  63. 1 M' c; j% C. J
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    6 o$ |. n! ^1 a& F2 @5 Q% g
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
      h0 U, Y. v+ t5 t9 i
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - ~4 T( k7 ^& I3 p$ F

  67. 2 \* V" q' t9 h' L$ T
  68. dma_addr_t dmaphyssrc1 = 0;
    + y+ Q3 I4 b3 C9 m: ?
  69. dma_addr_t dmaphyssrc2 = 0;
    + a3 ^" V3 N9 [$ Z8 A& p
  70. dma_addr_t dmaphysdest1 = 0;1 H, p# R; T( q& v  K# k
  71. dma_addr_t dmaphysdest2 = 0;
    2 e9 S# h# F& c! G! z8 P
  72. 1 L; Q- Z4 z; \3 A; o5 `% @
  73. char *dmabufsrc1 = NULL;
    * m6 n- {" ]8 q+ W* Y- \
  74. char *dmabufsrc2 = NULL;  F% s) {! q& B% q
  75. char *dmabufdest1 = NULL;
    & t5 t. v$ H! e  [
  76. char *dmabufdest2 = NULL;9 A8 }. {; ~" y" O4 l- {5 y

  77. ) I5 ~0 i  H/ I: T+ {: y4 \+ a! j
  78. static int acnt = 512;
      d# I* ]! @/ x* I
  79. static int bcnt = 8;
      |, w. V2 \7 L6 g( l
  80. static int ccnt = 8;* |7 I8 A, ]* ?: w4 q1 V
  81. % o4 v1 e' v% R  s) ~& }. r# G3 X. b
  82. module_param(acnt, int, S_IRUGO);
    5 _4 i& w0 I$ {  K% [2 [% ~$ ]
  83. module_param(bcnt, int, S_IRUGO);
    % |# K6 P6 g* h  q5 g
  84. module_param(ccnt, int, S_IRUGO);
复制代码
# p0 m3 {$ \. d# ]7 D
; G: D" R2 w  j! r/ Y) \
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用( V  b( h& f+ T  k- y
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。" R2 U" M, Z9 ]9 O: u; n' r" }
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
; k0 m3 W% M" A% u! h5 f/ T' E/ I1 C
/ C" ?8 i5 c/ v- G, z
& s; Q# }2 s+ y6 _* r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-2 13:54 , Processed in 0.039786 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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