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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
/ r5 V6 C$ r# n! I
  1. [code]EDMA sample test application, h6 w' }3 v9 I  A' b" m, K' ~
  2. /*
    9 f  |9 g& c8 B8 a. i& @/ O
  3. * edma_test.c0 P7 v: C5 O+ ]5 ^8 I& y3 j5 ^. X
  4. *
    ' v* Z$ W. i6 N/ N4 t
  5. * brief  EDMA3 Test Application5 P! q; R- ]- C' t0 g; L! I
  6. *+ T* D3 R/ ~3 B9 ^
  7. *   This file contains EDMA3 Test code.) x- M4 k/ X+ f0 a2 V: p  |
  8. *2 W2 K) @: j7 Y6 Z5 F9 ~( _7 R* V* ?4 R
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    6 Z; ?/ ~1 A0 F+ n6 u' m
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT6 }# _2 X# E' p1 P2 x
  11. *         TO CHANGE.
    - n6 ?7 V+ G8 C" z8 s
  12. *8 H# P( q( ?: N) O, H
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/, w) O1 m* W+ C  I" D  i; h0 m
  14. */ Q. c; x0 u( E& _
  15. * This program is free software; you can redistribute it and/or* ]0 h, w1 I; d6 C5 c' Q, G
  16. * modify it under the terms of the GNU General Public License as
    9 n$ K6 g0 h, S1 q1 {* ~& J, h
  17. * published by the Free Software Foundation version 2./ |, ~3 l8 |) a' w% x; Q! u
  18. *5 F% j+ C) `8 @! O
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any6 [1 O) Q  w% i0 `- V
  20. * kind, whether express or implied; without even the implied warranty1 b5 ^( r% Q; [7 J; {# S
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    8 g9 p8 D6 z4 h6 `* `$ g% C
  22. * GNU General Public License for more details.  _) k7 A0 g6 Q) i# s
  23. */
    6 n% T  a$ E# p: }

  24. ( @' z) y% c- G4 f
  25. #include <linux/module.h>8 p  N! A" B% ?4 G; I
  26. #include <linux/init.h>
    : N4 Y- g2 X+ G6 ]7 U; H
  27. #include <linux/errno.h>
    + b; u$ s. A1 `
  28. #include <linux/types.h>
    % `9 H# K1 \& {0 t+ {9 m+ m. \
  29. #include <linux/interrupt.h># \. g) L: x0 T$ v, R
  30. #include <asm/io.h>
    3 X/ ]8 ~0 E: C! i" q; ^% {, a
  31. #include <linux/moduleparam.h>- Q+ i% P) Q# D/ H+ ]" Y3 i
  32. #include <linux/sysctl.h>, F8 A7 y) N, A: `8 `* O
  33. #include <linux/mm.h>
    3 I3 P6 }1 s* O) C" v
  34. #include <linux/dma-mapping.h>
    3 c* p$ ^) O. A8 p
  35. 0 q& V5 H2 |/ i, d2 L7 v
  36. #include <mach/memory.h>/ Q8 U( J$ P) T& K2 q
  37. #include <mach/hardware.h>6 p9 V8 u' ?  c7 U: u: g6 F
  38. #include <mach/irqs.h>
    ! B! \* F# m' N! ^- i) j9 B3 I
  39. #include <asm/hardware/edma.h>
    0 K& S* X# j) A0 U+ T5 O

  40. % ~# W" h1 B4 x% j
  41. #undef EDMA3_DEBUG
    ! s4 v" a) c% Z5 `3 ]8 [, D  Y
  42. /*#define EDMA3_DEBUG*/
    ' H& D& C( N4 m; |  v' ~1 l; e
  43. 0 F9 H  p2 X- V6 S3 u
  44. #ifdef EDMA3_DEBUG
    & ~7 |: W) Q( O& b( P- c2 ?
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)( A! k* ]$ O6 c* r$ e
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)( u4 k, ^7 _7 U# ]- |/ T
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ; O7 j+ m3 N/ t$ s% p- C& j5 k
  48. #else1 R& w7 }, \( _
  49. #define DMA_PRINTK( x... )
    ! O/ }4 k% w9 q5 A9 e
  50. #define DMA_FN_IN) u. U# \  j; k2 @' H
  51. #define DMA_FN_OUT5 V+ p" U2 o, X: ?' f: {1 K
  52. #endif# ]! w" N  C( O( ~. ^! z  d9 b' l
  53. # M, z5 m* f! [  l+ u$ ?' M
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)6 ]$ h1 N) ?: j
  55. #define STATIC_SHIFT                37 {, e( c6 @" J" m  C1 Z& g
  56. #define TCINTEN_SHIFT               20, I1 C  }, M2 E
  57. #define ITCINTEN_SHIFT              215 }; w1 N# F8 C
  58. #define TCCHEN_SHIFT                229 _( ?$ H9 L; E# t2 i7 Q7 j
  59. #define ITCCHEN_SHIFT               23
    % A  o2 _( I+ d9 w8 f) ~$ c- [
  60. 6 p! u/ R' k9 f& Z7 d/ F6 q
  61. static volatile int irqraised1 = 0;- n& N4 e2 s* X+ j9 u
  62. static volatile int irqraised2 = 0;; R# H/ [/ @  n# I( A0 M1 Y- F3 \
  63. * V% Y' U; k, J' w
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);1 s8 R5 k! v! `( q$ |/ h
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ o) _- R8 X9 s' o$ G% n& K# l
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 Q1 M4 Z' e  e9 `1 o: e

  67. . B& Q# U3 Q! `! ?
  68. dma_addr_t dmaphyssrc1 = 0;6 N  s3 c0 |7 }9 n' R
  69. dma_addr_t dmaphyssrc2 = 0;! G) @$ M3 x5 p+ T
  70. dma_addr_t dmaphysdest1 = 0;
    2 Z8 L5 k& o" s9 S/ k, y+ R0 c$ A
  71. dma_addr_t dmaphysdest2 = 0;
    ; i! m8 l5 t6 Q5 @

  72. ! w! {3 L2 N/ u8 n4 v
  73. char *dmabufsrc1 = NULL;) A' k& a% ~) \2 B
  74. char *dmabufsrc2 = NULL;
    + R5 r. D1 Q, M: U" _) n
  75. char *dmabufdest1 = NULL;
    9 ~+ {9 m6 W  c' ~) p- y
  76. char *dmabufdest2 = NULL;
    ) P7 J8 y, m/ s) U6 N
  77. " \( ]- |0 l% @1 S: m$ c6 A
  78. static int acnt = 512;
    / S. w4 E' m# _  F8 k- l% B6 t
  79. static int bcnt = 8;% v5 h& C) C6 Q* k3 K& n- m! v2 w8 M
  80. static int ccnt = 8;# M3 s5 ^9 i, I& C6 E) P

  81. 6 ^7 _5 G  D3 Q" J, Z4 u5 u
  82. module_param(acnt, int, S_IRUGO);' G0 d, V4 n! ^1 P5 n
  83. module_param(bcnt, int, S_IRUGO);5 R6 ]& u& N" f1 n* ~, v; [" X
  84. module_param(ccnt, int, S_IRUGO);
复制代码

9 o" a$ c/ Q8 B! |7 B, S  p. v
- C/ j* V( |9 |- r5 C) f      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用% T  [, T$ S) A) E' j* [) {8 l8 r) x
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。/ p( u% ~' I, k$ w
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。9 D& r3 g6 U2 |, U3 c) r; y

7 b4 i# g7 D  f' [7 K4 E! O+ F7 C; w4 w! G0 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-7 00:47 , Processed in 0.039457 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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