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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
2 Q! L/ k5 @8 ^! W+ |7 s: k
  1. [code]EDMA sample test application0 o% B# }; n5 _; J
  2. /*! M, K. A7 l1 |/ U$ r, n1 G
  3. * edma_test.c8 }1 A; r) K7 |; v: c
  4. *0 f9 Z% y8 U9 S# ^
  5. * brief  EDMA3 Test Application
    6 `# X# Y6 |% n: l2 P2 v1 p
  6. *) J* U6 O% ?: H9 [* x% O
  7. *   This file contains EDMA3 Test code., H1 W, H; k' R5 u5 s0 y
  8. *
    ' |' ^; A) X0 n! U, O; i
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE8 c# `/ e% a$ g9 {  j! L! M( n
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    : x3 \2 E1 s, _7 ]
  11. *         TO CHANGE.! `8 P# M4 W- m8 _/ }" P' M9 z
  12. *
    8 X! l5 ~$ [; I8 @9 ?
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/( R' v- `6 q' K, N  k8 {" p3 E
  14. *
    8 C1 M( r' v* c, T/ v
  15. * This program is free software; you can redistribute it and/or
    + o2 ?+ Y, x( [1 [0 f
  16. * modify it under the terms of the GNU General Public License as
    6 n: j/ M5 Y/ o. z, [% |! v/ s
  17. * published by the Free Software Foundation version 2.) d6 a* U: o# f% z+ u
  18. ** X, X7 K1 ], F( F* S( K( v5 k
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any; R" r: V, H1 F' X2 S
  20. * kind, whether express or implied; without even the implied warranty
    1 `: ?$ c& r/ K4 G4 R, x
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    , U8 y. p+ @( H1 d7 T
  22. * GNU General Public License for more details.0 J: W8 R' s& t/ d$ j5 {8 d
  23. */& S0 [7 B1 ^( T2 s& r

  24. % b  F8 o" a' \2 K2 G+ H* i9 b, G
  25. #include <linux/module.h>: i- V7 x0 y9 d) ~# [' A5 ~3 w
  26. #include <linux/init.h>
    5 W. [9 }, N: @. _6 Y
  27. #include <linux/errno.h>2 a9 T& o0 g5 [" q# m7 t
  28. #include <linux/types.h>
    2 }" E) {3 u$ V) l) s# d  V9 M
  29. #include <linux/interrupt.h>
    9 G' H# Y6 u2 b1 h5 M4 q
  30. #include <asm/io.h>$ g4 F. O1 \' X+ ?6 B7 e" x
  31. #include <linux/moduleparam.h>
    9 }! K) b; F) S  E7 E3 S
  32. #include <linux/sysctl.h>" t. E0 S2 p  q0 v6 ^
  33. #include <linux/mm.h>
    : w  ~  o+ e" r: `8 v
  34. #include <linux/dma-mapping.h>
    ' K3 B0 N$ E6 [% \) l: G7 F7 G

  35. , \/ @/ L; h  ]& I) G
  36. #include <mach/memory.h>
    - M& _9 J; x1 L  `) k$ Z6 X; h& L$ m1 H
  37. #include <mach/hardware.h>9 H% E# L7 \* V! S7 l/ v; |
  38. #include <mach/irqs.h>
    $ q4 e3 Y2 y& C# K7 C( V( N
  39. #include <asm/hardware/edma.h>% V% N, C' v4 K" [9 e

  40. ; L5 E3 K4 z; D- d
  41. #undef EDMA3_DEBUG
    5 K" S! g* E% z6 U2 ]4 m/ A. o
  42. /*#define EDMA3_DEBUG*/4 B- x/ ~% e' }+ ]: T% J

  43.   D' c  j  z2 l, `8 {# c
  44. #ifdef EDMA3_DEBUG6 {6 a$ C) T# q3 z7 i: ^* k
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)/ ]# {& B( @2 w. q- \0 R, ]
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)6 o5 y# V. @" ^7 h0 ]! M3 O
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    $ s& {) N6 V1 y) O  b' H
  48. #else
    $ a0 H2 n2 L4 B8 [* f
  49. #define DMA_PRINTK( x... )+ T! C+ s: A: ]" }: y$ x  B8 c' B
  50. #define DMA_FN_IN
    / @; J& ?4 o/ z) C
  51. #define DMA_FN_OUT" C, P# v) s; x2 Q. v7 F
  52. #endif
    6 d7 v$ Y. a1 T* [( A; N

  53. ' O3 K$ g0 j" H# ~. X( k7 x: a
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)* P7 o. o: n! @& k
  55. #define STATIC_SHIFT                3
    ! g( C' c! P0 x( B
  56. #define TCINTEN_SHIFT               20
    9 |& H9 D% n% T8 F5 f3 G5 [
  57. #define ITCINTEN_SHIFT              21
    $ x) k  D" r( }& T: ?
  58. #define TCCHEN_SHIFT                22
    ; u" d" e7 @& i/ Z7 M' i
  59. #define ITCCHEN_SHIFT               237 @$ y# b. k) }; H

  60. 4 s- [. R+ C+ x8 [. q
  61. static volatile int irqraised1 = 0;
    8 H0 x- \+ J) ^8 z+ y# H
  62. static volatile int irqraised2 = 0;$ c' M/ |2 Y6 `, I7 k& l
  63. 2 D' R! D9 ?$ T1 N. S$ |
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 ~* ]! I. z1 S" H, Q
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  q" A$ \1 D) [" B. L
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) o9 Z  ]5 v) v. {8 K- S, U

  67. 8 b! F) @5 X6 q% a- R
  68. dma_addr_t dmaphyssrc1 = 0;
    / q2 O# D4 F- Q, x
  69. dma_addr_t dmaphyssrc2 = 0;
    6 Y) r9 V, z1 N8 u
  70. dma_addr_t dmaphysdest1 = 0;
    . Q+ G- Q' a' I5 A* d! X3 S# k
  71. dma_addr_t dmaphysdest2 = 0;
    4 d. v' L; ]0 e6 m8 a3 P

  72. 6 u; K" f, W6 C$ k1 v
  73. char *dmabufsrc1 = NULL;9 K; k% s4 r9 H1 P' b8 I
  74. char *dmabufsrc2 = NULL;
    7 i; X; H! d+ V0 \
  75. char *dmabufdest1 = NULL;" F/ J. {3 S, |* x: W
  76. char *dmabufdest2 = NULL;4 @: a1 Z$ K; j: r/ V3 P

  77. 6 T; }+ _7 U: |+ w8 `
  78. static int acnt = 512;& B% F$ a4 `: Q+ d' [
  79. static int bcnt = 8;2 O1 y4 j% r& I- N
  80. static int ccnt = 8;
    2 F) N$ [$ q/ w. o2 B4 u

  81.   h0 {6 U. ^$ d" S. ~
  82. module_param(acnt, int, S_IRUGO);. S, y5 T7 i* H6 v
  83. module_param(bcnt, int, S_IRUGO);# i6 |3 E4 C4 ]- X. K& _
  84. module_param(ccnt, int, S_IRUGO);
复制代码

2 H; p. i! W" k: m8 o9 A$ ^. w. ^( O" P: _! U9 W8 o3 G( O+ S- O
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用. \4 K" L8 @0 V; 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。# `$ a% C: W5 l/ Q
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。# F8 K; X* g; v0 q  I9 p
6 _0 T, N' a. @

9 B7 T3 x9 }% b8 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-3 06:00 , Processed in 0.046666 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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