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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
* N- A! h& |0 \: ~) L$ g, U! R7 b# O
  1. [code]EDMA sample test application6 o2 A6 j1 ?. t
  2. /*
    % [. Y6 [) u% Y) {
  3. * edma_test.c
    ; ^% V# ]" i# o( [$ K1 e/ j
  4. *9 f" ]! {8 s; k! T: M; n
  5. * brief  EDMA3 Test Application
    8 `; _3 f, W" h8 |9 }5 i
  6. *6 H* h# S5 v& [# c- ]9 z
  7. *   This file contains EDMA3 Test code.$ L0 a- T0 @( I4 K& i+ ]. a
  8. *
    $ R( i# ~' d% [  [# A8 I, u
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE+ r$ ^8 ]/ D) z0 i; ~7 u* O
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT  e  x! }9 S* [5 M
  11. *         TO CHANGE.% g  T, @' K$ q8 j
  12. *, a- X( V" S$ ?2 Z9 ^
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    " E* K1 J4 P' s, G
  14. *6 i  h/ b: A- i0 N3 h$ C) j
  15. * This program is free software; you can redistribute it and/or
    ) i* Z+ i& @# f4 F' T  ?; _5 L
  16. * modify it under the terms of the GNU General Public License as
    1 Q- d4 u# O% ]3 R
  17. * published by the Free Software Foundation version 2.5 \' ?( A' ~$ ^/ x; W) z+ |
  18. ** a- ~; ?) ?& |
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any/ G3 q# h# }* I, i
  20. * kind, whether express or implied; without even the implied warranty, @( v- E' c2 Z% P. ~- V
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the/ J+ j4 n4 v2 y0 [: n
  22. * GNU General Public License for more details.9 Y; U9 q1 G3 z/ I% t
  23. */( B- G3 S, J! @- j2 t) o; O* d

  24. * ?) O8 o' D1 @2 i. W7 K/ h0 J. b
  25. #include <linux/module.h>- Z6 P$ I6 w; J0 q0 [9 u
  26. #include <linux/init.h>- ^# h6 L% C3 m: ?0 }4 T6 `! Y# E
  27. #include <linux/errno.h>
    / `% [1 q, n. f7 Q/ P1 e
  28. #include <linux/types.h>
    0 X4 K) p- N0 [+ Y
  29. #include <linux/interrupt.h>1 @+ g/ n# ^! Z( ^4 k1 }
  30. #include <asm/io.h>  j6 A' H8 e# \  U
  31. #include <linux/moduleparam.h>5 P  ^3 s5 q, T* o+ n
  32. #include <linux/sysctl.h>2 L& A2 V  h! N$ f) w6 Q
  33. #include <linux/mm.h>5 p! s5 [" k( g* U, f0 R
  34. #include <linux/dma-mapping.h>
    9 H0 U4 K  Y  C4 w& `
  35. ! M. Y, ?7 e$ p
  36. #include <mach/memory.h>- P; q8 @$ y! p1 a; T
  37. #include <mach/hardware.h>, E1 B6 }* \4 s: s" x
  38. #include <mach/irqs.h>; h, t* u' W3 y9 q/ w1 B
  39. #include <asm/hardware/edma.h>7 ~4 F% q5 C2 L
  40.   I) C/ s8 I. A) S  _
  41. #undef EDMA3_DEBUG
    / @& {# E& m* Q5 ~
  42. /*#define EDMA3_DEBUG*/
    5 J( }5 A3 Q" W# ]* G- U! u

  43. & Z+ {+ A7 B* d/ O9 K9 o4 F
  44. #ifdef EDMA3_DEBUG
    ; O6 @% ^; f* ~4 l6 |% j
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)( I$ G  F6 S) Y) V
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)/ _5 _! M' V) G5 P- l1 ~
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)2 q+ U2 p; I6 W
  48. #else: j$ ?1 Z0 e' b+ y% a6 [9 v
  49. #define DMA_PRINTK( x... )0 a% X) O1 x& N
  50. #define DMA_FN_IN7 Z) u; D. }$ y! r. U
  51. #define DMA_FN_OUT% ?% B: W# K4 S# X
  52. #endif
    5 \4 d# D1 k/ o/ t- F

  53. ! A+ O, J% g* a5 ?0 |6 O9 R
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    : K8 a9 K# y4 h. Q3 \! N, v3 g5 j& `
  55. #define STATIC_SHIFT                3+ ^3 V) H5 p" K- o+ v& i
  56. #define TCINTEN_SHIFT               20
    - C9 b5 q  ~8 T3 o7 q
  57. #define ITCINTEN_SHIFT              21/ _# n8 G$ l7 J. u+ R
  58. #define TCCHEN_SHIFT                22
    % w: R3 t& E. Q7 v# E5 e
  59. #define ITCCHEN_SHIFT               232 X8 g3 s7 @# H3 H3 z/ C

  60. " P/ X: l* m5 B, m! R* M, N
  61. static volatile int irqraised1 = 0;5 \0 I! Q6 `( k, ^) ]  s+ P" P
  62. static volatile int irqraised2 = 0;) C; @9 e8 n# {  y, d7 c
  63. 0 M9 b& a1 a4 _2 v' Y
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 U, ?4 T" S, ^) a6 g, i- x7 W$ i, V
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 ]! W/ T8 G: _9 s' c; O
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);9 s# l0 i* Z) C0 f8 I, v
  67. 4 p0 h& A$ [* S# @# U
  68. dma_addr_t dmaphyssrc1 = 0;
    ! p# X) h3 c9 L& ]* C
  69. dma_addr_t dmaphyssrc2 = 0;
      B- K0 z2 N- |  W
  70. dma_addr_t dmaphysdest1 = 0;8 O1 v8 D2 D, {1 y3 P9 J4 Z$ X
  71. dma_addr_t dmaphysdest2 = 0;
    + ?+ V9 t1 S/ U/ U2 a3 t' ^/ ?

  72. ; g1 o% E" K& c2 l6 f" [0 B. r
  73. char *dmabufsrc1 = NULL;
    0 x5 P7 M8 g8 g
  74. char *dmabufsrc2 = NULL;9 x2 ^) H% F& O- @  l1 w
  75. char *dmabufdest1 = NULL;
    & |( q" w5 B, g9 \% m" k* n+ N: C
  76. char *dmabufdest2 = NULL;
    % E3 y& D  J/ Z. p  o9 n# @

  77. 9 Z! D2 G2 t/ D( B4 J# W
  78. static int acnt = 512;
    ( P/ ?! Q4 I: X  O+ X
  79. static int bcnt = 8;
      i- l# j2 P$ ]  {! W8 n
  80. static int ccnt = 8;
    . O  |: t. g; C2 `6 t, B1 P
  81. : W8 L. u8 E! J7 }2 D% m
  82. module_param(acnt, int, S_IRUGO);
    1 v4 S, h9 m- p4 |7 N5 o
  83. module_param(bcnt, int, S_IRUGO);
    ) s6 o% E6 B1 A$ `' y+ S
  84. module_param(ccnt, int, S_IRUGO);
复制代码
" R+ E1 N+ |9 R2 ]# C8 H: h# F

; [* Y. ^9 F# k      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
# D. }' x6 G& _% g! }$ u9 k5 `; }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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
& i9 v, I/ _- C8 k  @     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。; O. P; p/ F7 r3 j: h
, o1 @; b# s7 c( Z9 w- W
6 L- M! W' l+ R8 O8 g0 @! E( Q- f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-12 11:19 , Processed in 0.039345 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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