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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
4 }# Y4 _, Q9 N% z
  1. [code]EDMA sample test application+ _% D' B  ~8 i5 I, t9 K0 u
  2. /*1 O! K3 a. y# y; W; Q  Y
  3. * edma_test.c
    7 @5 H2 j4 M5 n, o- n
  4. *  @" b$ O- F; G* `, h  A
  5. * brief  EDMA3 Test Application
    & ^/ W+ v7 a* X, e
  6. *
    & M9 [7 _2 X9 l9 L7 a% z* U
  7. *   This file contains EDMA3 Test code.7 ~+ s7 ?" z" C2 U, W0 y
  8. *+ v6 N* g+ w) |/ A2 M! g
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    , n5 [. O2 I- w0 V; @+ P* L
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT0 u9 h9 v# z0 L1 D3 v% U
  11. *         TO CHANGE.
    ' e1 x8 P4 B; d: z2 Z
  12. *
    / u4 \8 W9 V7 g* i' U  Y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/1 B2 Q$ W. J7 [* X* u. y' l6 k
  14. *
    ; H# |. R- q( e; o: D* M  i
  15. * This program is free software; you can redistribute it and/or
    / j8 \7 T& |/ s5 R! Q- Z- D2 k/ @
  16. * modify it under the terms of the GNU General Public License as
    4 E  R2 S" R  F
  17. * published by the Free Software Foundation version 2.
    1 L. i( z/ d3 d+ d8 c" @1 m2 l; u
  18. *
    5 L+ }# K' |' S1 f  ?
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ( x4 ]2 R2 z) L
  20. * kind, whether express or implied; without even the implied warranty: L4 t6 I) |% }) d4 q
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the8 E) U$ G! _! m: S
  22. * GNU General Public License for more details.3 D; v$ u! B  z- ^
  23. */; }5 ^6 z" s6 I  q  [; t* }

  24. # v+ b" R! u( b, i' H+ h5 }9 T- Y
  25. #include <linux/module.h>
    - J: w; w* z1 c$ S
  26. #include <linux/init.h>" o: H' l2 L: Z$ p; v9 D: Y, {& Z
  27. #include <linux/errno.h>' O, U( q1 J( ?6 @# g
  28. #include <linux/types.h>
    ' f: {; J$ k% ?6 Z
  29. #include <linux/interrupt.h>1 J; `4 x& R% K; H  a7 u0 [+ y4 p
  30. #include <asm/io.h>
    % B" R) r7 J7 R! s0 }# Q
  31. #include <linux/moduleparam.h>
    ( o4 ~1 V, X* m, M/ s) C! P1 V
  32. #include <linux/sysctl.h>
    7 C+ e# k, j7 o* V$ }6 C7 `
  33. #include <linux/mm.h>
    4 n- d- w* ?1 c) j) h0 D7 x
  34. #include <linux/dma-mapping.h>0 [0 V9 @- U! x& a
  35. ! C% c/ ~. t+ }$ K
  36. #include <mach/memory.h>* J: j: g, n' B  K9 z* ?+ y
  37. #include <mach/hardware.h>
    ) I; B1 M' O' C6 _
  38. #include <mach/irqs.h>
    1 i- j* A: j; ~0 j4 k
  39. #include <asm/hardware/edma.h>
    4 F* i, i* a- W
  40. ' @1 m0 f6 I/ u" n% H# a
  41. #undef EDMA3_DEBUG$ D: x6 y1 u. F! o" ^. \: D9 W2 J
  42. /*#define EDMA3_DEBUG*/
    - u# y3 u( g% F: w
  43. & Z& ]( v' Z5 E0 L
  44. #ifdef EDMA3_DEBUG+ q4 v) o& ~2 e2 g0 I, [2 _  u
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)2 c) c# c9 R( W& G; N
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)  @7 m/ o1 ~1 N+ Y) M' u* i( M, ~
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    0 g1 \) P9 v/ N: a& |
  48. #else
    , j1 d) \3 P; C. |# v
  49. #define DMA_PRINTK( x... )
    1 s- ~  p9 L7 G
  50. #define DMA_FN_IN) ?7 h9 p# ?; S) q. u' j( C
  51. #define DMA_FN_OUT# \* p3 i' F- }. e$ X0 L1 [
  52. #endif. r  w) }9 E9 {2 t3 V8 d: e

  53. 0 b$ r: X: i( a% P  A
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ) T3 ]/ M9 d; `  N
  55. #define STATIC_SHIFT                3( L; Z! A2 c  K! A& {
  56. #define TCINTEN_SHIFT               20
    % Z" F; C' o+ ^! J9 m) F
  57. #define ITCINTEN_SHIFT              21
    + ^+ u/ f7 Q) p- N& m
  58. #define TCCHEN_SHIFT                22* e2 q( Q" D9 a& N, J
  59. #define ITCCHEN_SHIFT               23( R0 ]4 e* G7 `$ ~. `3 M
  60. 3 P# _  ^. W: O- ^
  61. static volatile int irqraised1 = 0;
    9 i, ]% u1 D9 u1 _" H4 p" g9 S; D
  62. static volatile int irqraised2 = 0;. k7 o8 K* s/ g# ]3 M) x4 P
  63. . x. r# {. D1 _
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    9 V; R/ l, D7 |8 s! S! ~+ }' F7 _- |
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( D1 b; z  u: Z: X4 Z
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& f; y1 [7 P+ z8 m( `
  67. ' l9 O  E; Q: C
  68. dma_addr_t dmaphyssrc1 = 0;
    ' W5 S# z5 V& x6 N2 ?/ c4 z6 K
  69. dma_addr_t dmaphyssrc2 = 0;
    / M# i+ z- j  O; t& b  i
  70. dma_addr_t dmaphysdest1 = 0;: x# u- Y8 f/ u2 Q: O& x
  71. dma_addr_t dmaphysdest2 = 0;
    3 p( y- c* G1 o# A
  72. 9 A; b" L( Q% @! v: i: S" a+ S
  73. char *dmabufsrc1 = NULL;
    / P& \" A) A! O% W; l
  74. char *dmabufsrc2 = NULL;$ P' k" K$ s0 t
  75. char *dmabufdest1 = NULL;
    + P5 T' P: ?( w% G
  76. char *dmabufdest2 = NULL;
    5 ?5 L2 B) k" N4 |

  77. / ?5 D- h/ {1 j2 C3 ]0 C
  78. static int acnt = 512;
    ; L) ]! N' @  L
  79. static int bcnt = 8;
    ) F# X3 n: h! j- `: t* W  n
  80. static int ccnt = 8;
    : i( F) g# X/ l% r& ?0 I  O

  81. & z* y0 _6 t9 `: w# |* c/ W7 a
  82. module_param(acnt, int, S_IRUGO);
    * e' ^; D! ]! u" Q9 h* C
  83. module_param(bcnt, int, S_IRUGO);
    1 ^3 R  D# i% B$ a3 Q
  84. module_param(ccnt, int, S_IRUGO);
复制代码

% i& \# M) @* Q
/ l5 F0 `* h5 B( H+ V      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
8 n" [1 i7 a6 k4 Y  Z7 b" Tarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
( X$ w' a! c8 b; V$ N) S     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。' ^3 _0 H2 P+ f* {1 s  E
# K. w$ N" v2 U" A% L, U
6 Y0 ~0 j0 F3 e6 _, D# N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-15 21:58 , Processed in 0.036080 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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