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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 & K  g, @2 s2 i  B0 I# X3 L' c, O
  1. [code]EDMA sample test application
    ! F% Z, Z! ~+ f4 a7 G7 Z; G
  2. /*
    - d8 C2 [3 l+ P$ T2 n
  3. * edma_test.c
    3 _. g2 a+ f. f- a  Y" C! v8 U3 r, Z, g
  4. *! t" N! U# z8 T9 C- i, p7 O* M
  5. * brief  EDMA3 Test Application( ]# J0 `3 M8 t/ G, V
  6. *
    # o6 d2 S! a5 N& j4 T: S
  7. *   This file contains EDMA3 Test code.4 ^4 f$ |- v6 p- N9 v  {- D
  8. ** s! n+ b% a$ Z5 m4 C4 }
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    7 ]0 h9 @. t& w* ?4 ^' J
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT7 ?$ E6 a, Q/ U! R. P
  11. *         TO CHANGE." c. e0 u2 j9 ?
  12. *2 x. D- k/ y6 m0 v: \; k- w
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/: m+ F  H* m3 a: Z! P) z% h
  14. *
      v( [& w( r* v4 t' v3 V9 R4 B- ?' H
  15. * This program is free software; you can redistribute it and/or: ]) V# G2 P  H  c, }5 ?  U( m5 V
  16. * modify it under the terms of the GNU General Public License as9 @3 S( Q7 y" j+ |7 g/ }# K/ c! l
  17. * published by the Free Software Foundation version 2.
    1 n3 p$ i# r. L9 I
  18. *
    5 g1 l; s6 T  i+ _+ T
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    0 p1 N# u& F1 O! }3 N  `
  20. * kind, whether express or implied; without even the implied warranty( E- @( V' O9 y/ x; a6 {
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # P7 c5 Z6 K, ?& I+ `' e
  22. * GNU General Public License for more details.
    1 F- v4 O$ p4 A: k
  23. */
    % L/ l7 x- s& C' f0 ^! C8 x

  24. % N1 P) b3 f' t1 a" |( R
  25. #include <linux/module.h>
    - E* v+ }6 ]' c* P
  26. #include <linux/init.h>& B) s$ x! p. }+ @
  27. #include <linux/errno.h>
    3 @, `% o: Z6 Q  z, A2 j
  28. #include <linux/types.h>; [9 F+ t8 X: d* x: d3 O
  29. #include <linux/interrupt.h>
    " N) e8 z( U+ g0 t5 u
  30. #include <asm/io.h>
    + K& k- R9 \+ \' p5 C- @# P
  31. #include <linux/moduleparam.h>- m1 I" p8 g( \3 e4 f, V
  32. #include <linux/sysctl.h>* c' {! B: v1 t
  33. #include <linux/mm.h>- i: K' i# C1 M
  34. #include <linux/dma-mapping.h>
    6 k9 n$ J& V' j4 ^2 f

  35. " N' o' ]: R! e3 K
  36. #include <mach/memory.h>
    1 V- }  \; I0 {( P/ D# |  t
  37. #include <mach/hardware.h>/ T4 B: m6 E; Y- j' `% ?
  38. #include <mach/irqs.h>
    / j0 U6 W# J5 o! Q
  39. #include <asm/hardware/edma.h>
    / t# H4 R# u* _' \5 y* T) N4 u: y

  40. % x& \" d5 D, E$ u# I- K) \
  41. #undef EDMA3_DEBUG
    " F2 y7 J, T0 p3 K: l
  42. /*#define EDMA3_DEBUG*/
    1 Z' Q0 J/ ^$ V1 _. l4 \% j- _: Y

  43. ' `. D. M) h1 N$ y  \
  44. #ifdef EDMA3_DEBUG+ ~. k* P/ V- t
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)/ x. H9 I" Z# ?$ V
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    3 B, g7 W' D. X$ W
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__), G' |7 _5 A. A
  48. #else
    2 Q( Q4 y& l! f( c9 u' _' t3 j: Y
  49. #define DMA_PRINTK( x... )
    ) C% k0 R, C  E: a# l% v0 c$ t
  50. #define DMA_FN_IN
    - N3 b; I3 f4 p: k
  51. #define DMA_FN_OUT  G! s* @) U" Q! ^1 I# w! I" S
  52. #endif: a) a8 j, p; k: i5 }, k

  53. + S, o) n# ]: w, w/ W
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    2 t# p/ _0 r" R/ f) t9 Q* s
  55. #define STATIC_SHIFT                32 F) m; D7 W5 @
  56. #define TCINTEN_SHIFT               20
    # N: @: c  V+ S$ U, J$ k
  57. #define ITCINTEN_SHIFT              21
    / K4 |6 o0 K+ F4 D8 g: z/ ^+ T
  58. #define TCCHEN_SHIFT                22' Q% B* }  b% o2 Z# y; w  p
  59. #define ITCCHEN_SHIFT               23
    4 P! _! n1 `  W' X8 |

  60. % E. N! u6 n& h0 I# l: _
  61. static volatile int irqraised1 = 0;
    6 {0 \- ]2 N8 _# L
  62. static volatile int irqraised2 = 0;! ]$ {+ z9 y3 u4 P" G

  63. 9 d; F4 h7 @# t& Y8 Q
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 V- S' s# K/ r7 ]$ z0 F
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  E3 _0 o5 |% o7 b- o8 b8 Y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    + u: _+ c4 F. Z6 Q( F0 k  ~

  67. , ^  X$ z0 A6 }* v* B0 j8 Q) F: h8 j
  68. dma_addr_t dmaphyssrc1 = 0;
    & u9 @/ [" ~9 j3 u9 [! ~; C% H& q
  69. dma_addr_t dmaphyssrc2 = 0;& r* Q; ^4 o; V2 ?4 ~5 T- v" \, {
  70. dma_addr_t dmaphysdest1 = 0;
    3 [  g" [# Z8 f3 I! D
  71. dma_addr_t dmaphysdest2 = 0;4 d4 \  p3 u; U) c$ @
  72. 8 i/ V9 u2 N* P0 T2 F
  73. char *dmabufsrc1 = NULL;
    % ~6 V9 N! R) q, m) }
  74. char *dmabufsrc2 = NULL;7 ~2 m; y' b: [8 c& x1 P$ E
  75. char *dmabufdest1 = NULL;! A$ }; G$ a/ R- r$ K( s1 S
  76. char *dmabufdest2 = NULL;5 a1 R; \2 d6 ^! D: e" u
  77. 2 {& L! D/ ?6 @& o3 C2 T8 s2 F
  78. static int acnt = 512;
    : t! t% ]; b; r$ s  l
  79. static int bcnt = 8;6 _; `$ k$ H& N1 r9 }! D4 Y
  80. static int ccnt = 8;( P% S/ M" Q& s* y$ `' j

  81. ; i/ v! z2 @) f) c1 f
  82. module_param(acnt, int, S_IRUGO);% T; p6 {! E9 e0 c9 J+ T
  83. module_param(bcnt, int, S_IRUGO);
    & O7 A# ]2 x& U& K
  84. module_param(ccnt, int, S_IRUGO);
复制代码

8 C- d( p- \" l4 U& t9 ?$ A7 P% B1 Z9 p
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
, s/ h# `$ ^7 N( y# H2 ]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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
) V" I' _. P# z$ F6 M     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
" ?! \$ I# h4 Y0 ]' t# b2 s) e6 z' F9 C  g4 k* O( i! I
3 \  o3 ^3 F9 W9 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-13 09:15 , Processed in 0.049191 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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