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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 % E+ z7 O8 O% Y
  1. [code]EDMA sample test application
    & o5 E& I* x0 _/ Y
  2. /*. ]$ V) e3 w* O: v- o2 g
  3. * edma_test.c# M6 _) b' x6 o# U8 F+ T& L
  4. *
    , @$ r. O. r! ^0 l
  5. * brief  EDMA3 Test Application! i4 O4 t: z; P! Q9 Z, t
  6. *
    , ^5 h3 ?; b# Q* E. g
  7. *   This file contains EDMA3 Test code.+ j6 x/ e8 M- r) s. b
  8. *2 t3 j& \+ Z8 A7 |9 E0 @
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ' F' I8 o! @( \' c, _* z3 B
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT+ n  B/ I2 P6 `: c
  11. *         TO CHANGE.# r* O1 T9 Z: p) m* c! c! Z
  12. *
    ) s0 }( L8 g+ k* p
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    $ H( Q* c6 \& J3 I4 U
  14. *: k* }/ [6 v" |) m" l
  15. * This program is free software; you can redistribute it and/or
    ) m" }- ?% m5 N1 q# q
  16. * modify it under the terms of the GNU General Public License as* @4 V7 Z* ?7 I. t
  17. * published by the Free Software Foundation version 2.4 u+ X) Z7 V" Z8 K! c
  18. *
    " m0 P! K  K3 o5 O5 R5 F$ n
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    * R* t0 m" \8 o
  20. * kind, whether express or implied; without even the implied warranty0 B& J6 C' w$ m7 m3 _  N- L
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1 n( Q8 L8 ^/ R" J. E6 F
  22. * GNU General Public License for more details.
    ! b, ~# L2 p& `0 }& _( Z
  23. */  X6 V' l; `3 A  }! c9 n
  24. " b$ {4 w5 H6 y
  25. #include <linux/module.h>6 P7 S" r+ C1 {! Q/ D9 B3 n" p! u* f
  26. #include <linux/init.h>
    , ~  a" v8 M3 o/ ?0 Q. G- d
  27. #include <linux/errno.h>3 r7 b- a3 u# {1 H' r- a
  28. #include <linux/types.h>
      t: s; K- f  m8 Q" m4 F  j: _
  29. #include <linux/interrupt.h>5 I3 R1 m! J) T5 G" _: _
  30. #include <asm/io.h>
    ( L: ], x6 Y1 E* X
  31. #include <linux/moduleparam.h>
    ! Z# ]. C3 y" I% c6 G( S
  32. #include <linux/sysctl.h>9 c. a: p8 B9 C+ m6 E, T5 k
  33. #include <linux/mm.h>
    $ n+ K8 |- T: ?# K, F; W/ {6 `1 v$ \
  34. #include <linux/dma-mapping.h>
    % ~) E% v$ `% h  b# }! b( Q$ b$ S
  35. , a  ~" q" r: H! h' l  W
  36. #include <mach/memory.h>
    % z3 b/ \: x4 U
  37. #include <mach/hardware.h>, d9 G% V2 `7 [
  38. #include <mach/irqs.h>% o7 K' ~+ P3 ~0 {3 o1 t
  39. #include <asm/hardware/edma.h>
      C% g0 H4 A. d! M; X% e1 H2 y1 E

  40. - t& I# _' c8 F4 O7 X/ Z9 z+ l4 \
  41. #undef EDMA3_DEBUG
    - K$ n1 C1 K/ D  d1 L% }
  42. /*#define EDMA3_DEBUG*/
    ; Q4 h; U. @4 }/ o% _! z
  43. 8 z" n3 _: K, x
  44. #ifdef EDMA3_DEBUG( r* q3 ?+ n' }" v. @) Z
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    1 r9 X9 L7 M: u5 d# `' |. p
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    + ?- d' A% n$ L# r, F* e" r5 e5 b
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ) L5 s4 O/ d0 _& {. `: t
  48. #else
    ) n$ `/ P% Q% R
  49. #define DMA_PRINTK( x... )* Q9 J" l- \3 d  V  ?2 V$ M+ X
  50. #define DMA_FN_IN; A* m, z+ w5 E( V0 \1 R, n
  51. #define DMA_FN_OUT
    ; q# B/ _3 b! [+ [/ c
  52. #endif5 J/ a4 N: \4 Z6 k8 |) q8 O" U% ], U! x
  53. * I5 |5 {. T) T% t6 n. f8 ~
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)& q* n5 C+ b' r  a0 [+ H
  55. #define STATIC_SHIFT                3' r: L- X) ~. _# f
  56. #define TCINTEN_SHIFT               20& A* A; G* y8 I
  57. #define ITCINTEN_SHIFT              21
    ( S/ J$ F- W4 B. |% J2 r
  58. #define TCCHEN_SHIFT                22
    % ~' W( X0 t7 e& E
  59. #define ITCCHEN_SHIFT               23
    ( T/ j: a# G! n. M; Q  g2 ?
  60. 0 k/ w7 o1 w  M1 z
  61. static volatile int irqraised1 = 0;5 Q6 A; J3 B# q# l: l' T" j; X
  62. static volatile int irqraised2 = 0;
    . \2 `1 ~. b2 p! F4 q4 W

  63. , r# F; P6 K; f( i' Y
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    % T% y% E$ c: x3 t
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    + w( M9 U$ Y3 M8 s# n
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 p7 \9 B: V& F* Z" ?; `0 c$ O

  67. 3 M/ h) o' k# A* E) m- X$ {( E8 W
  68. dma_addr_t dmaphyssrc1 = 0;  Y" g! g1 `0 f) R1 J4 K
  69. dma_addr_t dmaphyssrc2 = 0;
    $ z8 N, j9 h5 o
  70. dma_addr_t dmaphysdest1 = 0;2 v( p- }8 {* l; I; a' G
  71. dma_addr_t dmaphysdest2 = 0;) Y$ u& x8 Y# \! j8 B

  72. : c& _" o' p+ D, K5 D* W7 ]3 z
  73. char *dmabufsrc1 = NULL;3 j* B! D  D5 l1 k" z
  74. char *dmabufsrc2 = NULL;
    / N  q' `! j3 z5 u, F+ A
  75. char *dmabufdest1 = NULL;4 y/ M- O4 K0 Z: \3 `9 U
  76. char *dmabufdest2 = NULL;
    / W# V! }( l2 i4 t

  77. ( g: X1 \7 |. b; [3 V' _' b7 q
  78. static int acnt = 512;. ^/ H: q! r1 Z4 {! H; ?3 u
  79. static int bcnt = 8;5 h, _& z4 C1 X. h( Z/ v
  80. static int ccnt = 8;
    % f6 [* i! J  z- ?* d
  81. : v, P  x' e. {  D) J* a
  82. module_param(acnt, int, S_IRUGO);
    ' ]' I1 `$ [' B6 v
  83. module_param(bcnt, int, S_IRUGO);, U. F; P0 ]% j8 V' ?9 A: v4 r
  84. module_param(ccnt, int, S_IRUGO);
复制代码
/ m% _6 F: p' i/ Z$ D9 q

; _) B6 e" V. r. T      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用2 w+ {* [& s' b. U  [' D
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
6 z6 }9 a; l+ t7 e# Y     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
: ]7 ^5 E- z! u0 }$ F9 j% l8 R7 p, ^

) I" X+ M* A/ U7 m* a: q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-19 12:15 , Processed in 0.037857 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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