OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
( Z! }% q1 N2 r
  1. [code]EDMA sample test application
    5 ]/ G- m9 c& j: M' ?
  2. /*
    1 j& ~/ L4 F/ \
  3. * edma_test.c
    * f! ?, j8 E- w
  4. *  C+ f, M3 j& l/ ^0 a
  5. * brief  EDMA3 Test Application2 ~; J' H7 H* u" B) P" O7 Z
  6. *
    4 A3 g$ R+ @5 K$ R- P1 b( k
  7. *   This file contains EDMA3 Test code.8 q! Q* X  P* K( ?2 W1 x
  8. *
    ; ^* H) b6 A+ o3 P7 S; g
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE0 V: c, w4 n6 t6 ^3 q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT  D; a5 p! e. a/ f5 @. k
  11. *         TO CHANGE.3 J, N, D/ x4 ^2 R7 E5 w, B
  12. *
    6 b9 q3 W( X1 e' N
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    7 _0 @! o$ d+ Q# G, k0 C# N
  14. *
    # H; S8 r, `. C1 A8 y# P0 b3 g4 ]
  15. * This program is free software; you can redistribute it and/or
    - p$ x( X! F5 ^# d2 a8 ~# d, F
  16. * modify it under the terms of the GNU General Public License as9 r) {0 a: s7 w5 q
  17. * published by the Free Software Foundation version 2.
    % ^! v! w% x9 n
  18. ** O: q7 A  m8 m
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ' k! @+ ], a+ M* _4 D
  20. * kind, whether express or implied; without even the implied warranty
    + @5 _3 z( N7 m( S5 {$ Z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    4 Z. }8 I5 M: ^) n' e# Y) S+ W7 Y; [
  22. * GNU General Public License for more details.' u5 C8 `* U' c# @! {, C+ s
  23. */
    # [1 }9 E# e4 k- d
  24. ) W% X1 @/ \9 X% V' [
  25. #include <linux/module.h>/ O3 {- ^+ Q- |9 [& l- Z0 U/ t
  26. #include <linux/init.h>- |! h, {7 j/ k$ @# D" N& I# F
  27. #include <linux/errno.h>
    * g) w! K$ n7 N
  28. #include <linux/types.h>
    ! B4 k/ S- c: L! ~
  29. #include <linux/interrupt.h>
      `" o8 S  ^: M) l/ e) `
  30. #include <asm/io.h>
    ! k: j9 C/ p0 l0 G. A
  31. #include <linux/moduleparam.h>9 d( @4 ?6 }6 @* X7 A
  32. #include <linux/sysctl.h>
    ' z" J5 H: F; }; \7 j
  33. #include <linux/mm.h>: H* E. W: E, G$ T' r4 E
  34. #include <linux/dma-mapping.h>
    ) N- @5 S0 h6 k! Z

  35. 8 K- g$ s5 a  }, Y. d
  36. #include <mach/memory.h>
    2 J6 A7 t0 w/ O
  37. #include <mach/hardware.h>
    $ Q( n" z( b* Y7 J, Z
  38. #include <mach/irqs.h>$ v3 Z6 z0 T, m
  39. #include <asm/hardware/edma.h>7 n, j* C! X+ e* K' |. h
  40. ) m4 J& |' o- ^7 q
  41. #undef EDMA3_DEBUG' _# z3 ]2 |+ d9 T) ~) N7 l- n
  42. /*#define EDMA3_DEBUG*/3 \. k+ D5 ^( \$ n( r- `: q2 E

  43. & {! `% E3 K( E. ~, e4 J* B
  44. #ifdef EDMA3_DEBUG  _) q1 y% E7 y! e' y% J5 f
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 O/ a/ R6 X, k4 T  e" a! o
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)# m- a! Q/ p. o) u5 p" |3 p2 W. j
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)* _  g: Q( x8 J' L/ A; ^# ^
  48. #else" ]$ U0 \5 Z* S3 v6 |
  49. #define DMA_PRINTK( x... )
    . L- \1 v$ K9 q. V% d
  50. #define DMA_FN_IN% B: g9 S8 m8 y8 D6 K2 X
  51. #define DMA_FN_OUT1 Q6 r3 l1 B% w9 T
  52. #endif, t0 F1 c; |+ U# k+ A! N+ N# K: I5 T

  53. 8 Q# d- h8 a( {" ?) C6 p! }* j
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    , M8 G$ ]1 ~( Q8 V8 k/ j
  55. #define STATIC_SHIFT                3
      p) b9 V, k6 U, c& a8 V0 Q
  56. #define TCINTEN_SHIFT               20
    ( k& J' ^2 R2 r- ^
  57. #define ITCINTEN_SHIFT              21
    9 V9 p  I, Z0 S4 {
  58. #define TCCHEN_SHIFT                227 E! E4 a7 s& ~. x- `( L& o
  59. #define ITCCHEN_SHIFT               23/ X: f# r3 Y1 p# a5 J9 v
  60. + {: g; m! V$ b9 W. G3 h$ D2 ]# y
  61. static volatile int irqraised1 = 0;
    ( \6 r# C# V  d
  62. static volatile int irqraised2 = 0;
    $ M* z! Y+ g8 x3 O& j7 p

  63. . v2 V# O7 q; q( y& k+ L
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " l5 t: `6 x: x
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);/ [8 R! H( w! L5 ^- @. }
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 s/ k: a% D: c

  67. 3 ?$ |* s& [' V: G2 ^
  68. dma_addr_t dmaphyssrc1 = 0;7 k+ t+ l+ z; @( `+ U5 ~& t$ ]  e5 e
  69. dma_addr_t dmaphyssrc2 = 0;3 Q  X0 }5 T5 o8 J! J/ ?0 u
  70. dma_addr_t dmaphysdest1 = 0;
    + r+ M& f& A# j. ?
  71. dma_addr_t dmaphysdest2 = 0;+ ~" ^! W+ ^& }/ C9 c9 d

  72. " z) V2 R4 C9 i. Z
  73. char *dmabufsrc1 = NULL;/ d1 H  @7 z8 \' [
  74. char *dmabufsrc2 = NULL;; s, Y# A9 d2 d. [' ~$ N8 N8 q
  75. char *dmabufdest1 = NULL;, `* }, g9 O0 F/ B* d. |& A
  76. char *dmabufdest2 = NULL;5 U& e1 ~# V/ E+ X7 R
  77. ' V# J) q5 Q( P0 e. t- L) y* v
  78. static int acnt = 512;, m# @6 {3 z/ _8 g" O
  79. static int bcnt = 8;
      i. H9 k  s2 D$ y7 T9 c& {6 v
  80. static int ccnt = 8;: F( k* o- a3 b7 N
  81. ' P" J( c5 ]" _- ]
  82. module_param(acnt, int, S_IRUGO);
      M/ X; C8 c/ r. D7 @$ ?5 S8 m
  83. module_param(bcnt, int, S_IRUGO);
    : c) ]4 q5 O5 U! g! O
  84. module_param(ccnt, int, S_IRUGO);
复制代码

2 `) I3 ?& G' e0 r  R1 d/ m5 [6 w. ^- @
6 u) H" K' _1 o$ B      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 h$ v0 m; E+ k2 K8 V4 W8 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。/ g( @4 J" R6 j5 e7 ~8 H
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。! u  y7 M" j& b
$ c- Q5 {  S" ]0 m/ P
: X6 _7 z+ H! E9 i. |# `) a( k" ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-10-27 06:37 , Processed in 0.042030 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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