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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ! b9 m% T7 ~+ T( v
  1. [code]EDMA sample test application' J* T) W; z  O5 A/ X
  2. /*6 U3 m+ o% f4 l  F7 |
  3. * edma_test.c
    3 N% t; ~$ \! m0 \' \7 d& Y
  4. *0 p8 C4 A" b- ~2 o
  5. * brief  EDMA3 Test Application# W* t3 _! k& y' h4 c1 J8 F
  6. *0 y, ^1 \/ [  e0 \; s% V
  7. *   This file contains EDMA3 Test code.9 s* V2 v- e* I0 B3 X
  8. *+ f$ w* G) k% |7 i" }
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE( m2 O- C6 h: f3 s, v& g& Z
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT% @* R! l% E2 L: h( _( |
  11. *         TO CHANGE.) q( e' c+ I* r0 X9 C  I$ Q! }
  12. *
    ( u' |4 x: l* i! f  N0 \% P7 A9 Y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ! J2 ]$ [- e0 x
  14. *
    / j& O7 _: c, _% {6 b, s: x) Y; @
  15. * This program is free software; you can redistribute it and/or
    8 a1 a4 G. Q% C5 k% ?
  16. * modify it under the terms of the GNU General Public License as
    . {( o. n" i3 M
  17. * published by the Free Software Foundation version 2.
    3 J" T+ e1 E, q2 B& l' @
  18. *" f% O- q0 {0 K8 v) a
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    . {6 `& d2 l7 G$ r  l
  20. * kind, whether express or implied; without even the implied warranty
    3 L. J* X/ @2 P# [. H! C
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    - Z' W5 T9 h& d1 _7 `; k3 |, d
  22. * GNU General Public License for more details.6 m) \) Z. z0 P/ k0 d
  23. */
    ; P, u9 N4 n+ }& [* J3 M
  24. 4 X, f; T( h% c6 p2 c8 ^
  25. #include <linux/module.h>3 L" {# {% }: P. v
  26. #include <linux/init.h>+ ^4 `7 E3 {/ W6 b" Q, h% L
  27. #include <linux/errno.h>
    , L* w8 z/ R( V! F, k
  28. #include <linux/types.h>. g0 ~& D# W: `! ?+ Q
  29. #include <linux/interrupt.h>7 w9 c( l) R% r
  30. #include <asm/io.h>
      W6 o3 l$ e0 p3 m1 `1 g
  31. #include <linux/moduleparam.h>
    " G( G- r+ E" J
  32. #include <linux/sysctl.h>
    . C. s$ q4 A; ]: d# V! y# x
  33. #include <linux/mm.h>! H5 I  |3 j5 v" Z' l) T8 C
  34. #include <linux/dma-mapping.h>. b. C# I! H5 G* B- ~6 ~  W. J
  35. 2 P  t  u; d) \4 E7 p4 y
  36. #include <mach/memory.h>3 j5 M- U' c' A& R# M- V! O
  37. #include <mach/hardware.h>
    0 @4 l( d3 G! j8 I4 K* v! e
  38. #include <mach/irqs.h>
    + b4 e% P2 T" G/ p4 n/ N
  39. #include <asm/hardware/edma.h>. R8 |0 c! W; j3 M2 C

  40. & n  C: Z/ e8 W
  41. #undef EDMA3_DEBUG
    ) Z0 i8 h9 A' Q0 ]$ h
  42. /*#define EDMA3_DEBUG*/
    : ^; [& v  v" j  I

  43. # ^1 f0 N* R9 r/ M6 ~# w
  44. #ifdef EDMA3_DEBUG* Z# ~; G3 B2 l( _6 L5 A
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    5 E; J3 U  e& w7 C0 a' N" G$ p( j$ d. Z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    / ~! L3 D3 y/ L5 W9 G3 s. z; ^
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    2 R6 J+ \# _" F! }% p! J3 D
  48. #else9 C/ m- D2 G2 W  N* O
  49. #define DMA_PRINTK( x... )/ N& p2 A: q+ f. V( n& O* a& l
  50. #define DMA_FN_IN; D4 V, |( `# g! o
  51. #define DMA_FN_OUT3 m# T. h5 K- I
  52. #endif
    / [- h9 N! i* Z/ z$ o6 i$ ]

  53. 2 v# O/ v: H" }5 T. @9 `5 Y
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768), v' b$ z1 e' t* n$ B/ Y
  55. #define STATIC_SHIFT                3
    - l1 S! f6 G- T- q
  56. #define TCINTEN_SHIFT               200 ]( k0 @9 p; q8 c3 k+ w7 C
  57. #define ITCINTEN_SHIFT              21
    & w* S3 k/ z/ F* n$ Q
  58. #define TCCHEN_SHIFT                22  L5 H; U7 J! K
  59. #define ITCCHEN_SHIFT               23! E- v8 z/ a! h3 o3 C$ R
  60. ' W$ L  \! `: f
  61. static volatile int irqraised1 = 0;
    2 `3 K, H/ |$ V' V, B
  62. static volatile int irqraised2 = 0;
    # u4 y& x0 X; D
  63. + L: r9 c( [2 e( ~8 r4 B
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ \- O* A& r4 D2 p$ J* F) y' P- l. i
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 \/ x+ I7 o3 L+ w" }% l1 U+ M
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. Y2 n7 v- R4 \+ G+ L; O
  67. & N5 t  o( N- _/ o! H9 C4 M: j6 Z
  68. dma_addr_t dmaphyssrc1 = 0;
    3 l! j8 v' P5 o
  69. dma_addr_t dmaphyssrc2 = 0;5 O( U/ Z9 w9 v5 t
  70. dma_addr_t dmaphysdest1 = 0;5 l; e- Z( G  h: L+ F4 k& J
  71. dma_addr_t dmaphysdest2 = 0;
    ( F4 W+ ~# i0 D6 F8 }4 h
  72. 7 f, g6 o1 X- f$ v
  73. char *dmabufsrc1 = NULL;7 M! \7 ?, D0 k( S  x
  74. char *dmabufsrc2 = NULL;% u+ j9 ~* s( N( O7 L2 Y6 s" r% W  }9 u
  75. char *dmabufdest1 = NULL;- _  Z- t3 E5 M" w
  76. char *dmabufdest2 = NULL;
    6 E- J8 y* H. [4 l1 f
  77. . }0 M2 A. ~6 z4 C3 s
  78. static int acnt = 512;% ~; {; Z# W( v" M. o. E; E; q
  79. static int bcnt = 8;
    ! G+ n3 F6 c7 W/ }
  80. static int ccnt = 8;$ z  i4 j0 b! x% O! N
  81. 7 z7 z% W) E9 \; z
  82. module_param(acnt, int, S_IRUGO);
    ( P$ Q# v! h$ l( B( s" `
  83. module_param(bcnt, int, S_IRUGO);
    0 H: z3 D- d* o* E& y3 H! w/ @
  84. module_param(ccnt, int, S_IRUGO);
复制代码
. ?$ t( p7 e. m) f* y- t/ D$ f6 d

, O! n/ U3 w# W' n      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用" R( b6 v; }6 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
& K; q2 g+ V! @/ t+ U* c' {     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。; v) c: {) a8 K1 H6 J

; @4 m3 [1 `+ i" c8 ]! z
- u0 X& Y1 g! N) O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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