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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
& }$ T4 F8 Y* U
  1. [code]EDMA sample test application
    0 S) Y2 H. T7 t' m( J( `  G/ p
  2. /*$ O3 Q5 J' ]: l* C4 {4 R3 q4 M
  3. * edma_test.c: w  P8 s: _# {, M
  4. *
    ' B: p) M2 f2 y6 \% i
  5. * brief  EDMA3 Test Application
      D+ S, ?  t. X) B5 R  G7 A
  6. *- p  I8 N, |5 c. P' _" j1 N
  7. *   This file contains EDMA3 Test code.# e$ q+ C1 j9 {$ w1 F( {2 ]
  8. *
    ; Q" R- I5 i) i3 j8 \
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE8 j; ?" L' M6 ]1 V
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ; B0 B+ V& c( Y9 X) V6 S8 }' G
  11. *         TO CHANGE.) p2 H& X$ E8 _7 O
  12. *
    " n& J1 E2 u, ~; D) e
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ) d2 z0 i( N# D; I/ ?
  14. *! F5 ^0 y. D. L" \2 b4 ?
  15. * This program is free software; you can redistribute it and/or
    , H% p6 }, \: a9 K. [
  16. * modify it under the terms of the GNU General Public License as
    8 F1 i7 m! _# y! _
  17. * published by the Free Software Foundation version 2.7 `; n3 l) I! C7 p- u5 {7 D7 X
  18. *' G* v6 R1 ?6 l% l0 p% y' e
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    4 Z/ X" ^6 |8 O" n; ^5 L
  20. * kind, whether express or implied; without even the implied warranty) s8 G1 b) w7 j6 }
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the5 U, N, H8 g. c. ^/ I1 Y
  22. * GNU General Public License for more details.
    : Y. m  a" H4 b0 i
  23. */1 b: \1 {) b3 H8 i0 u" T5 ~; J
  24. ' `+ X2 I  ^4 w3 F3 |
  25. #include <linux/module.h>  a% o! }* n* \7 s
  26. #include <linux/init.h>9 |8 M4 {3 |! }
  27. #include <linux/errno.h>
    & K& I7 L  H- d. h
  28. #include <linux/types.h>, }3 n: r3 V3 `! w  T' H2 Q
  29. #include <linux/interrupt.h>1 `, t4 |. }4 ^: i
  30. #include <asm/io.h>1 \" Z8 u4 s" J/ M3 I, o
  31. #include <linux/moduleparam.h>; w: T* J8 s9 z# p
  32. #include <linux/sysctl.h>
    * Q5 [% T- ]% N7 e) N" @
  33. #include <linux/mm.h>
    * R5 D9 C* Q2 Y5 a* ?, Q# a: B
  34. #include <linux/dma-mapping.h>
    % n0 G& T  a! W
  35. 8 C. ~" D$ p: Q/ Z* g
  36. #include <mach/memory.h>
    " ~+ F8 c+ u. l: d% I
  37. #include <mach/hardware.h>
    3 f/ H3 s/ t" {3 h
  38. #include <mach/irqs.h>. i2 R" U: @0 |  |' q0 \# C
  39. #include <asm/hardware/edma.h>
    6 i% Q  p% O; l5 d

  40. / z1 H( x. P& }7 J; ^0 @
  41. #undef EDMA3_DEBUG5 [+ C1 b& z8 {; @$ c8 ^
  42. /*#define EDMA3_DEBUG*/
    0 F) S6 K: q# D$ W; l

  43. ' w' g% n! w: l8 n0 f/ p+ v
  44. #ifdef EDMA3_DEBUG
    3 {  M' P- s" ~; g
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ( A% {4 r  X- L( r6 p
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)2 q' d9 }6 N4 k9 v5 {' X9 u* @: Z
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    3 h% s0 U1 Y6 ^! w6 c4 O. V) \
  48. #else: X# f" s( d. k" [
  49. #define DMA_PRINTK( x... )$ z, O! H' ^$ _( x0 j. i
  50. #define DMA_FN_IN
    & O: O& W' t" \* f$ m8 {3 p* ?
  51. #define DMA_FN_OUT
    : }# H2 g6 `' b7 g# g8 D. ~
  52. #endif3 g) G  z4 ^- \; u

  53. / |2 p: [- t8 a# p$ p! J( q- Q
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ; }2 L% l$ F# i2 ?$ {: J2 K3 G9 i
  55. #define STATIC_SHIFT                39 E$ v9 R# K$ }6 C  x
  56. #define TCINTEN_SHIFT               20
    & l5 B" P  ]0 T' R0 _0 a/ s
  57. #define ITCINTEN_SHIFT              218 `3 d9 a/ a7 n; Z
  58. #define TCCHEN_SHIFT                22
    ! |2 B& e/ U; a: X+ T
  59. #define ITCCHEN_SHIFT               236 i7 j* S0 O5 S0 [) m# ~9 C
  60. 4 Q! y5 S! K0 Y6 |" C! i0 K
  61. static volatile int irqraised1 = 0;
    * P: n% E9 n% C: u9 v" @
  62. static volatile int irqraised2 = 0;- @6 ]4 e# S* @/ |7 \5 \
  63. 3 |" O6 a) Z- m' B
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' [- \* L  M) z9 c4 }# Q; ~
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);3 @" C, I5 O$ m) W  ?
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: M% g( a% N( n) ~0 \

  67. / h6 D$ k: M8 K7 L. W  m7 v% y# h
  68. dma_addr_t dmaphyssrc1 = 0;
    " k: ~" b1 }( n! e3 R2 b: p
  69. dma_addr_t dmaphyssrc2 = 0;9 F9 @, T- T  x- x
  70. dma_addr_t dmaphysdest1 = 0;6 E0 ]4 U) v4 y
  71. dma_addr_t dmaphysdest2 = 0;* N- s6 ]! B9 N: f; }

  72. 6 i+ E+ K6 {3 O% ?, i
  73. char *dmabufsrc1 = NULL;" }7 Q. ]1 {1 q) G8 n2 q7 T6 e4 i
  74. char *dmabufsrc2 = NULL;
    " W( j1 G1 E( L8 e4 e
  75. char *dmabufdest1 = NULL;1 D& O4 r3 Y$ j" f
  76. char *dmabufdest2 = NULL;
    & k. m: v$ p. T9 I

  77. : ~1 U* T) n+ B% e
  78. static int acnt = 512;9 ]- V% F! y& M6 j; C. @
  79. static int bcnt = 8;
      c+ d! t- X, C* D9 R% `/ X
  80. static int ccnt = 8;/ H0 U+ y9 C) f4 |/ A+ B
  81. . D: P* w& k0 _; V
  82. module_param(acnt, int, S_IRUGO);
    ( R6 L0 n3 g/ [, j' J
  83. module_param(bcnt, int, S_IRUGO);
    & U7 z6 h3 X. \5 U7 U. u9 o! u
  84. module_param(ccnt, int, S_IRUGO);
复制代码

) n, R/ u2 s: t" E; J# S
" X% {8 p# J0 u) N* w/ m) l9 e      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
; \1 S. h7 q; j/ K2 x; V2 C$ Varm-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 O( {& V3 o3 S: o
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
. X+ X6 ^) A$ d9 b1 z
! ^$ u8 |6 _: W/ E  J- n& {3 f, W  @0 v7 _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-3 17:15 , Processed in 0.038335 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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