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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 # w7 w3 K" N' J$ X6 a) |% d! M: \
  1. [code]EDMA sample test application
    , `+ {, [6 Z( p  B
  2. /*
    9 H% K5 c* d( @9 Q
  3. * edma_test.c+ f# I! n* P7 H7 q- E
  4. *
    9 p' t$ K; q! C+ D3 x" L4 d
  5. * brief  EDMA3 Test Application
    ! p* c$ O) o+ x! n% ]
  6. *
    ; ]. \+ M& \$ S7 S9 K3 X$ V4 I1 D
  7. *   This file contains EDMA3 Test code.4 f$ y9 |" E6 \6 T9 r7 x! t
  8. *6 F0 u; `+ [; U+ W# Y7 r
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ' k  ~: M! }) c9 y! G+ t
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT2 ~' ^5 @% n9 ~' t; e
  11. *         TO CHANGE.
    5 ~/ W. w9 z- q$ c
  12. *0 Q( ~! v0 V6 x( ~& s* p2 y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/* Y/ s7 l  i& K5 h
  14. *
    ; O! Y  ^, w/ w  b: V0 K0 X
  15. * This program is free software; you can redistribute it and/or
    0 y; [1 V& P  F2 Y2 p9 \
  16. * modify it under the terms of the GNU General Public License as
    " N0 A( o# V1 P. Z2 M& y! `' F  X
  17. * published by the Free Software Foundation version 2.; ]6 J$ Z# p# p
  18. *
    # _0 x2 l0 Z/ x# v7 B9 i
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    5 }4 @. x! Q3 G; Z
  20. * kind, whether express or implied; without even the implied warranty, q& ^/ l5 a0 L
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the, _. {9 B$ s+ q- G- X6 T$ v: H3 z
  22. * GNU General Public License for more details.
    ( x2 f" {: U1 P. T! X( |6 O
  23. */
    " |5 m+ h7 l5 F9 ]! k- d
  24. ' p2 f" o, D2 d! Z* h
  25. #include <linux/module.h>
    4 j& V# J9 P) o# O
  26. #include <linux/init.h>6 s5 s. q- m* ^
  27. #include <linux/errno.h>
    ! [1 @) Z2 P8 B' E- d3 q6 ]
  28. #include <linux/types.h># t9 z) V5 o8 W
  29. #include <linux/interrupt.h>+ v( q, r3 j' u  R- G
  30. #include <asm/io.h>) S- C: O8 P5 M6 n4 v
  31. #include <linux/moduleparam.h>. S* u( P6 _0 {& c! _: Y* \8 Y( t
  32. #include <linux/sysctl.h>. r. f3 }* L$ t1 P
  33. #include <linux/mm.h>8 E, t* \# K+ V* w8 E$ f9 i
  34. #include <linux/dma-mapping.h>
    & i- @( I% Q9 K  |' K5 h, `
  35. 8 y2 L& X5 c  O: V
  36. #include <mach/memory.h>
    / @4 u' g; U: B# Q2 c/ v  [
  37. #include <mach/hardware.h>
    " v+ ^* F/ M" ]8 x: a
  38. #include <mach/irqs.h>
    8 i1 R- |. u& m1 g' Z8 H
  39. #include <asm/hardware/edma.h>& d7 p4 R+ J/ J8 H. _. M' G
  40. ; \. J% `8 U1 \8 D. F. k8 a/ ]
  41. #undef EDMA3_DEBUG
    6 N/ p: u, m1 Q6 g( J) A; @
  42. /*#define EDMA3_DEBUG*/
    ; V# C. }2 K& O  S5 a
  43. ; M: o4 `4 H$ g( f0 k! a- u) S
  44. #ifdef EDMA3_DEBUG
    5 `8 n$ Q" b: R' F. ^* M
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    * Q+ ?6 m# Q/ _$ m' l9 s
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)/ c) d% h# w  u" n- r
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__); L' z4 a# J1 g) d$ H
  48. #else
    % M$ J! E$ }! |. k
  49. #define DMA_PRINTK( x... )
    ' ]  R. A% [4 j! y, h
  50. #define DMA_FN_IN
    : {* Q6 |5 r  n, d* ]9 O
  51. #define DMA_FN_OUT% ^8 e/ Y: G% M  d2 z
  52. #endif
      w1 W, e* y# T* n% l$ b

  53. 1 R; v& ~" s! v8 x  b
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)) E- I3 s6 u6 @: N7 H  Z0 o' V
  55. #define STATIC_SHIFT                35 [9 q1 e8 ?. r$ l. \
  56. #define TCINTEN_SHIFT               20
    ) A2 }: X6 W9 f$ z: ]
  57. #define ITCINTEN_SHIFT              21
    5 d2 o0 q$ n" o" L' j- ~% g
  58. #define TCCHEN_SHIFT                224 c4 L8 O5 U' C" Y. F6 C, C
  59. #define ITCCHEN_SHIFT               231 U9 }9 ?% ~5 u9 Y* U2 ~
  60. ! v9 P% E  K8 M' }
  61. static volatile int irqraised1 = 0;
    * W/ ^7 A2 H( w6 g0 x% R
  62. static volatile int irqraised2 = 0;
    + i2 C) Q$ C. _1 r- t' L$ v3 Z# s
  63. ; B& J" r  {4 |; A. V) M6 }8 T
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);" k* o$ M5 o* D, Y% [
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. H8 A) u2 Z" X5 E# E5 T0 u
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);1 o" L2 z3 J8 p- r( j
  67. - Q; ^7 |1 ~6 A' j" S$ D: g; v
  68. dma_addr_t dmaphyssrc1 = 0;4 ?7 M8 q7 n; l2 ?
  69. dma_addr_t dmaphyssrc2 = 0;# N" U/ N% ~$ Z9 a! [
  70. dma_addr_t dmaphysdest1 = 0;
    3 s% d* \7 ~  u( J: c" R4 R# E  `# W
  71. dma_addr_t dmaphysdest2 = 0;
    : y4 n5 h6 w. B4 w9 o& u

  72. 6 n: Z, H7 c& }! l# B5 U
  73. char *dmabufsrc1 = NULL;$ U4 `. h1 `0 A* {' @3 A
  74. char *dmabufsrc2 = NULL;8 [6 f2 _/ j( h* f) u
  75. char *dmabufdest1 = NULL;+ l& \# Z0 L# j: J5 q2 O
  76. char *dmabufdest2 = NULL;
    + l) ]' j9 b6 j3 ^' f; h: D% j

  77. 8 m; G/ x( J& M6 s
  78. static int acnt = 512;
    + d; K- w6 j' s6 x
  79. static int bcnt = 8;7 P0 z# T9 y% M4 I6 W2 j
  80. static int ccnt = 8;
    7 @4 P6 y: ]. U
  81. * E9 k2 F4 L  j
  82. module_param(acnt, int, S_IRUGO);" S1 T+ ]# [3 r" U; L$ f& O! Q! X' [
  83. module_param(bcnt, int, S_IRUGO);
    - S2 ~$ o( x4 ]. C( L$ r
  84. module_param(ccnt, int, S_IRUGO);
复制代码

7 s& _5 _$ Z9 ^1 i( {% L
! A8 }3 M3 [: u% a% w) o7 ]      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
; M5 {5 N+ ~. W' I+ C) f$ Harm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
# N  u, B* ^& n9 x5 n4 j8 I     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。& C6 H# P/ h4 c

6 F5 H; o! V: l) D& F6 [& d+ I7 E$ x9 F' m8 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-22 16:26 , Processed in 0.054915 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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