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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
1 P9 a5 y4 T& F8 k- W3 N4 s
  1. [code]EDMA sample test application9 v# Z* \0 M7 o; r8 s
  2. /*
    ) O# Y8 s/ R; |% m* m1 I
  3. * edma_test.c3 O3 B8 G% S! ?4 g6 h9 K' t: N4 D
  4. *1 i$ Z4 {  U. ]
  5. * brief  EDMA3 Test Application
    * a! g% h! }5 I
  6. *
    8 G2 v; h/ d# S; K4 C
  7. *   This file contains EDMA3 Test code.
    ; m5 w, i0 ~( x8 F: b: f/ |
  8. *4 y! A* \" G/ J  n$ g
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE- r4 A4 ~% }' j& }+ g
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    1 t0 j9 ]. Z9 T
  11. *         TO CHANGE.
    6 r8 z/ s8 r" R5 Y0 b" l! U" j& w
  12. *' Z3 b  I$ ], F3 y, U( Z: n: v; C% i
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/5 Q: K/ A$ s# @: I) v" i: d
  14. *5 O9 f1 l* c# `! _' Q! }
  15. * This program is free software; you can redistribute it and/or$ B4 w8 {6 ?) ^9 x5 K5 D  i
  16. * modify it under the terms of the GNU General Public License as' s# G/ R5 m1 v4 k( R
  17. * published by the Free Software Foundation version 2.  p' v" L% X' m
  18. *0 H' [' v3 D* n
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any; i/ F" t% V! f
  20. * kind, whether express or implied; without even the implied warranty
    4 Q, J; E- Y4 s& m7 ]) r
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the) E, r8 ^) {  [2 b  W/ h
  22. * GNU General Public License for more details.. Z$ m$ P7 q; n% [0 x
  23. */
    6 ~. Z3 I/ E$ B+ N4 q

  24. , F& J; {9 o* l% x
  25. #include <linux/module.h>2 z# D6 c$ b) x. F+ x3 S, X- E
  26. #include <linux/init.h>
    * Y* q. F' R0 U2 S; d0 q
  27. #include <linux/errno.h>
    2 p9 i9 ]5 G$ T' G7 ^) K& g$ y' c+ j
  28. #include <linux/types.h>) D( }( x9 B6 B$ E
  29. #include <linux/interrupt.h>
    ' i/ S& S% |  |
  30. #include <asm/io.h>7 F, r4 V1 }& L+ P4 ~
  31. #include <linux/moduleparam.h>
    1 p& W- C4 x" S# h- a$ v, x
  32. #include <linux/sysctl.h>" d4 J) t8 \* [0 g! i& x. V
  33. #include <linux/mm.h>
      @1 r5 R1 M" X4 x" S  i2 s
  34. #include <linux/dma-mapping.h>
    ) R  [% H: t* r: j4 V- S# D

  35. 2 w5 \& J/ X+ |# U
  36. #include <mach/memory.h>5 V( e/ T! q2 X4 W0 U
  37. #include <mach/hardware.h>1 F; D; v: M# V/ `! O4 G& P& H
  38. #include <mach/irqs.h>3 D; z- A8 ]( L% a" K
  39. #include <asm/hardware/edma.h>; m* w; h5 @; W- W

  40.   |7 o+ ]+ n6 }! ?) n, U
  41. #undef EDMA3_DEBUG
    , {( K+ J. T' X# t; z, _
  42. /*#define EDMA3_DEBUG*/0 [' I$ [) w1 A( T
  43. 1 z0 O3 ?. [' ]. [* J3 k$ U) i- u
  44. #ifdef EDMA3_DEBUG( \& C( ?* F2 _" t0 R
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    5 g2 X8 S/ l" I9 O$ O
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)/ m" |1 j" q6 m$ J- O  ]
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    - ~* I" N6 }( a. Q+ W/ t3 p
  48. #else$ e; R' \% J2 k" q1 d3 [
  49. #define DMA_PRINTK( x... ), Q, h1 M0 N. l: R8 c* a8 U
  50. #define DMA_FN_IN
    : M+ N* B6 y: H3 N8 O; I* t% K  D
  51. #define DMA_FN_OUT
    4 p: {/ E* Y- c. w
  52. #endif, S9 Y5 d" J! Q8 k6 m# u

  53. 3 ^, r9 R9 s7 r6 E) |2 m9 F0 f
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    / q$ x3 g7 ^/ P1 ~% w0 Q7 }; @
  55. #define STATIC_SHIFT                3
    ) {9 p) \& w5 M+ q" h
  56. #define TCINTEN_SHIFT               20
    8 ~; D+ F3 e0 J- u
  57. #define ITCINTEN_SHIFT              21
    + r0 x  e* b0 A5 b
  58. #define TCCHEN_SHIFT                22
    0 w1 W8 a! M' Y9 V6 k" X
  59. #define ITCCHEN_SHIFT               235 d5 R5 _% N. C9 F) ?% ^/ C, c, v* x

  60. , O3 `4 \4 H* N0 k; Q, P
  61. static volatile int irqraised1 = 0;9 J6 g6 a3 D) [7 C
  62. static volatile int irqraised2 = 0;, t2 j% ^/ X. \: o5 x8 Z

  63. 3 p/ j, a1 z, D
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    : f- B7 y* n* i, n9 \5 S
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* B- F* U' M$ Y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 G5 |+ K" T. K+ d% d5 j
  67. 0 p, n' [6 U8 m7 V0 }
  68. dma_addr_t dmaphyssrc1 = 0;
    7 p. e, `. R- z* `
  69. dma_addr_t dmaphyssrc2 = 0;" }8 w* |$ |7 c4 q6 a" t
  70. dma_addr_t dmaphysdest1 = 0;
    7 c: P  h9 ^( \- l1 @
  71. dma_addr_t dmaphysdest2 = 0;6 y. u: W) D0 ~. h9 g4 z$ W

  72. & N5 @5 \5 k" S; O7 s! }( t
  73. char *dmabufsrc1 = NULL;0 p3 ^- a& W$ n( L
  74. char *dmabufsrc2 = NULL;/ H# C+ @7 J' D" B  E
  75. char *dmabufdest1 = NULL;9 S. ]1 b2 j5 x  V. F! k9 m
  76. char *dmabufdest2 = NULL;! L1 \1 u" W3 C% a
  77. $ M; w( o4 \+ R. v+ l" R9 y# M
  78. static int acnt = 512;6 S/ y. P) L  X) I" }# W
  79. static int bcnt = 8;3 z8 _# B5 M# _! [* i4 Q
  80. static int ccnt = 8;$ [% n6 C# V: F$ V" h
  81. 7 p0 `& Y# s. d. [! o) I, a  S' ]9 H
  82. module_param(acnt, int, S_IRUGO);- t0 D) w% u6 z+ o
  83. module_param(bcnt, int, S_IRUGO);
    / k. X/ f# z9 n4 S- x
  84. module_param(ccnt, int, S_IRUGO);
复制代码

. y/ Z( q! b+ n. g' Z
7 t0 d2 L) \' ~; Y      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
- H7 N4 @( W+ v& k$ _' J- ]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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。4 s9 [$ w1 ^% K$ B! P1 m: o/ Z$ Q& m/ E
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
- g1 `/ q; @3 c# Q5 Z( w' S  c0 T
  U+ h( d, U& [# J! v" J
9 c' O& n' f; J2 F. _- H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-25 09:56 , Processed in 0.043015 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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