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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ) l# E5 b9 y( b' x
  1. [code]EDMA sample test application
    0 h" ^& }# Y, \( _
  2. /*9 F& E9 `# }& f5 ^4 z2 m* E
  3. * edma_test.c2 f; t) L& f! N) P
  4. *
    * ]; {* s% {% ~" E. ?1 @% m
  5. * brief  EDMA3 Test Application) f& p' B7 Y" }8 Z$ V4 @
  6. *+ @9 i( U9 S# X) \7 x: K2 {9 g
  7. *   This file contains EDMA3 Test code.( r" ]. i+ i" H  a, G9 m
  8. *9 K6 q) z, J6 ^; y" k  f
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE. u$ J: }. X. W. p% w% |
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    % H/ R) n/ a3 g! v( |
  11. *         TO CHANGE.0 p+ @! h) |) `
  12. *
    " q( T, x6 }8 J  w2 F  @
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    9 w* X9 l6 Y* q6 y; S0 r
  14. *+ W/ h& w5 f" r. M  Z1 S# v
  15. * This program is free software; you can redistribute it and/or. P0 o5 x0 G' V& `# X3 \: g8 Q  l3 }
  16. * modify it under the terms of the GNU General Public License as
      P' y. c# F4 f$ j) G- x9 ^
  17. * published by the Free Software Foundation version 2.
    5 m! X' _, |+ t5 ~7 S) L- v: U+ C. h
  18. *
    " M3 N1 e' r0 A# v$ _- j
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    5 K( d3 {. e' L+ @4 v
  20. * kind, whether express or implied; without even the implied warranty) u  H2 v' F5 U4 l/ ?9 \) W
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    9 o" H; u9 @' }: W3 X
  22. * GNU General Public License for more details.
    6 ]7 X, `+ `/ p  k0 Y* {7 {
  23. */
    # g6 ~1 o8 u  p  Q5 f. F

  24. 0 L  m$ S$ A  o, y: Q) X# m
  25. #include <linux/module.h>) i" c- d7 W8 v% N' U
  26. #include <linux/init.h>
    9 f. J) K# s# \" M3 f, t. X; h
  27. #include <linux/errno.h># T- R2 q1 x8 C6 h1 n
  28. #include <linux/types.h>6 v  b" C3 L9 A
  29. #include <linux/interrupt.h>
    5 s* ~" e- ^) p7 \4 P
  30. #include <asm/io.h>5 H- n  H" d% I$ W% R( f3 x
  31. #include <linux/moduleparam.h>
    $ E' R6 u8 m4 I' p
  32. #include <linux/sysctl.h>8 e; c7 r5 n) [2 ~. h
  33. #include <linux/mm.h>
    - `9 C; u8 a' A
  34. #include <linux/dma-mapping.h>, p* W6 Q! i4 }

  35. ( }. y8 B% W( O/ t
  36. #include <mach/memory.h>
    : S8 Z) H1 c/ a
  37. #include <mach/hardware.h>
    8 d5 J0 t( A/ R9 t8 m% ~
  38. #include <mach/irqs.h>; [7 E' L( `7 @" W' ]& |
  39. #include <asm/hardware/edma.h>- _. n/ K) |: a3 ^% H

  40. 3 B+ H3 y' V% K4 _) g
  41. #undef EDMA3_DEBUG
    ' k7 e. R* `$ J  B/ |! M
  42. /*#define EDMA3_DEBUG*/
    % U4 f* U; X" @, J7 t

  43. - i( l$ o, L# u, P5 N3 r! q- |) m* c
  44. #ifdef EDMA3_DEBUG
    ( K% [: ^% D1 N2 o
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS), Q  T7 x- Q9 Q1 N! [) p) z8 ~$ k
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)6 K; E9 d8 z& ^# Q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ; J0 y* e+ P& T) Z2 I
  48. #else$ o3 e; U7 [5 |! O7 x% b; e
  49. #define DMA_PRINTK( x... )  n5 |6 n# y4 F0 P5 G9 P$ B
  50. #define DMA_FN_IN
    0 E5 L, i9 f; O- W( L' ~. X
  51. #define DMA_FN_OUT
    5 z* |3 B$ M) t3 G4 |' D
  52. #endif+ L5 \3 F3 }2 s% m  J
  53. ) L/ |/ i4 n3 ^* p- u' m% }% J
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)8 `( [. Y6 X' ?9 Y2 c& }
  55. #define STATIC_SHIFT                3
    ! e4 ?6 H. |2 f/ {% [' V2 y
  56. #define TCINTEN_SHIFT               204 D% Z) ~1 F+ E/ ~# F; }$ V( ^2 @# c7 Q
  57. #define ITCINTEN_SHIFT              21* d# d1 H2 S4 \  w, w; U
  58. #define TCCHEN_SHIFT                224 j/ _8 k& q. F
  59. #define ITCCHEN_SHIFT               23
    # n/ e* ], r! q. R' p( i
  60. " W  K) C6 W5 Y3 ~& V
  61. static volatile int irqraised1 = 0;
    2 A% K' w' Y# }
  62. static volatile int irqraised2 = 0;1 J! j1 A5 z& P" f1 Z# G- ~, g  W. O

  63. 8 I& X: _$ L) j# c
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' C& {6 Z. e7 ^9 I
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ) T/ p  s5 m0 u/ U
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & q5 E- K" i3 o2 M
  67. 0 q$ V* e6 y- p" a% h- e( K4 B
  68. dma_addr_t dmaphyssrc1 = 0;0 [& P5 ^7 }. }% r1 \- i% d
  69. dma_addr_t dmaphyssrc2 = 0;% ]2 V% @  G7 T% k) j7 L( B
  70. dma_addr_t dmaphysdest1 = 0;
    2 p8 Q- [" _# }4 H8 ^" R, X
  71. dma_addr_t dmaphysdest2 = 0;
      ]7 `; Y* n( X% O

  72. 4 e$ G1 w  N$ `) p8 Q% i/ \2 ]0 X2 Z
  73. char *dmabufsrc1 = NULL;3 |7 |6 [5 E2 b1 Y3 h) ~7 N4 f
  74. char *dmabufsrc2 = NULL;) }: K1 h- w: h* R
  75. char *dmabufdest1 = NULL;
    * P0 J6 U4 f/ n# ^3 ]
  76. char *dmabufdest2 = NULL;
    7 F! k9 L  ~6 ^/ n( p

  77. ; @& M) G2 A  |" d6 w, D  e7 S- i
  78. static int acnt = 512;. H3 t1 {, e1 I. |( {. u, Y
  79. static int bcnt = 8;: w5 ~0 d) }3 A' R' J1 Q- g; w8 l- I
  80. static int ccnt = 8;
      @3 P- G5 n9 g+ N% a

  81.   s9 p) J* W& ^% I
  82. module_param(acnt, int, S_IRUGO);
    ' G; s/ |' z9 n" |4 p+ \; c% X
  83. module_param(bcnt, int, S_IRUGO);* r7 N0 I8 E1 k. ^
  84. module_param(ccnt, int, S_IRUGO);
复制代码
" e8 D5 V# ?& [/ G9 y
8 E& d2 W" r: I: E/ u/ s
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用: N/ i2 W$ W) b" U0 ]" J/ a* W+ e
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。2 X& y! s- J& y7 B$ J  C5 p
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
" l& U& K6 z& O5 f7 |) A+ j
+ v- X, L% Z- V# H( T3 Y- @
$ @# a7 C/ w  a8 Y1 r% {/ q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-29 02:44 , Processed in 0.044066 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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