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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 # Q: |( e2 l1 A' L& y
  1. [code]EDMA sample test application
    & t) q' \, `. J/ F7 d& Q
  2. /*
    6 M9 b0 K, L! g$ R* C; V
  3. * edma_test.c
    ( u! K" s3 X) ~1 Z
  4. *
    * Z) h# c* R5 U* W9 L: G* R7 P$ W. Y
  5. * brief  EDMA3 Test Application9 H# J$ p, C7 N/ ?8 {
  6. *
    3 s# d) m2 Y1 y- p1 k% i4 a
  7. *   This file contains EDMA3 Test code.* S2 O1 T7 ]& \8 g4 j, V
  8. *
    2 w6 Y0 }2 m* k9 e: ?
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    3 A' M2 h% O# ?, q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ! P5 P! e' a/ n( M+ d  k
  11. *         TO CHANGE.
    * r  n' S1 L1 w
  12. *. ?* Y: X- Y& [% _6 }& Q
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    % q1 g( `5 o$ G8 T
  14. *; S+ W  {( d  o8 K# @! n% k/ t
  15. * This program is free software; you can redistribute it and/or
    2 i' O% t3 a& k7 M
  16. * modify it under the terms of the GNU General Public License as
    " r; q6 h2 ~& c  S* H# ?" j, h
  17. * published by the Free Software Foundation version 2.* [- ~+ [+ e, ~, {, m
  18. *
    ; l$ o0 j" j5 {1 K! S' l
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any8 z- n! ?3 F' }% j# Z1 x
  20. * kind, whether express or implied; without even the implied warranty- n# p0 ^* R, v2 b! Q
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    7 O. d7 N! t1 J' [
  22. * GNU General Public License for more details.
    $ H- R& w0 Z0 k3 M! l# r" H
  23. */6 o6 M" l9 X' g; v) F' E
  24. ; u; e: O; p. b7 t" ]  ?; v
  25. #include <linux/module.h>
    9 K" b4 X% o5 y# _
  26. #include <linux/init.h>/ q- T1 ^* \: C0 ~4 t6 @( |) r
  27. #include <linux/errno.h>
    . x9 U4 G( c  p( {) T# g# r
  28. #include <linux/types.h>
    1 i+ x8 q- d; r; _; M& O
  29. #include <linux/interrupt.h>
    5 k4 V/ i+ g6 U
  30. #include <asm/io.h>/ n1 Y. p3 J# f
  31. #include <linux/moduleparam.h>0 c- ?5 C# a: o9 ^
  32. #include <linux/sysctl.h>
    , t! z* i+ b' T9 t
  33. #include <linux/mm.h>" ?! i" [, b' t: d/ S9 h" c  G  Z8 O# j
  34. #include <linux/dma-mapping.h>
    6 C4 M) Y7 `( k! I; a7 r

  35. 8 {5 O% O. G/ {2 r, ?
  36. #include <mach/memory.h>: d: d" j7 J9 J
  37. #include <mach/hardware.h>; H3 \" |0 l+ f; G  _; w
  38. #include <mach/irqs.h>) z+ I& R' K4 {, W, G
  39. #include <asm/hardware/edma.h>0 u3 V. ^( T" I2 n( A
  40. " _, w3 ?0 p9 o2 }
  41. #undef EDMA3_DEBUG' f+ ^  T6 W/ Q! @
  42. /*#define EDMA3_DEBUG*/
    ' X8 J" N$ H0 q7 R1 T1 N

  43. / f8 V2 x( }. \& ~: [  J/ W
  44. #ifdef EDMA3_DEBUG
    4 j. f% U' u! z% u/ A* T/ ?
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    : l* G4 t2 O  ]5 h$ j
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)+ }9 _( f) ~$ _, i
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    - i4 H8 i- }$ m
  48. #else+ L1 @5 i  |: [( f
  49. #define DMA_PRINTK( x... ): H. T- Z. d4 ~) s& w! O& X
  50. #define DMA_FN_IN
      Z1 F/ s* {: Q1 W% E( d- }
  51. #define DMA_FN_OUT
    7 r+ K# j! f' L9 {! |6 C
  52. #endif5 [" W( o8 F( s" F! g; M" m; E

  53. ! u% Q+ q2 f* u; a" {
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)1 i! i! }% _0 o2 ?/ s8 T! U, i
  55. #define STATIC_SHIFT                3
    + u& T, n) k7 H) U3 M* t
  56. #define TCINTEN_SHIFT               200 s+ T" t6 z$ _2 x( b6 }" m
  57. #define ITCINTEN_SHIFT              21- Y3 d$ e* n% o( X" B6 _, l
  58. #define TCCHEN_SHIFT                22
    2 A# F: m+ G, P7 E+ `' C3 ^7 Q
  59. #define ITCCHEN_SHIFT               23
    # s/ n# `8 c7 ^. R( ~; D

  60. 6 k  o9 }( }3 ~
  61. static volatile int irqraised1 = 0;0 R/ t7 h3 |  V9 u6 h, l+ m9 X
  62. static volatile int irqraised2 = 0;
    - q1 m" y& P* P  y* V. U
  63. # [1 J  l; A) ]& M
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; _! X! J; C* t
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: q0 `9 b" }+ i, N- B- o5 C
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 w7 d/ b1 [: S. t: w
  67. 2 R) R: X- y9 E- R6 E6 q% z2 {
  68. dma_addr_t dmaphyssrc1 = 0;. [5 ~9 g+ Z9 P8 H) x
  69. dma_addr_t dmaphyssrc2 = 0;
    $ K$ w- }. y- l$ K4 s% M3 c
  70. dma_addr_t dmaphysdest1 = 0;% s- s* h8 N8 y0 J1 ]/ o& C
  71. dma_addr_t dmaphysdest2 = 0;
    & s' O, X( Z& }3 @) `+ [% [! a! ]

  72. 6 s* I% j; R/ |: n$ K$ R
  73. char *dmabufsrc1 = NULL;6 [( ^9 H( T7 H7 L/ g* k( H% S
  74. char *dmabufsrc2 = NULL;* _6 c) C8 ]. V. o
  75. char *dmabufdest1 = NULL;
    # O7 [5 L- S3 \
  76. char *dmabufdest2 = NULL;
    ( S0 ^& p* Y2 j

  77. 9 o  c/ N9 R9 W7 l
  78. static int acnt = 512;& R! J4 W: s+ Y( u; B
  79. static int bcnt = 8;; I, K3 L( j6 P  U
  80. static int ccnt = 8;
    5 Y" @( ~2 B3 t# N: v
  81. & Q5 n3 [1 c3 I- q6 m* V
  82. module_param(acnt, int, S_IRUGO);
    3 ~# X' \7 `# P5 J7 y3 k! p/ r- m
  83. module_param(bcnt, int, S_IRUGO);; u; ~+ Y3 T9 z4 J  }
  84. module_param(ccnt, int, S_IRUGO);
复制代码
7 O3 t  r, Y- L: a% a

& |9 D) t# J/ m  |' v2 l      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
, h' U: v( G, C: b  Narm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。$ v! V  g5 H/ H6 e( I4 `
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
3 j2 ?; `) ]$ G% W6 N  h5 J
9 B& k/ Q; [6 m1 k, r
- T9 x! n- ]) J6 O4 b. [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-29 17:18 , Processed in 0.045218 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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