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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 2 e% e9 _# y. O8 ]" [3 U
  1. [code]EDMA sample test application# f! J& ?$ \" m4 B, l8 b
  2. /*3 ~. K* f  b' @, U2 a
  3. * edma_test.c* U; s$ d; a0 A; |- M: Z
  4. *
    % H3 w' ?5 ~6 Z
  5. * brief  EDMA3 Test Application
    ; E8 S0 s/ i: A9 L& x
  6. *
    8 }& G0 D  d0 B/ T
  7. *   This file contains EDMA3 Test code.# T0 E$ A5 {/ r2 ^4 _
  8. *
    / O. W* J$ T  Y$ @' q0 y
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    5 m6 D) ]! T* C" t8 L
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT6 @5 A  V* ]  g) A, o* `
  11. *         TO CHANGE.
    ! w1 L8 h1 g5 ]8 v
  12. *
      T' [2 b, G) M& i
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    " E- I# a2 @+ [2 z" B
  14. *8 W. N; l5 `3 V+ f
  15. * This program is free software; you can redistribute it and/or4 p; C" U1 q8 H& [' M) z) U! l* F
  16. * modify it under the terms of the GNU General Public License as; _8 t" V! z1 v0 Y
  17. * published by the Free Software Foundation version 2.
    + n. T3 e& V$ O! D" p
  18. *
    2 ^1 G4 s9 R! _  F
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    . T3 O7 U4 f1 w8 q9 ?& ~
  20. * kind, whether express or implied; without even the implied warranty* y) m4 ]& P' X( X: K7 _, W
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the. `2 t0 Q& |+ t% H# N& ]; A
  22. * GNU General Public License for more details.5 T' z" ~# H3 X$ z. w2 ~
  23. */$ a# t/ j& _8 g- v
  24. ! q# E9 E; L  Y. j  x7 Q3 m
  25. #include <linux/module.h>
    + P* s" L! P7 {2 y8 l0 ^& Y9 k$ i4 p; O
  26. #include <linux/init.h>
    & f+ {" e! o( ^/ B" o- {8 W9 K
  27. #include <linux/errno.h>
    * T2 b5 `1 O  k, C8 F5 }
  28. #include <linux/types.h>6 J- r5 E6 l% q* z' f' U
  29. #include <linux/interrupt.h>2 F& n6 ]% d4 M( A5 V4 `) y( Q. n' G
  30. #include <asm/io.h>
    4 A+ J. S: b* |- t. N, P7 Y
  31. #include <linux/moduleparam.h>
    3 A( D5 G7 _" h8 u8 Y" j# E6 _
  32. #include <linux/sysctl.h>
    9 l! J  I# T- Z- w) A/ e$ N
  33. #include <linux/mm.h>9 N. N8 b" ^6 H  f, J  }. p- L) A
  34. #include <linux/dma-mapping.h>
    9 o5 \0 A8 W! ~0 j, Y' b# {

  35. 4 u. i( w* {2 y9 }
  36. #include <mach/memory.h>& a- I1 _' t7 g) u, e* ]
  37. #include <mach/hardware.h>* {& s0 p2 Y2 b6 V" D' s
  38. #include <mach/irqs.h>
    4 B/ n, X. @' H' n0 G( C# C
  39. #include <asm/hardware/edma.h>; w0 h8 U7 N2 h# X0 ]  E1 S
  40. 6 V' H. z! g* X' g% {9 l
  41. #undef EDMA3_DEBUG
    5 T4 q/ u4 c5 o7 ]+ O% Q: e
  42. /*#define EDMA3_DEBUG*/2 K% U& [6 A. v+ ]: {4 ?1 P

  43. 4 }9 s- S8 k3 |. R' |
  44. #ifdef EDMA3_DEBUG
    , r5 f$ T" s1 s* x% m% u1 ~* f
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ( I1 Q" g$ w4 Z/ s' ^
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)8 r) i9 F! ^) i, ?( ^/ ]- _' p1 I
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ! a$ c4 F6 V2 O7 r  l5 y0 s0 f6 R0 Z; |
  48. #else5 c! W! `8 k3 e, o+ F8 n/ `
  49. #define DMA_PRINTK( x... )
    3 Y$ b* q7 b. X" `& z1 `
  50. #define DMA_FN_IN. X$ W) S8 V. `' s/ L
  51. #define DMA_FN_OUT( `, ?: N5 u: {
  52. #endif
    ; a" D. Y# Y4 X, D" E: Z  Q

  53. ! N) K0 v! d, N! l# V
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)3 E8 j/ x' c; L6 q& i( D
  55. #define STATIC_SHIFT                3
    $ k3 X9 i$ s3 c* E: i
  56. #define TCINTEN_SHIFT               20% ~* d; C1 h7 U0 N  |& x" g
  57. #define ITCINTEN_SHIFT              21& E6 ~4 ?7 D! |& ^
  58. #define TCCHEN_SHIFT                22! L( z. f' _, L) }$ b1 f2 Z
  59. #define ITCCHEN_SHIFT               23
    4 w7 ?9 G. K! a3 c% Q5 |

  60. 5 o5 S- s7 [, v8 }  O) ~6 E& p
  61. static volatile int irqraised1 = 0;1 _/ M: u+ ~7 R. Y2 ^- i
  62. static volatile int irqraised2 = 0;
    1 [* |  z+ {; _4 t* P
  63. ' N  s( X2 B1 v
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);3 n/ k2 s2 ^1 j/ V+ C; Y+ [3 V
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . V7 D$ ]/ v/ y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. ^( Z; a) `4 e% X) D: o
  67. 1 W& k6 u+ d7 X7 s
  68. dma_addr_t dmaphyssrc1 = 0;
    ' ^8 h$ @3 m( V7 T7 Q# B4 N
  69. dma_addr_t dmaphyssrc2 = 0;
    " d: J- L9 [( ^; `7 o/ L
  70. dma_addr_t dmaphysdest1 = 0;6 g. o% m9 }8 J
  71. dma_addr_t dmaphysdest2 = 0;) B5 t/ S8 j4 N! B* K

  72. 6 D4 e2 d/ a. D4 ~+ ~" `( r4 q
  73. char *dmabufsrc1 = NULL;
    ; T( q5 y* E0 H4 D, d* I
  74. char *dmabufsrc2 = NULL;
    4 J: }6 G4 ^5 i/ J
  75. char *dmabufdest1 = NULL;
    5 H! Y! l! X! u  Z  C
  76. char *dmabufdest2 = NULL;! S4 r% r1 B& v/ X4 G

  77. / @/ z: g% Y* ]
  78. static int acnt = 512;
    ! y" b- u  w- K# s9 f0 s% b0 d
  79. static int bcnt = 8;1 i1 q9 [8 J. [
  80. static int ccnt = 8;: d- Y2 d4 I1 F1 i) ]
  81. , a, t2 K6 X; b# ^+ L8 A7 [
  82. module_param(acnt, int, S_IRUGO);; ]' o- U8 V% A2 G; V8 o4 _# h# q
  83. module_param(bcnt, int, S_IRUGO);- @% J8 O* i* H9 M  Z1 \
  84. module_param(ccnt, int, S_IRUGO);
复制代码
; v) g( j2 e3 V3 }% z6 I& G( u
: ^6 ^7 f4 H# G* u9 z6 H
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用* o/ X' K' V" ^* ?
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。8 Q9 t  q0 C7 v
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
( N% ]* a& C6 [
' b1 K0 _& t! B; X; [+ t6 z- y$ T! U+ O# W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-5 02:25 , Processed in 0.036993 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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