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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
! B8 H; L6 u+ l' H
  1. [code]EDMA sample test application
    9 }- D4 w8 B+ \4 u& s) l$ v
  2. /*" t& g8 W, G$ G4 B) u5 W7 y
  3. * edma_test.c( x4 V3 m3 \# m% n) j/ h
  4. *
    , j6 a; Y+ t1 T6 I; U* R
  5. * brief  EDMA3 Test Application& S7 y7 V2 q7 a$ R
  6. *
    $ q- U( \( K: L/ l' r0 K
  7. *   This file contains EDMA3 Test code.
    : b  v& |3 h5 p, C$ o6 j
  8. *5 c9 {* w# R' P
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    % E/ q+ F8 u" t8 s) L& A
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT- N- x- g) O, i* g6 U
  11. *         TO CHANGE.
    ! }) w  K+ T& V5 O( i) X/ T8 g
  12. *
    , C) f# @  _5 ~- A% ]
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/  I% s! Z- F6 T# A
  14. *
    ( `  a2 ]" C2 B
  15. * This program is free software; you can redistribute it and/or
    1 M! K/ h0 Y, u
  16. * modify it under the terms of the GNU General Public License as
    9 T. Q$ H3 C; O
  17. * published by the Free Software Foundation version 2.- O! X. T8 D$ d3 z# ?/ W
  18. *
    - T1 o5 G' ^) u& b6 ]: Z! S" W$ c
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any! J1 l7 S2 n; b/ i( y' Y6 g$ r
  20. * kind, whether express or implied; without even the implied warranty' D) p9 H, _% Z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the% n- l; Q6 N/ u9 v# _) |
  22. * GNU General Public License for more details.
      z0 J: P1 D. X! `7 O9 m
  23. */
    8 T% Y( m0 K7 D( d
  24. " T: p6 K  v, K! A2 H
  25. #include <linux/module.h>. b+ x7 x  S& N
  26. #include <linux/init.h>
    ' U/ W) t, g5 K8 X, O0 s
  27. #include <linux/errno.h>
    & |% \! h, r( O2 ~0 p
  28. #include <linux/types.h>9 F2 c6 B) M$ G# r0 W# e$ R
  29. #include <linux/interrupt.h>
    ' T: s; K0 y2 i1 P) m( }
  30. #include <asm/io.h>5 _: P; B3 f8 [' H5 M2 \2 n
  31. #include <linux/moduleparam.h>
    5 v" B1 n' B6 E; x- j" `
  32. #include <linux/sysctl.h>
    3 q: z! g: ~. r: d" ]* Z. ]
  33. #include <linux/mm.h>1 u3 W: p* Z/ v5 m9 W  \
  34. #include <linux/dma-mapping.h>
    $ x2 ]9 U. j+ ^% C1 f; V" Z

  35. ( h7 ~7 l; Y& I- U! V! b
  36. #include <mach/memory.h>
    9 Q8 G" X- W- q2 ]- O+ F
  37. #include <mach/hardware.h>
    8 C9 b, C8 J( E. y* g% ]2 e2 I2 x
  38. #include <mach/irqs.h>. ]% S- a$ B1 R4 a8 ^
  39. #include <asm/hardware/edma.h>
    3 b2 x6 t9 A; y* U7 k2 K- T
  40. 0 s. \' i, L5 j& p& t$ T3 `
  41. #undef EDMA3_DEBUG
    * p% K8 R4 z1 W7 i
  42. /*#define EDMA3_DEBUG*/* ^& J$ i6 s& }! M, S
  43. ; W3 R4 t1 _& U
  44. #ifdef EDMA3_DEBUG
    / G: F4 T% g5 O2 o1 V$ n
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)6 ?2 {# R1 H1 I
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)& G" h/ k* [7 K2 [7 P% }, y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ) p: A+ U0 n; j0 y6 z' z
  48. #else5 G, m2 n% X8 w
  49. #define DMA_PRINTK( x... )
    ' a/ `; R! j5 [6 Z3 g
  50. #define DMA_FN_IN
    " |: K' }, R9 j& b0 l( L9 ?( Y+ }
  51. #define DMA_FN_OUT
    / D8 H( c  i  U2 p: g+ U* L
  52. #endif
    1 r/ s' Y. g" e( W' k6 Q, h6 a

  53. ( g$ I! p( g/ m- ^( p. R, G  i
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ; q+ T4 r3 f1 o9 ?4 `1 b, V( p
  55. #define STATIC_SHIFT                3
    ' p3 R# \  K* c9 b+ g" P! k  l
  56. #define TCINTEN_SHIFT               20
    ( q0 k& ]1 f0 ?5 A9 Y' E6 F
  57. #define ITCINTEN_SHIFT              21( }3 E* I4 z$ z
  58. #define TCCHEN_SHIFT                22. j% S- F: o* n
  59. #define ITCCHEN_SHIFT               23: _; \" V2 c+ f4 z% P' g+ V

  60. ( p; N  {- P6 ?3 l' U0 U
  61. static volatile int irqraised1 = 0;1 `% ]- h+ H. y0 O
  62. static volatile int irqraised2 = 0;
    ' V, i; `4 T! S; z/ \8 a1 v1 y' Q
  63. 4 d! j1 Q' V! U8 F  a
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  K7 h! x. }5 g1 a
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);9 \4 O) |1 A: D2 @- X
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ T0 [6 k6 c' |  a, k% Q/ _

  67. 9 S# K' f$ i. @$ u" S' i+ n( J6 j2 t4 H
  68. dma_addr_t dmaphyssrc1 = 0;
    6 @) H# \  y0 d5 J4 _
  69. dma_addr_t dmaphyssrc2 = 0;
      B6 ^* T' f% `5 ~& ~
  70. dma_addr_t dmaphysdest1 = 0;
    & j! z3 y& f2 U: z+ d  b$ Q
  71. dma_addr_t dmaphysdest2 = 0;
    2 _/ {) Z: k2 R3 E, _

  72. 6 e, y; U3 w! l# Q& Z
  73. char *dmabufsrc1 = NULL;( D7 X) p" f& \; b$ S1 \7 K
  74. char *dmabufsrc2 = NULL;
    % J- a/ f. m3 {. L# G9 G' J
  75. char *dmabufdest1 = NULL;
    " R, h: k6 M( {: A$ U
  76. char *dmabufdest2 = NULL;
    , E5 a0 z, `  N1 Z4 l8 i- V+ r
  77. ! D$ h  x. @" m
  78. static int acnt = 512;9 b5 {7 H% |% n
  79. static int bcnt = 8;" C: G* q' {. o5 L5 V
  80. static int ccnt = 8;
    / k( O3 |0 k3 r

  81. 0 k* H3 y* s0 ?( I
  82. module_param(acnt, int, S_IRUGO);/ q; {- _" _" x' Y1 d
  83. module_param(bcnt, int, S_IRUGO);2 [6 L6 Y6 T- Q5 Y
  84. module_param(ccnt, int, S_IRUGO);
复制代码
) b" Z. t) S( f
0 u& J2 l. m0 D4 c# _
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
+ N5 x& l  v# Z2 @$ r# ^' Darm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。9 B( h' @; h6 {7 b5 ~
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。6 N5 J: x5 \$ A+ c  @* v
, }8 M- o1 I  M. p' I
: X  f8 K* }1 G) O$ S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-3 17:32 , Processed in 0.039391 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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