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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
; p' J$ H  @. l9 j6 J! o
  1. [code]EDMA sample test application
    / F, \8 p8 j: U
  2. /*& b: Y# m8 e" E' [4 ^4 I
  3. * edma_test.c9 M+ C3 ^+ F  G( a
  4. *; C# }' `1 B+ a# O/ \/ T* d
  5. * brief  EDMA3 Test Application
    & n" K& Y: F( W0 p* V  ?
  6. *) {$ L' @3 s/ K. w% k
  7. *   This file contains EDMA3 Test code./ M, W7 m+ \; ~# z9 P
  8. *
    # W1 `2 b! g# O
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    2 U# [2 V, f% z4 U
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    2 w) _5 a9 Z7 O; e; Z
  11. *         TO CHANGE.
    ) A) K7 F8 f' ]- l+ x1 x
  12. *- Y6 q) o; V) k1 q3 G) s2 E
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/) H/ o( r0 G  e- O
  14. *1 |( {- K& N5 W  n5 u, `
  15. * This program is free software; you can redistribute it and/or8 j3 X9 L$ n& H4 G
  16. * modify it under the terms of the GNU General Public License as9 c2 m' j2 z5 H9 s. h  S9 M
  17. * published by the Free Software Foundation version 2.( D* d: Z: [/ [) J. d0 @
  18. *
    ( j' q$ {! \/ B
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    7 q! N! s/ a, E! G
  20. * kind, whether express or implied; without even the implied warranty9 r! P# v/ l9 X! J! H1 u
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ; Y' i: d' h7 |
  22. * GNU General Public License for more details.+ \' A0 }# t# H* ]
  23. */
    $ ?7 @. k: x0 ]$ x. U

  24. 3 J7 ~  R* K5 Z" ^
  25. #include <linux/module.h>0 R( `  I2 l7 T. d  Z, ~# U" W
  26. #include <linux/init.h>
    * e  C9 A5 J3 Q2 z
  27. #include <linux/errno.h>
    3 l: `/ W4 \: d7 f. j% d2 ^
  28. #include <linux/types.h>- E# o+ t" u! C1 b9 Q- G9 h! b
  29. #include <linux/interrupt.h>9 m# |0 B6 m/ a+ a6 Z( ^
  30. #include <asm/io.h>
    , [/ ^: V" E) T0 w8 s; ]6 X+ V
  31. #include <linux/moduleparam.h>! M2 K, w; Q5 t& a! C
  32. #include <linux/sysctl.h>
    8 T- F. v, t! F) @
  33. #include <linux/mm.h>
    - `' y' a7 _( G6 i$ K- o
  34. #include <linux/dma-mapping.h>
    ' }0 b4 G& P$ v, ~7 M
  35. 1 M1 @# _$ N4 s# O& n
  36. #include <mach/memory.h>8 r3 ^; |' t+ M! l" m+ G
  37. #include <mach/hardware.h>
    * F% X, I0 f, e: b5 w
  38. #include <mach/irqs.h>* o8 K9 A: n, r& G
  39. #include <asm/hardware/edma.h>) ^, d2 O; J; {+ c9 f

  40. 6 @9 m4 y8 q+ D; ?% |
  41. #undef EDMA3_DEBUG/ p' c# p1 k, I+ {( C8 A3 R
  42. /*#define EDMA3_DEBUG*/
    - w( ^& W; z/ v

  43. , j/ k2 ^: C% \9 i- y# E3 R
  44. #ifdef EDMA3_DEBUG+ v  G; R3 Q; @& [, F6 E3 h
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    . L: N$ P& j( X- A7 ?
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    8 R, E: v) [; r9 D: i  E5 e7 l; ~
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    * y3 t5 C( S% J2 e
  48. #else8 I8 u" z* [9 y$ F
  49. #define DMA_PRINTK( x... )( v$ O* b5 K8 q) h' o
  50. #define DMA_FN_IN% {- Y3 ~* [, d7 J: B% N# Z
  51. #define DMA_FN_OUT
    3 g9 V0 o7 j9 z$ ?! Q! C" ?
  52. #endif
    $ q2 h. L" L# m0 `

  53. ) Y( f8 j8 y% e3 B! w5 K  ^
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ) G' W% D7 x6 a
  55. #define STATIC_SHIFT                3* G5 J! ~7 a, r
  56. #define TCINTEN_SHIFT               20
    5 d) s6 g: ?/ u0 l3 T5 t
  57. #define ITCINTEN_SHIFT              21
    * R& R, L) y( {: Y+ u& B5 Y
  58. #define TCCHEN_SHIFT                22
    ) x" F% q" C' }$ c
  59. #define ITCCHEN_SHIFT               23
    & `9 v; U  U8 [4 j! q6 E" C0 h! X

  60. ! D0 K/ E# O' D) g! d& N' S6 x; ?
  61. static volatile int irqraised1 = 0;; f1 s7 G7 a) ]$ G
  62. static volatile int irqraised2 = 0;
    7 s1 X8 S( A8 w2 a, {7 G

  63. . g( R; I3 D8 A/ y% q3 V% @
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( X/ \& {/ _3 B
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / e. }) s) b2 r* T8 r9 y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# t# D9 x$ p1 o  k
  67. 1 s7 T5 Q+ Z6 @( g6 u8 {
  68. dma_addr_t dmaphyssrc1 = 0;
    * s" w8 h8 f% i  E$ h
  69. dma_addr_t dmaphyssrc2 = 0;' C  t1 r) u$ s; P& o
  70. dma_addr_t dmaphysdest1 = 0;1 P3 G% X" P! {9 H0 i3 q0 R
  71. dma_addr_t dmaphysdest2 = 0;
    ( p  E8 r) V6 I" h% T! k. F; l

  72. ) y  G/ W; J. {
  73. char *dmabufsrc1 = NULL;
    9 ~1 f4 A6 [) h$ e
  74. char *dmabufsrc2 = NULL;
    5 w* b6 m' U8 c" x! l
  75. char *dmabufdest1 = NULL;
    7 t5 l- F" N! M& h
  76. char *dmabufdest2 = NULL;" y: c8 Q. C( ]. d

  77. 1 o4 l$ I$ I% b6 G# N! q5 r
  78. static int acnt = 512;7 @9 T  b, J, |& m  \) ~
  79. static int bcnt = 8;
    ; p( v7 l  O7 Y" g, P( R8 b/ }# a
  80. static int ccnt = 8;9 ?5 n: V2 Z2 u2 }4 R

  81. 2 e6 i" X, U8 A6 e/ [+ G; W
  82. module_param(acnt, int, S_IRUGO);5 P6 u( S# f. d5 v. d+ j4 {' k4 C
  83. module_param(bcnt, int, S_IRUGO);
    0 Z; i: X. V, m& I2 ~
  84. module_param(ccnt, int, S_IRUGO);
复制代码
0 n  x) @9 ?7 O/ ^' _- p0 W2 R

4 C& f: @  c! u. E! C      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
4 L# {/ I; K1 n1 e: V( Qarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。. V$ I  }8 K6 A
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
9 Q1 ]* a: g# N4 A) N  M5 B, |4 G& P9 T/ R) J
, T, }+ X- w% L& `* `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-14 17:20 , Processed in 0.042460 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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