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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
7 v1 C  D$ s5 s/ Y: G# f7 e* `1 x3 {$ l
  1. [code]EDMA sample test application: R7 N% {- r( X8 ?( m- w; q
  2. /*
    ; Z% N0 q* Q* X1 `% ?5 j4 _
  3. * edma_test.c
    / z6 l) x4 e: M& E/ B* V3 m9 |( x
  4. *8 K& ?' f# \! a' s# ^/ Z
  5. * brief  EDMA3 Test Application
    & V, u! z3 P5 U- a9 ~* ]
  6. *& e" q: E( x4 \  k5 e3 b1 D; b
  7. *   This file contains EDMA3 Test code.
    & o) w, n' Z3 V1 X7 a$ T6 \1 A+ n
  8. *
    ! |% g/ N- g6 H" M
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE9 F4 [. I' M8 x( U8 h' E
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    5 ~6 `  u" W5 a& v/ }2 C) ^
  11. *         TO CHANGE.- D2 C( b. F  P/ p2 z
  12. *9 Z7 Y" a2 y* N. N4 @/ K
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    + S& X* E' m0 Z/ u
  14. *
    3 P; l4 T5 g, e
  15. * This program is free software; you can redistribute it and/or
    / n: Q1 @9 Z6 S7 [4 C
  16. * modify it under the terms of the GNU General Public License as
    ; M2 h- {2 i; l- o
  17. * published by the Free Software Foundation version 2.( P: X& i3 y# C# I5 D" }
  18. *
    7 f0 A* a& }+ H5 I/ {
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    7 D+ r  L$ d6 ?3 F
  20. * kind, whether express or implied; without even the implied warranty
    ; r: {& M' _* E- G" A" v* ^% R6 R
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the' T( a' x' s4 ?7 j
  22. * GNU General Public License for more details.
    7 T6 l" O" [, O4 A7 S
  23. */
    - s' V/ O. f# V$ V$ D' k, p1 a
  24. ! S# r- D) l& k1 N1 b+ J' R" j
  25. #include <linux/module.h>9 |' m% m0 v+ K' O8 O+ O
  26. #include <linux/init.h>3 z) Z7 I/ I7 v' W! J# ?
  27. #include <linux/errno.h>9 X3 f8 x7 b6 C
  28. #include <linux/types.h># j0 A, Q+ d* ~' v
  29. #include <linux/interrupt.h>3 ~5 {9 N! Y# H$ Q/ p& s. \
  30. #include <asm/io.h>
    " |$ S. m4 c8 `6 O
  31. #include <linux/moduleparam.h>& P7 S& c! D6 z- V+ D; @
  32. #include <linux/sysctl.h>/ |: H' v+ \& c7 ?! N
  33. #include <linux/mm.h>
    8 Z' u) [: x% b
  34. #include <linux/dma-mapping.h>
    8 d" M2 S8 f1 `* v- k2 W
  35. ; |4 j' C/ M8 x3 {$ l) I
  36. #include <mach/memory.h>
    ) g. Q1 k+ }- O
  37. #include <mach/hardware.h>
    8 ]+ S4 w$ ]7 u! H8 u# _* ^7 e9 i
  38. #include <mach/irqs.h>
    5 P( e6 q! X& ~" \" |
  39. #include <asm/hardware/edma.h>
    + z2 r# ]6 Q3 ~% {* z
  40. 7 S9 j6 e4 q/ B7 P: i
  41. #undef EDMA3_DEBUG
    5 a* ]2 R0 `3 z2 b5 ~
  42. /*#define EDMA3_DEBUG*/
      }" ?. d( U: p! g" c
  43. : m  ]$ L  L3 s, e
  44. #ifdef EDMA3_DEBUG
    3 ~, x+ l) N8 _( W
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 A5 |5 f/ ]  P6 F' Y: v
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    - T+ c; `1 ^" R( Q0 R
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ' y2 y9 H0 l/ R
  48. #else
    9 [9 W/ [& o% p7 X
  49. #define DMA_PRINTK( x... )
    0 J  `( @' c% K7 `- N  k+ {
  50. #define DMA_FN_IN
    4 x9 {8 \" ~) ^2 x% |$ K
  51. #define DMA_FN_OUT
    4 u; Y  ^* s; f8 x6 [0 [: w& }4 Y
  52. #endif5 d$ c# D& P/ i. k4 i8 N
  53. " W# A5 F" H# f1 e& [$ N% d/ R. f
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768). }& p) f2 Z0 l1 s8 ]% t! [
  55. #define STATIC_SHIFT                3
    * e; L/ w& k1 F1 x* V) F# @! `) y
  56. #define TCINTEN_SHIFT               20
    1 m; l# b& O: e0 ?
  57. #define ITCINTEN_SHIFT              21
    " T2 n6 e5 L5 ?7 {7 q2 @
  58. #define TCCHEN_SHIFT                22
    5 \5 U) E) w- c* S3 G5 M
  59. #define ITCCHEN_SHIFT               23
    " J: x0 W% A* s. D0 X& F. R
  60. - A% t4 E! x' _' ~, ]3 o
  61. static volatile int irqraised1 = 0;( n; h: K5 k; W4 T, I" A5 l8 }  v
  62. static volatile int irqraised2 = 0;3 I6 P( P1 O5 _2 O; P

  63. 1 p. Z! K, K8 h$ h, x
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! I7 q% @7 l* M# ]2 E# Z. e+ \; V
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " a- i! A) |0 @$ f: ~, t1 \
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - p1 `+ [1 V# z" L

  67. - x8 K+ ~' e0 n8 M$ f
  68. dma_addr_t dmaphyssrc1 = 0;& E# u% U5 c$ l
  69. dma_addr_t dmaphyssrc2 = 0;
    % q; `. l: }$ U9 C: Z+ X1 s- F
  70. dma_addr_t dmaphysdest1 = 0;
    " x! W/ V" K$ O: R
  71. dma_addr_t dmaphysdest2 = 0;; J3 M) x# b% E$ y' y# r5 n1 t% [
  72. " R" {; ]8 f/ \2 v1 J' f9 ]
  73. char *dmabufsrc1 = NULL;
    3 J: b3 s) \6 Z7 G) {4 q
  74. char *dmabufsrc2 = NULL;- e. O( p- a6 C+ I8 [; x
  75. char *dmabufdest1 = NULL;$ r, N# o& ]5 @: M2 T& s
  76. char *dmabufdest2 = NULL;: f, x4 L; T( y0 O
  77. 6 B5 _' f8 q# F4 u
  78. static int acnt = 512;4 T; r* R6 V1 B' V# T4 f' s
  79. static int bcnt = 8;2 l- b7 {8 p2 T
  80. static int ccnt = 8;
    ( o/ Y9 e! X5 r  v! a7 I, K; L

  81. 6 @$ U% [5 ^+ U& U& q5 J2 ~/ d3 Q
  82. module_param(acnt, int, S_IRUGO);9 m- @/ Y" b  o: g3 m
  83. module_param(bcnt, int, S_IRUGO);
    2 j! e" w% b9 [- k" f
  84. module_param(ccnt, int, S_IRUGO);
复制代码

! `" @# K: J8 A- a/ N
7 O# Y) _# d! p) @8 ^: _/ A9 E, S, C7 P      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
5 M; X3 r( {9 v# u, Warm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
5 u; Q: M0 N* j$ f     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 R; `7 A! k$ x  W; R
& a+ U1 u6 f; a: H6 o
6 K- o% l- d5 a: B9 @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-2 14:28 , Processed in 0.036929 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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