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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
  z. \2 [8 _/ F# p/ u
  1. [code]EDMA sample test application
    " a* `% j$ e. k
  2. /*
    9 X1 p5 M& [$ y' `$ B* ^7 n7 q
  3. * edma_test.c8 X# @' H8 ~) G1 C
  4. *, g: j% U) X* k; {& J9 c( b! R
  5. * brief  EDMA3 Test Application( p& r  x$ v# v. h$ E- z& G
  6. *
    % y/ E7 S* v5 A+ Y5 E
  7. *   This file contains EDMA3 Test code./ P1 [- y1 U$ v
  8. *- Z# t: j/ G. r; [2 }# g5 F
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    , f' ?( t: c. q, ]" Q# w
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ) B4 g- @$ t7 L9 k
  11. *         TO CHANGE.7 V3 L  _5 M# l9 z1 a
  12. *5 i& |1 D4 p$ t1 B
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/: U4 Z: p; A  g- l2 r' D3 T( ~4 l9 ~
  14. *3 C$ P) d. x+ |; ~. t& z) i
  15. * This program is free software; you can redistribute it and/or
    0 h  n. I% A5 v; X
  16. * modify it under the terms of the GNU General Public License as
    ' h8 _- L3 f! w6 h- @  ~' Q# s0 C
  17. * published by the Free Software Foundation version 2.
    ! p  _9 k! G& P# }: O$ }2 d# `
  18. *
    & J/ `7 S2 e' K) e/ X* h$ Y
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any: x( @% u; a5 I" n
  20. * kind, whether express or implied; without even the implied warranty
    . L) l$ a0 m' d& O7 o/ V* n
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      K; c+ q! B: ]! m4 Q# V
  22. * GNU General Public License for more details., J2 M. q3 y( r4 y4 I- q
  23. */
    : M& D9 L+ Q, j& L; ?7 g

  24. 8 M8 z" m# o! U, g& V
  25. #include <linux/module.h>
    - ?* Z: G; l1 p; q+ L' n- m3 c
  26. #include <linux/init.h>2 p3 B/ m  g. i# y
  27. #include <linux/errno.h>
    : r4 z4 T# c5 Y7 ^
  28. #include <linux/types.h>
    ( \- {/ N3 U! h' g
  29. #include <linux/interrupt.h>3 x. C+ v  `  c( q) h, I) d5 i
  30. #include <asm/io.h>3 _" t! _$ t% z3 s% p8 }& ^2 d# Z
  31. #include <linux/moduleparam.h>! \  X( L. |7 ?
  32. #include <linux/sysctl.h>% m! C2 ?8 ~. a; Z6 Y5 X' {' ]
  33. #include <linux/mm.h>) G; ?2 }2 n- e* U) l4 _* _  n5 t; N
  34. #include <linux/dma-mapping.h>
    6 a1 q; Q. F: |

  35. ' f: }5 {- y  ?  R
  36. #include <mach/memory.h>
    4 |, c" k4 M/ q% C& b" b
  37. #include <mach/hardware.h>5 I0 r+ Y# {$ P, Z
  38. #include <mach/irqs.h>" P) U5 j% w; D+ o
  39. #include <asm/hardware/edma.h>
    3 ^5 a1 `) O$ d- r, R
  40. ; u0 Z6 I" W4 O" `) H
  41. #undef EDMA3_DEBUG
    ! N4 J# \9 e7 z  F  ?
  42. /*#define EDMA3_DEBUG*/
    " i7 f4 P" z3 Y" u
  43. / r8 g1 K% M; c7 K7 ]& s9 O
  44. #ifdef EDMA3_DEBUG
    0 q' z$ T7 j+ u" X
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS): c: f9 X7 K1 H9 m. z& b! F, l
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)2 V5 H. n$ _0 E- C) g8 I
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)$ U& ^* y! I$ ], Y* S
  48. #else2 Z3 J0 e; P- I* ^% }  |
  49. #define DMA_PRINTK( x... )! g. }/ i, D; \7 F! {% }4 z
  50. #define DMA_FN_IN
    : b$ L" `& @/ y7 A0 w
  51. #define DMA_FN_OUT
      n, a9 k) O* y4 s" x
  52. #endif3 L9 O7 O& D5 t; S4 B, u
  53. 3 x8 E3 h1 b$ I) d# A
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    / X6 S; ~  A% n
  55. #define STATIC_SHIFT                3
    $ K/ n! y1 K" q/ d: _; U
  56. #define TCINTEN_SHIFT               20' R7 w0 |5 }% }
  57. #define ITCINTEN_SHIFT              21
    / ?5 j5 Y1 `, c1 B
  58. #define TCCHEN_SHIFT                22
    8 F- [, O1 p8 O* j
  59. #define ITCCHEN_SHIFT               23/ P' ], u: z+ r# q3 m4 ^
  60. + g7 J( X' a0 t+ y
  61. static volatile int irqraised1 = 0;2 y* C! i7 z5 |! v! x
  62. static volatile int irqraised2 = 0;
    1 Y9 A! G: n4 S; @$ D  i* r) ~5 n
  63. - K( W% z( e* ^( K9 Z% W  Z! S
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    9 J; k+ z2 E. E, i1 M
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ |7 o- q# b8 X# a; i# ~
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  o' e+ p, K9 A- d5 y$ \/ ?

  67. # B$ ~4 r6 L! _
  68. dma_addr_t dmaphyssrc1 = 0;
    4 r! D, h' @/ A6 ?  J9 U* r: I- K
  69. dma_addr_t dmaphyssrc2 = 0;4 q; I% D% v& r* r, P0 w  }" V
  70. dma_addr_t dmaphysdest1 = 0;) k  T( Z% S1 U5 p' w. x
  71. dma_addr_t dmaphysdest2 = 0;4 Q- b' ^0 d. {

  72. 7 I* h" {% L* X  K$ t4 Q8 F
  73. char *dmabufsrc1 = NULL;5 k8 G' P% R: L: O
  74. char *dmabufsrc2 = NULL;( a! p" g2 m0 F$ t/ P$ a- a% w. C
  75. char *dmabufdest1 = NULL;
    4 _3 s# ?3 F" a8 s: z1 b! x
  76. char *dmabufdest2 = NULL;
    # _3 E5 {/ d) j8 L  v" C

  77. . V7 n6 e2 G  U3 c% k
  78. static int acnt = 512;2 }) i7 M" r$ C8 i) v. n; D4 N+ f
  79. static int bcnt = 8;
    / A% @$ I9 B! L# L" _; G
  80. static int ccnt = 8;
    $ Z6 Q" M' A% y  W

  81. % ?$ ^/ a7 j2 I, k
  82. module_param(acnt, int, S_IRUGO);
    3 N# D1 g/ p. C; c! l1 H9 F( l7 S
  83. module_param(bcnt, int, S_IRUGO);
    $ I  P2 m9 H& M7 |7 x, |
  84. module_param(ccnt, int, S_IRUGO);
复制代码
3 }7 t, G( T/ H% o0 }
$ J1 E* K. H. }# I
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
+ g# G1 J: O# P( k8 [: u7 {6 aarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
% r( j1 k& O, F# F/ V     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。0 k1 x  x' D5 z2 m. L

9 j# n6 f3 e- v+ L' |8 a1 N- G% P" z6 ]2 @; k8 E; X1 I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-28 20:12 , Processed in 0.040443 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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