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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ) V$ R1 Q# @9 `8 p) V0 E
  1. [code]EDMA sample test application3 o. h: e0 C) e8 @0 Z" k% \# D" J
  2. /*
    ; j5 R. h. \: u# }( ~
  3. * edma_test.c) I1 @' N6 Q7 u3 {
  4. *
    4 J/ o! x% r; ~
  5. * brief  EDMA3 Test Application, e/ ?8 o3 o( j9 l& U
  6. *8 L: }8 k6 q5 w$ k8 x2 v
  7. *   This file contains EDMA3 Test code.
    0 V' v: x( K# s
  8. *2 T5 n( u( O9 |5 D& T
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE2 S, |: R: M" A6 r! ^
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT+ h8 ~; c0 a' K
  11. *         TO CHANGE.
    : e  @, A+ @& ]! p5 D4 E
  12. ** ^& n3 c; O# o6 K0 k& F1 s
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/3 t& a0 w4 M# g, T
  14. *; n6 Q2 v0 h& u2 w
  15. * This program is free software; you can redistribute it and/or
    : K$ Z! Q. ~2 P  }- J
  16. * modify it under the terms of the GNU General Public License as
    + p) `0 P- ]1 r
  17. * published by the Free Software Foundation version 2.+ I4 d6 @- k9 }3 O6 b
  18. *3 _" I/ G3 R8 v5 F$ S1 e
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any5 T6 l0 h7 y' B# X( L& m
  20. * kind, whether express or implied; without even the implied warranty2 ?  w0 L) m+ w3 ?
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    6 c* `' e0 E  T: `0 J. x
  22. * GNU General Public License for more details.
    5 p* a+ b" W, B. M5 R
  23. */
    $ I& A/ x# b5 G0 @; `9 U; F
  24. 7 B" @+ N9 g% D4 j$ R$ _
  25. #include <linux/module.h>2 ]% Y- @" f; A- p5 S9 Z: N- w% l0 n
  26. #include <linux/init.h>  P6 w1 }% G! h. y0 k+ t$ \9 D
  27. #include <linux/errno.h>" l) e5 C+ K, b6 _
  28. #include <linux/types.h># b% v% s  C: o* \3 i3 k1 T
  29. #include <linux/interrupt.h>
    9 g. }" B) l" T: |6 G
  30. #include <asm/io.h>
    8 j+ z0 A. W' n* z: P2 u8 v, B
  31. #include <linux/moduleparam.h>( C2 ^- d1 u# k* r; Z0 o
  32. #include <linux/sysctl.h>
    " u# j/ F( v6 S
  33. #include <linux/mm.h>
    # q* i) r5 Z, B0 l% {1 s( K0 p; m
  34. #include <linux/dma-mapping.h>* d$ }0 j  X2 Y
  35. $ E( E4 Y* L  j5 G, d
  36. #include <mach/memory.h>
    : x. u7 P! t8 G1 x0 s; z
  37. #include <mach/hardware.h>3 `6 s; N3 f9 I$ r4 L. F" S
  38. #include <mach/irqs.h>
    . G* f  K" I4 y) q
  39. #include <asm/hardware/edma.h>1 S, p) W9 i( g" r) s! {
  40. ) b# I# q. D8 R9 J% O) i% x* {
  41. #undef EDMA3_DEBUG
    . X/ K3 L* p" W2 b, Y7 G
  42. /*#define EDMA3_DEBUG*/
    6 y  v  M. r7 q6 v5 R+ e' P

  43. 7 T/ W( r) A, X, g8 D! w( Z
  44. #ifdef EDMA3_DEBUG
    4 r& U" z  i: y- H3 W  }# u% K8 K* M
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)0 G/ I* c! S+ p6 j9 G
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)3 N/ h* I" a! f3 O
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    , n# n' y' L4 v7 E/ M4 Q9 l
  48. #else
    * |/ C9 M' I2 Z7 N' j6 K
  49. #define DMA_PRINTK( x... )0 b% F/ [1 t& \0 @- F. U$ p
  50. #define DMA_FN_IN1 M5 M: R8 b. H# l, A
  51. #define DMA_FN_OUT/ V, H6 j: c6 g1 O. p* t: Q* Q) }
  52. #endif
    ; g6 A) S6 \: h

  53. 0 h0 ?+ G: J# Q
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    / F. b6 c( R; b% Y* Z1 i
  55. #define STATIC_SHIFT                3
    ' q- |8 w7 C9 G
  56. #define TCINTEN_SHIFT               20
    . m" G1 a) G) N* r0 R3 P
  57. #define ITCINTEN_SHIFT              21
    5 T/ J7 o  }6 S' K, h7 j% Q
  58. #define TCCHEN_SHIFT                22
    . ~" w9 S! t5 `. I% W
  59. #define ITCCHEN_SHIFT               231 `/ J4 [3 w5 Y! A' ]
  60. / l) G- o" f# g7 z& y
  61. static volatile int irqraised1 = 0;! y, T0 K5 x( a6 P) U$ {$ a+ L
  62. static volatile int irqraised2 = 0;
    ' K& y) {5 g7 k, X

  63. 3 Q/ ?8 p. P5 |% f( a* }
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 M( |1 a6 ?$ t$ ~
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 [1 ], {6 H5 s" ?, t* P/ t9 n4 q
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* ]# z9 V/ |% ?' q
  67.   s( a( \3 H" ^7 A5 s
  68. dma_addr_t dmaphyssrc1 = 0;5 G4 L9 n* X& R' P8 f7 `$ C
  69. dma_addr_t dmaphyssrc2 = 0;
    ( a+ R+ D2 R7 t" L3 d% Z$ h
  70. dma_addr_t dmaphysdest1 = 0;: _3 z( `0 [' m* Z
  71. dma_addr_t dmaphysdest2 = 0;: v# I9 ^, k' y" j  p

  72. " ]# I* w5 b# K3 z6 G7 N
  73. char *dmabufsrc1 = NULL;; C; I. a7 j5 A; f
  74. char *dmabufsrc2 = NULL;! A! x. b0 U; Z& R% O$ N' J; \
  75. char *dmabufdest1 = NULL;0 _, v- F. O8 K. e& W' Q6 c9 G
  76. char *dmabufdest2 = NULL;
    9 @/ w: M; o1 x

  77. / l& R0 U6 _% I
  78. static int acnt = 512;7 b4 a5 g7 Q+ x0 u! m% S
  79. static int bcnt = 8;6 ~- \7 e: {: ?* E: @! {0 P) f
  80. static int ccnt = 8;
    , p/ j' ~/ y% H6 Y' y0 X

  81. : b5 \9 p0 V# o5 f
  82. module_param(acnt, int, S_IRUGO);$ H* Y. p/ n8 r% W0 W2 ?
  83. module_param(bcnt, int, S_IRUGO);  [& X& D1 z& ]' m) N6 j$ k5 E
  84. module_param(ccnt, int, S_IRUGO);
复制代码

, g; y+ M+ W. G' q# _) n) Z3 N3 R
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用0 T& H3 x0 w8 h4 _8 |4 |
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。0 {& |- r- @& O4 l- R
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。5 t7 M& d9 o" B( `
/ d9 x1 c$ @! R: g

0 }# ]$ F# u. X* |  |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 19:13 , Processed in 0.038743 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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