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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ) }+ h$ J; ~! B) [, [: \/ u7 r
  1. [code]EDMA sample test application7 J6 w% A% Y7 ^( A1 t3 ^
  2. /*
    * H& R) _7 V1 ~2 e1 {1 S* M/ H( P
  3. * edma_test.c1 d3 \  D2 W0 I; Q/ w
  4. *6 [; k: n& {: H
  5. * brief  EDMA3 Test Application8 t( |$ }  d  @4 l4 a. }) ~2 r
  6. *2 n8 f" d! `  [4 ]: ?" ]9 e( J0 [% }9 n
  7. *   This file contains EDMA3 Test code.0 L$ u: O) y  d/ U0 r' F; J: a  z
  8. *
    ( z7 }( s- |4 I  h
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE# T+ d  s) h. W, @; Q5 {6 W% B9 j
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    : z1 J# V, s: |
  11. *         TO CHANGE.
    4 l( w; j1 v! d+ h: R- m3 S% h' L. p
  12. *( R: z: e) V) r. M
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/! y8 n: u, V+ T
  14. *6 E# o0 u; z7 ^4 v6 @9 V
  15. * This program is free software; you can redistribute it and/or$ n. s: y* P) a: s; ~: R
  16. * modify it under the terms of the GNU General Public License as& _2 N* o( L% y: B% u- {$ i
  17. * published by the Free Software Foundation version 2.
      W* T- H! J% d0 Y: S4 X' e) H; P
  18. *
    7 b* T# @2 O8 X% n" ~4 g
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any/ I3 o9 j( p' c+ L
  20. * kind, whether express or implied; without even the implied warranty* O& j, O5 J: Y# i; ?# O0 k% M6 `
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the6 p& f& C7 j& g) U. O
  22. * GNU General Public License for more details.5 o6 b6 S, }* r& Q8 h9 E& o
  23. */3 Q) j" _5 E7 w2 D
  24.   ~, B2 U$ @; ~! d* L+ p. y
  25. #include <linux/module.h>. {- W( P+ o* o3 w/ ?
  26. #include <linux/init.h>
    4 F, X3 Z8 D) ?- Y; p$ m7 ~0 B
  27. #include <linux/errno.h>
    1 M0 P+ C* Z5 c# C2 B* F
  28. #include <linux/types.h>
    8 Q- Y% D, N4 u& v
  29. #include <linux/interrupt.h>4 i$ q: q: C5 q5 N. x) P1 Z+ ]
  30. #include <asm/io.h>
    # q5 w6 {2 _& M
  31. #include <linux/moduleparam.h>
      R. b8 z2 Q$ `# g2 A
  32. #include <linux/sysctl.h>3 D% P: m9 W0 k4 O. L9 Z/ |
  33. #include <linux/mm.h>' e* X0 V9 q- i0 o
  34. #include <linux/dma-mapping.h>( `1 }6 q" L3 g9 `: H
  35. + W' I. u  t7 y$ t
  36. #include <mach/memory.h>
    ! j* Q  f9 K% C% m, P. Z1 e
  37. #include <mach/hardware.h>2 t5 @8 O0 Z1 y, q' t, Q0 e
  38. #include <mach/irqs.h>
    - {3 T- N8 v  K+ C* B
  39. #include <asm/hardware/edma.h>  G9 V  a" Q$ n3 n
  40. - M' r2 S! n3 M0 T
  41. #undef EDMA3_DEBUG
    " R5 @+ F. ?% G( i
  42. /*#define EDMA3_DEBUG*/
    ( @2 c+ Q$ k4 k) z

  43. : g  Z, ]8 }" v& b! ~% E6 q
  44. #ifdef EDMA3_DEBUG) b+ O# X5 G' I, H+ g: _  R- M. a
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)& }" p0 E* p# C, ?9 f  E5 ?: F
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    , o8 W# X# ?! ]2 R4 P
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    8 w( ~. I) g/ C/ j
  48. #else
    ) I: G% S4 r, k( D. ?* C
  49. #define DMA_PRINTK( x... )' x% m7 t' ]# o( w; @
  50. #define DMA_FN_IN
    0 s, W6 h4 g4 z4 E0 E
  51. #define DMA_FN_OUT
    9 L- b8 W2 p( `2 \
  52. #endif( W- m7 Z. a( a5 ?

  53. % J. a. c* F, V! Y4 e( Q5 @3 u  b
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
      l7 J8 e$ e+ N
  55. #define STATIC_SHIFT                3. U  F; ~6 f% n  j0 F
  56. #define TCINTEN_SHIFT               20
    4 m+ g: P7 a8 j, b3 t
  57. #define ITCINTEN_SHIFT              21
    8 C6 f$ I  e/ D
  58. #define TCCHEN_SHIFT                22
    ; U  k% \& k5 _; @+ P# `5 d
  59. #define ITCCHEN_SHIFT               23
    8 q& Y! T( v5 {- k$ d. m+ @

  60. ! I  p# R1 q) w- H6 A
  61. static volatile int irqraised1 = 0;
    ! L' W2 Y3 E* ^( O5 [7 Y
  62. static volatile int irqraised2 = 0;5 H2 L7 R; D6 H& T# d! I
  63.   c, Y9 B/ v" j' \  M) W0 K; B
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);9 f) C; `6 j- g6 p& s1 m+ c. J5 ?5 H
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# X- ]/ V3 u' e8 r' k- i: N) \/ R
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * g' F* b# l* n- m! k0 q
  67. ( U4 I2 |' H; w7 v0 p
  68. dma_addr_t dmaphyssrc1 = 0;
    8 u6 i: \: r; ^
  69. dma_addr_t dmaphyssrc2 = 0;& C: H4 j. ~# s" F6 q& ?$ S
  70. dma_addr_t dmaphysdest1 = 0;
    0 g- e3 B) S+ k5 v
  71. dma_addr_t dmaphysdest2 = 0;+ B) X7 T# g4 b* [- G+ x
  72. # o+ J" Z$ U) _5 V) _; C
  73. char *dmabufsrc1 = NULL;0 y+ R; U3 k% H( n
  74. char *dmabufsrc2 = NULL;
    , Y" X3 ^0 I/ R$ n6 Y
  75. char *dmabufdest1 = NULL;/ {( w( O- q! _( {8 b8 b+ r
  76. char *dmabufdest2 = NULL;( ?2 V7 f2 ~5 y- ]. o  I

  77. 5 p, a; S7 I: h0 X! ?% G
  78. static int acnt = 512;6 B6 ]( R# ~( i: G* q% J
  79. static int bcnt = 8;8 C0 B8 A8 _9 P" o
  80. static int ccnt = 8;
    . d3 w  n  t# v4 n. @

  81. ! Z5 A6 b' ^6 r  X! n
  82. module_param(acnt, int, S_IRUGO);
    / F! S$ G+ f1 l/ x0 H
  83. module_param(bcnt, int, S_IRUGO);: H' \: \# D8 C& t: H
  84. module_param(ccnt, int, S_IRUGO);
复制代码
8 R& |' E8 u( g+ v( c/ `( m7 w6 g
: S2 U2 Q2 y  I( f8 Q
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
3 [4 L! m$ Q8 ~( ~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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。$ J/ Y% \5 ^* w& Z( A
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。+ `/ u) b% D  k: `

& O- E( b6 V# u& j* n0 c8 s6 v& F* b( w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 22:05 , Processed in 0.041321 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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