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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
. H) Q5 m! z$ X
  1. [code]EDMA sample test application, l5 K2 H4 v! g8 ~; p
  2. /*; m# S( ~3 u+ Q' ^) b$ X
  3. * edma_test.c
    # ]  U& [& Y( ~, D% z4 F2 @
  4. *
    . F- u6 a$ K6 [& y: Z# Q' L8 k
  5. * brief  EDMA3 Test Application
    . Q$ M8 D4 T- Z9 B* {' c
  6. *
      K! T) \& M3 G; i: a
  7. *   This file contains EDMA3 Test code.
    ( D, d: h* l. j- M( l
  8. *, r; ]3 c) _3 M; N& r7 F, ~% t
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE* V- L: P: R! O& K
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    " K% R% h3 p7 O* t9 Y
  11. *         TO CHANGE.: t8 ^+ A, |% z+ p7 ~' D5 ^
  12. *$ J/ g  m( `  a" x6 c# r
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/) O) R6 ?1 W+ N: r' n, t2 p
  14. *; c/ ~& A9 w( n. \
  15. * This program is free software; you can redistribute it and/or- U& H1 U: o' \2 m" o! l  _0 m
  16. * modify it under the terms of the GNU General Public License as
    ; @$ Q' `5 `' i  {4 p0 j
  17. * published by the Free Software Foundation version 2.
    * o! A4 ~+ \# X- o
  18. *" E0 B  A* T5 o- R; Q$ F/ }! D$ V
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any' V5 T0 X; ~/ b2 L9 J
  20. * kind, whether express or implied; without even the implied warranty, t5 M8 y5 n# ?3 k: ~0 y! J- c  F
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    7 z# W. u" f. |1 k# M
  22. * GNU General Public License for more details.' P9 C1 I4 \7 F$ S
  23. */
    + F; y+ }; J1 K6 C% t+ o
  24. & E% k  q6 ]* U
  25. #include <linux/module.h>
    % t# I. z( ]" }
  26. #include <linux/init.h>
    ) j9 e" Z" j: ]. s( X
  27. #include <linux/errno.h>
    - g! y9 F% h( F
  28. #include <linux/types.h>$ E! j5 K  b, h2 R6 G
  29. #include <linux/interrupt.h>8 v4 S9 w( k& u2 e7 G
  30. #include <asm/io.h>7 G- i7 f) D9 ?* l/ b1 w
  31. #include <linux/moduleparam.h>
    " I$ ~0 K* Q% t
  32. #include <linux/sysctl.h>
    3 ]) J2 s& T* Y3 X+ y; s4 @( h) n$ ]  U
  33. #include <linux/mm.h>
    " p5 {9 L  t, r3 w/ [
  34. #include <linux/dma-mapping.h>  ]1 L4 p, }- I
  35. / u8 O8 o0 f# E! c" z8 ~' j
  36. #include <mach/memory.h>2 V5 n+ @' L6 z8 t9 R
  37. #include <mach/hardware.h>
    , H0 X3 u5 B. ?1 u. ]3 r& Y8 w6 K
  38. #include <mach/irqs.h>
    + p/ J3 c9 b  Y' s  x% ~' T9 m
  39. #include <asm/hardware/edma.h>
    , P, Z! v8 Q$ o5 j% e% }! O
  40. 9 U" y6 L: F8 o" E% v, ]9 L
  41. #undef EDMA3_DEBUG
      p  ^' u, [2 D0 y( N' S& O
  42. /*#define EDMA3_DEBUG*/. O: |( W) h4 [$ g) X3 E

  43. ( x1 W3 |$ ]/ J+ ?# ~
  44. #ifdef EDMA3_DEBUG3 b6 w* r# c& s7 X5 q6 ]+ J0 j0 g
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)( O" V) y  [3 n% R
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ( S9 g3 e$ F- j3 @8 M5 Y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ' R' F. C& [; P. V
  48. #else
    : I% d6 J& X3 J2 \8 l
  49. #define DMA_PRINTK( x... )
    : ^. Z* d3 G3 _0 }4 t
  50. #define DMA_FN_IN
    " E7 F# A9 ^1 e, L( V4 A0 d6 K
  51. #define DMA_FN_OUT. d0 n5 G. i! R5 j* P* d) _
  52. #endif
    0 P! K: t: i; g* @8 u3 r" M% ?, P
  53. ; r/ K4 F4 f7 m- k0 l/ J* Y7 ]
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    # h5 r! b) k5 q: t
  55. #define STATIC_SHIFT                3& F* E- ~. s+ h/ \
  56. #define TCINTEN_SHIFT               20
    $ \, q( H2 D, Y0 D
  57. #define ITCINTEN_SHIFT              21
    1 m* G, j. ?% b! `+ |
  58. #define TCCHEN_SHIFT                22
    8 A  M' J; r, i" G' b% F
  59. #define ITCCHEN_SHIFT               23
    9 y& R+ ~8 L6 ?0 }8 X# n
  60. + _% P5 h% ?6 ^$ k, s: ~9 V2 u
  61. static volatile int irqraised1 = 0;+ C1 U; I1 q; {1 T: L+ R: R
  62. static volatile int irqraised2 = 0;8 ~8 q! o+ b) D& a; O
  63. 9 |& U8 Z8 ?" B# w
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 m( b/ R3 }+ b$ B( S
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - ?7 C1 K$ K4 M- C' E
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    8 v+ }( Q4 S6 t5 y0 q( [! [. U& Z: f: p3 t, z
  67. 2 }2 t! ~3 x+ x8 A1 y! f8 I" D
  68. dma_addr_t dmaphyssrc1 = 0;0 t3 V$ D8 T  w" ^& n, ]
  69. dma_addr_t dmaphyssrc2 = 0;( L: t0 d3 Q8 y  b7 L4 b
  70. dma_addr_t dmaphysdest1 = 0;  I* e# m1 e# `( c! d6 i
  71. dma_addr_t dmaphysdest2 = 0;/ @/ ]0 T& r/ N: w/ D, n
  72. " b2 r; I  z: M" l
  73. char *dmabufsrc1 = NULL;
    & x8 v! D* c( t" ?
  74. char *dmabufsrc2 = NULL;+ G8 ^/ p5 T0 S# P0 d0 d# a0 F* c
  75. char *dmabufdest1 = NULL;
    - {( U! s; B2 t+ m; c# o! b
  76. char *dmabufdest2 = NULL;& n- d: q. G; N

  77. * m$ T: L% J& }
  78. static int acnt = 512;
    " d( j. U) T% k! O, e2 G
  79. static int bcnt = 8;# x# S$ E8 S5 M, H# Y9 }
  80. static int ccnt = 8;
    + _5 [, O' E3 R! E3 A: k5 T* y9 B4 {5 }

  81. $ \; L- O+ n" u! u% s/ x: B
  82. module_param(acnt, int, S_IRUGO);
    4 v" y/ \/ e2 `: [. @
  83. module_param(bcnt, int, S_IRUGO);
    2 A. C8 {6 M1 q% U3 B$ V
  84. module_param(ccnt, int, S_IRUGO);
复制代码
% L0 Q2 V, I' L
6 b/ \& h+ \' O* H% M' {1 [% H7 m  H, f
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用. R7 [! v; |+ d5 w
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。) |! d$ y. g& S! q: T9 c" y
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
- P% r* H5 m. X2 {4 B9 Z' |4 m$ Z5 m& R; e

9 S! O* w" B2 I* q& W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 23:42 , Processed in 0.041849 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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