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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 $ B/ N. ~1 ~8 N+ d' j2 e$ [! |# t; k8 y
  1. [code]EDMA sample test application. S4 w0 A/ k" H3 {, g/ s
  2. /*$ ?4 b& m5 l3 }5 y
  3. * edma_test.c
    8 `( F' I) X  i4 l3 J
  4. *: L8 M, j' g! }) I8 @
  5. * brief  EDMA3 Test Application
    5 A7 _3 C4 ~) \; }4 F! i; ~
  6. *% H- E  }9 P& ^( o& H# t  f3 t( A0 _
  7. *   This file contains EDMA3 Test code.8 c' n* x& b, [$ ?/ K1 I
  8. *
    + v9 l) R- P7 I; \2 k* q% ?
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE3 Z  n5 [. H4 k, s  p8 d, g; _
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT% b+ p; Q- z% B) m* |
  11. *         TO CHANGE.
    + A0 H7 c, i! S- k' Z( H8 _
  12. *
    2 C1 c$ P) ?* B
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/( t) z! A$ p, x) c
  14. *
    ) g  r2 u6 F4 }2 X7 @
  15. * This program is free software; you can redistribute it and/or0 X+ F3 z& d" Q3 C
  16. * modify it under the terms of the GNU General Public License as; x# r9 [4 I) w* K% n
  17. * published by the Free Software Foundation version 2.* M# p: h/ {6 n
  18. *5 x/ p' ?1 e, `! Z0 c: ~0 X9 g$ d$ \
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    + _; a' E, ?% s% ~9 i  `
  20. * kind, whether express or implied; without even the implied warranty
    8 }0 N1 X2 q+ [  X- O
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the0 [; P+ p6 N6 w7 @; E% l9 a# a
  22. * GNU General Public License for more details.
    4 n# p4 s. @& @# V" U) m: U
  23. */
    : t0 @9 E3 L% ~& W: L

  24. ! F- Y6 H6 R, K/ Q% g+ e
  25. #include <linux/module.h>
    - T& ?3 i8 ]; ?& G  A4 ^0 C5 U# W
  26. #include <linux/init.h>0 A9 ^! \7 j$ ?) D4 [( w! o
  27. #include <linux/errno.h>6 `+ l+ [4 p# ?8 y% A8 n
  28. #include <linux/types.h>
    4 A  m; U% o2 B8 `8 x2 T
  29. #include <linux/interrupt.h>" K! @0 N3 ^6 Z* b  Z; R" y
  30. #include <asm/io.h>( U5 P3 }+ x2 K
  31. #include <linux/moduleparam.h>/ Z1 T6 u2 ^/ g& X0 H$ p) F% g2 U
  32. #include <linux/sysctl.h>3 ^8 r4 I6 t" M! V8 l) S
  33. #include <linux/mm.h>
    6 e! z: N* e) p* l6 F. T
  34. #include <linux/dma-mapping.h>
    # n5 B. `, c/ m8 ]6 Y" d+ K

  35.   G& I" R0 }' j9 B
  36. #include <mach/memory.h>& ?# Q" |: x' k4 `( X: R
  37. #include <mach/hardware.h>( c' \- J  _  Q
  38. #include <mach/irqs.h>* \" |/ P" _% n
  39. #include <asm/hardware/edma.h>
    8 p# |. i0 u8 H+ U& _# g: q

  40. 0 b- h9 A- q* r" O: W' s( Q8 |
  41. #undef EDMA3_DEBUG& o+ G' h2 W. f: I% n
  42. /*#define EDMA3_DEBUG*/) t6 [6 a! `9 n* F7 ?1 H

  43. , B$ e# `; z7 v) J
  44. #ifdef EDMA3_DEBUG
    8 [8 O$ E, C* k% W- L+ M
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)& \$ y* t! }7 G* \' }
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    9 y. Q. |- J2 a+ M5 F( Y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    , R. j" G3 x  A
  48. #else
    2 x/ w; v/ z/ p1 T8 c' A5 |: L
  49. #define DMA_PRINTK( x... )3 I3 X# `. }9 R* R! ]7 i
  50. #define DMA_FN_IN; m4 l" I) @. M- q# x
  51. #define DMA_FN_OUT* G2 ^. F& h% Y
  52. #endif, C6 Q0 o5 F1 F' H  |8 E8 K# U' M6 v/ \! w

  53. , e- w" W7 c* C3 z. r- B$ ]
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ; k0 b9 w: l; [% V
  55. #define STATIC_SHIFT                31 X8 N+ w1 r8 R8 J1 {! p8 s
  56. #define TCINTEN_SHIFT               20
    ) v4 }% a! X: C% Z* x" ~7 ^% d
  57. #define ITCINTEN_SHIFT              21
    & \) p+ @. }  I/ X/ r
  58. #define TCCHEN_SHIFT                221 D' V9 c( J, S# P" `8 L+ ]
  59. #define ITCCHEN_SHIFT               23
    0 i9 }' @: ^' u" }

  60. ; _8 [/ u9 o3 B( X0 x+ {
  61. static volatile int irqraised1 = 0;
    + x* b7 S# M' t
  62. static volatile int irqraised2 = 0;
    : E$ d8 q0 K! F2 C7 t* B, O
  63. . Y+ N& ~5 k( Q7 T0 B- }
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 Q7 u# T8 K  P8 W" d
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 B! |6 r7 z; |
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 N2 }  t+ C6 f. m2 G3 B

  67. 1 a/ G: B6 F" o7 z
  68. dma_addr_t dmaphyssrc1 = 0;
      V+ z) \- A) I
  69. dma_addr_t dmaphyssrc2 = 0;
    9 u  R# F/ f- o: S
  70. dma_addr_t dmaphysdest1 = 0;3 p3 ~7 `! c7 `
  71. dma_addr_t dmaphysdest2 = 0;
    6 a9 o3 h6 K# R  _7 a

  72. , Z2 a3 a0 v5 \9 l
  73. char *dmabufsrc1 = NULL;4 ^9 ~& [( w$ T+ i4 c2 b
  74. char *dmabufsrc2 = NULL;
    ! |, o. H( T' _# C; D2 g
  75. char *dmabufdest1 = NULL;  ^9 [( _1 l% O1 W! w/ @7 o+ Q1 \
  76. char *dmabufdest2 = NULL;% r# _6 e$ [6 U0 N; U! |
  77. * T4 I/ V3 \8 F2 N
  78. static int acnt = 512;1 ]- ~8 _6 O9 G7 C- N
  79. static int bcnt = 8;
    ( h7 m5 i; s* Y$ q3 k
  80. static int ccnt = 8;
    " u* F  a  h9 y' P% P- l! ?

  81. 0 p. a- e7 f; Z5 N+ @$ g* ^  r
  82. module_param(acnt, int, S_IRUGO);. b  r2 ^) J8 z& \
  83. module_param(bcnt, int, S_IRUGO);
    ( Y0 A7 p( l  O& ~) R- l# ?: {
  84. module_param(ccnt, int, S_IRUGO);
复制代码

5 J/ T) V0 M' j  m& [- V7 V& k& G! x& f( V1 H0 e
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
4 R' p! G2 @% Y8 K+ t/ o0 H0 X, sarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。) P' d1 x$ H" H- {6 K! o* W4 x$ R
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。, X( d0 C9 i( T7 U
- D: f7 |3 A- @. R
: j# q) S* }' V$ b8 u, A' S6 t; m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 18:35 , Processed in 0.037494 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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