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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
+ W+ ?6 V% V. s4 i% w$ `
  1. [code]EDMA sample test application6 q  \4 k3 U  }- }$ u- ^
  2. /*
    3 Y4 q! X$ Q! F1 }
  3. * edma_test.c
    7 t- b1 b0 h4 n: |
  4. *; X' D9 A# c3 m' Y2 ]! k3 E
  5. * brief  EDMA3 Test Application+ L8 C( y# v2 n& u9 ]& Q
  6. *2 z0 n% m/ Z( F0 ~' {
  7. *   This file contains EDMA3 Test code.
    * z0 L! M2 N: b7 {6 p' _6 L
  8. *
    6 D) w. e- I( [2 o+ J7 m7 i/ I
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE: e- }: a' t( ~, _! v
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    + t7 ~! N5 ]0 d" T
  11. *         TO CHANGE.& @# B" \  z7 r, D( O# Z
  12. *; x/ n- a) K! g1 H
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    3 `8 g; L5 a; a" J0 i  d
  14. *
    ; [* y+ A5 @& p* ~' k* C! }2 y6 ]
  15. * This program is free software; you can redistribute it and/or$ T1 N+ R" d+ `5 z1 l; m6 o8 C' M
  16. * modify it under the terms of the GNU General Public License as% t/ l0 M( `( V, q/ e: S" K
  17. * published by the Free Software Foundation version 2.  k5 a/ R9 \8 W1 F
  18. *
    7 L# P) T; f9 \6 _$ m6 N. F
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    * V8 [6 _% x6 C( ?2 _
  20. * kind, whether express or implied; without even the implied warranty3 u) _# V% A3 h& S4 J
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# n) ?0 D4 P! F- C4 [
  22. * GNU General Public License for more details.
      U/ m; ~1 _% z3 c
  23. */
    # B, @$ M# f5 b! X' `& h

  24. $ l+ W( s# `- f5 ?) n! a
  25. #include <linux/module.h>$ D; u8 d0 p3 k  g3 z& }
  26. #include <linux/init.h>
    6 {* T2 d! P* N. P4 q" f8 h4 J. d
  27. #include <linux/errno.h>- \3 h& E5 M' k3 R( c
  28. #include <linux/types.h>8 G6 q5 I5 Q7 a! p. x0 Q" w7 K
  29. #include <linux/interrupt.h>3 g7 k: c* I, q* h
  30. #include <asm/io.h>
    ( x) ?3 i2 G; y9 M5 G; \
  31. #include <linux/moduleparam.h>5 R8 V! `6 ~) K" K4 Y- y
  32. #include <linux/sysctl.h>
    2 y" Z1 n' E  S8 `' m
  33. #include <linux/mm.h>) r8 |1 @$ E2 T) D; H/ @
  34. #include <linux/dma-mapping.h>/ {) O9 Y, j: L2 h. ^; n

  35.   Q4 U( N1 @5 @
  36. #include <mach/memory.h>
    & W6 C* ^' Y; |8 a* z, j3 w  U
  37. #include <mach/hardware.h>
    0 x, T* z" w; b6 t' T
  38. #include <mach/irqs.h>" ~2 W/ \3 Z4 L5 f; k
  39. #include <asm/hardware/edma.h>9 Z0 y9 H4 g2 n+ t! b  _
  40.   o3 ~& m. s( u. E
  41. #undef EDMA3_DEBUG
    : e1 i3 a: {- m( l9 H* i. x5 U. p6 ?
  42. /*#define EDMA3_DEBUG*/
    ; `; W# Z; G4 v6 ~
  43. # [" J* M6 t: z, ~) ^2 i$ W
  44. #ifdef EDMA3_DEBUG8 c% g$ C1 C& _2 n# A! U1 c) Q
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    7 x  o  I6 s7 o, F& }0 e
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)$ K% m. a& G- u2 R3 v( k8 d. m
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)( M) Z' u: W5 _
  48. #else; _4 w# c: Z' y- W2 q6 H
  49. #define DMA_PRINTK( x... )( s0 q$ G6 ?5 h2 q8 c5 j
  50. #define DMA_FN_IN4 d7 ^& t$ H& ~6 R8 o( D
  51. #define DMA_FN_OUT
    / r* t- I7 E. h3 q4 s4 e. E
  52. #endif: `7 f) l7 W% N% k/ i  A+ F
  53. , x* p& ]# b4 R2 j( |: H
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)5 |: J; V# g2 ?/ t( \
  55. #define STATIC_SHIFT                3, m* ]/ \( m. u
  56. #define TCINTEN_SHIFT               20- q4 v. q. k+ Y" X+ c. }* u" X( o
  57. #define ITCINTEN_SHIFT              21  a6 _9 A3 g. C# m7 z$ E  `
  58. #define TCCHEN_SHIFT                22; p! o" O1 c$ [+ F
  59. #define ITCCHEN_SHIFT               23
    # [0 S% S2 E2 Y% ?
  60. $ C) f: v  _9 B7 D& s
  61. static volatile int irqraised1 = 0;0 w4 C8 B% \, Y3 m2 |: {
  62. static volatile int irqraised2 = 0;# q6 J% U; O4 v3 R( B
  63. ) @6 S6 ~/ D; C
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * b* C. Z, m- g5 K8 z5 i
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ R2 A, h8 O+ K( i% `8 f- K( J$ u' p
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# u6 v1 p% L& O1 c5 n! t8 {  ^
  67. 8 a3 Q$ k, e6 }: t/ p
  68. dma_addr_t dmaphyssrc1 = 0;0 c1 ]5 [' U5 z
  69. dma_addr_t dmaphyssrc2 = 0;4 U( m5 a0 Z1 k& {, w! t
  70. dma_addr_t dmaphysdest1 = 0;
    ' t' g  c4 q. Y# ?. C, _" b+ t
  71. dma_addr_t dmaphysdest2 = 0;
    % z: G) V0 p6 d8 }7 I, I* S
  72.   w9 r8 K  Q4 Z! ~+ x
  73. char *dmabufsrc1 = NULL;
    1 m. h" A9 G  b  q7 n
  74. char *dmabufsrc2 = NULL;
    ( b+ \4 l; W0 u  E" v
  75. char *dmabufdest1 = NULL;
    : u" g5 t, e$ H/ ?! z5 @- ?$ Y$ H
  76. char *dmabufdest2 = NULL;
    ( _- F2 y$ B2 k0 u# u( |
  77.   q2 h4 }3 i0 t
  78. static int acnt = 512;/ k; a  [+ v2 f3 n# U, p
  79. static int bcnt = 8;
    ( L# `' j  C, K" C  x: j- ^8 N
  80. static int ccnt = 8;
    / j, @- }2 |5 J' ~' R  c
  81. ( ^$ b- `2 `% _. E1 d
  82. module_param(acnt, int, S_IRUGO);
    + b3 T& i7 ?; s' \1 A7 I
  83. module_param(bcnt, int, S_IRUGO);
    9 s" N2 t. o; v$ \' B& o
  84. module_param(ccnt, int, S_IRUGO);
复制代码
/ r8 Q: }- T* k+ r1 E- B
6 q; Q0 [- L1 d' k# M" L2 u4 B
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 D0 Z, G( s1 C- U9 i: ?
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。- T8 M  B" c1 C' K9 t3 B7 g
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。2 [( r0 x  `7 B9 a* j
# o- |7 Q. {. A* |+ I: W
4 e3 `1 f# U) A) _! Y0 q- W% b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-26 19:40 , Processed in 0.044707 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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