OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 % Z, `3 ], m) g  ?5 T( S
  1. [code]EDMA sample test application7 R; ?8 v' q7 v3 t* I3 C) W
  2. /*
    * G4 n+ Z' R8 s5 x' t
  3. * edma_test.c
    ! _4 X0 m: y: E& O" c' E& ^
  4. *
    , Y7 n; W+ x  O( e( Z/ W. P7 e
  5. * brief  EDMA3 Test Application4 S3 e( n0 C  a3 z9 m
  6. *: u& I* W2 G3 |8 h; k
  7. *   This file contains EDMA3 Test code.
    - ?' [% N7 b4 g6 Y; ~! H( n9 u% w
  8. *
    $ m3 c2 O/ G5 N' w1 q) W0 d- D% R
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE  C% c, S1 l. s: H+ O3 B" ?5 b
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    $ m9 V' U1 Z0 s1 ^/ U
  11. *         TO CHANGE.7 k0 m$ Q2 T& z- H0 @
  12. *. k2 y+ h0 g9 T5 {0 ]
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    2 `( m( ?) {# K5 {  J0 s
  14. *  L! F/ t" c& V# y) Q
  15. * This program is free software; you can redistribute it and/or
    7 ]& G" {3 ]) p
  16. * modify it under the terms of the GNU General Public License as1 c: j% F1 W9 F3 v, V8 x9 t
  17. * published by the Free Software Foundation version 2.
    - H0 H7 v/ @; v1 t4 g% a
  18. *8 P/ Y+ n; V# S
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any$ N7 v+ n- u5 }
  20. * kind, whether express or implied; without even the implied warranty! h" F* g& C$ ~0 m' N* R' ~, w5 ]5 t
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the9 r& e) T! r6 K5 K+ }4 a% T4 F
  22. * GNU General Public License for more details.) s! y$ h8 g$ U$ t
  23. */. W& J$ S; H+ o4 q4 Z. P

  24. , }. F# b7 E/ T. U+ n
  25. #include <linux/module.h>) J2 I, X  E- o3 B' x
  26. #include <linux/init.h>
    2 G; f/ B0 ]+ o5 Q4 P, X
  27. #include <linux/errno.h>0 T4 s3 n, c" A' @: i+ l
  28. #include <linux/types.h>
    5 o2 i5 B+ L0 q9 @4 P* V  d# y
  29. #include <linux/interrupt.h>
    0 [* m4 k/ p7 |# C( B, X" B
  30. #include <asm/io.h>% a1 i- G- i" z9 G* N% \$ Y& i. z, c
  31. #include <linux/moduleparam.h>- s6 ]8 ]* ]2 i( O/ b% f$ _
  32. #include <linux/sysctl.h>
    2 D6 K6 z, Y: T) c2 @. _
  33. #include <linux/mm.h>6 ^% ^" N( x# L- B3 G$ w
  34. #include <linux/dma-mapping.h>8 p. Z& o/ t( H* n3 I# R

  35. ' d1 g7 p& _* ^$ D* J' d; N' |
  36. #include <mach/memory.h>
    " \  Y8 W) `) p) w3 X# x5 d
  37. #include <mach/hardware.h>
    $ K9 ~( u6 P$ V; J3 F
  38. #include <mach/irqs.h>
    ' T9 ]0 g  p* a5 Z) [
  39. #include <asm/hardware/edma.h>
    , ?9 L* `; S1 h! x5 O3 Z9 ~& d

  40. 9 p2 [4 a9 b, E- l
  41. #undef EDMA3_DEBUG% |' K" f1 N3 k& V' f) T
  42. /*#define EDMA3_DEBUG*/3 ?/ A3 N- l0 |7 @: v1 @8 A

  43. * Z& L4 T8 Z. z0 N7 M# d1 r) p
  44. #ifdef EDMA3_DEBUG$ |: Z; M  l8 K% K
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ; e7 U/ F# {( j8 [- h5 t
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)5 t& f/ G% B. F  \
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    9 T9 S6 p2 V! ~
  48. #else( o$ @! u* o  |: J# i
  49. #define DMA_PRINTK( x... )
    # t4 ?1 R% y" K, X
  50. #define DMA_FN_IN
    $ i" I  X* @' Y& ]6 l2 [" F" @
  51. #define DMA_FN_OUT
    / I! T5 y3 b1 g
  52. #endif
    + K  @! G0 O) @+ {! k
  53. 1 m2 V9 g' \' ]  z  u
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    + S- {% t$ ]5 O" z2 ]8 l$ t
  55. #define STATIC_SHIFT                3
    5 b; F; z, R$ C$ f2 P
  56. #define TCINTEN_SHIFT               20
    % ]% R! X7 [6 s
  57. #define ITCINTEN_SHIFT              21% {( [" M3 c: v7 U) _1 h) @7 u
  58. #define TCCHEN_SHIFT                228 T" |; P6 c  Q+ w- a
  59. #define ITCCHEN_SHIFT               23
    , t6 R1 Y5 H7 t. ?# u! T7 C
  60. % \5 I7 B! W+ a
  61. static volatile int irqraised1 = 0;0 x. q/ {3 @" D) v2 Z" s- y7 k
  62. static volatile int irqraised2 = 0;
    8 K- Z8 n: J& j$ ^3 U3 c/ ~

  63. - d3 |3 J# q2 Y# D6 W1 Y, P7 y
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
      B  C8 J! y1 W9 X+ s0 H
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    8 o* ]+ A' r7 q  n( M# S% G, u* m0 |$ U
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ) A9 \0 M$ O& }1 u( ?( u  f
  67. ) p) Y4 D* `  z" ~* V6 h/ J/ P
  68. dma_addr_t dmaphyssrc1 = 0;: n4 T; S" \( p! M8 s
  69. dma_addr_t dmaphyssrc2 = 0;
    7 i, M" C1 Y5 D7 E, z
  70. dma_addr_t dmaphysdest1 = 0;* r, P0 R, o8 w+ J& o8 s* b2 S) a
  71. dma_addr_t dmaphysdest2 = 0;5 ^) _$ O8 R; n
  72. / v3 v8 X- Y  w/ l: u7 m6 m
  73. char *dmabufsrc1 = NULL;
    " Y- e, D. L' ~% G
  74. char *dmabufsrc2 = NULL;) B" U2 X) Y! {3 g- c- L. H/ f% |
  75. char *dmabufdest1 = NULL;! G' L+ E/ T; S& p1 {8 p
  76. char *dmabufdest2 = NULL;
    0 s3 X, P: i. O7 a' B
  77. 4 U8 }# y1 I) j$ U
  78. static int acnt = 512;
    9 g. M+ t; k2 o
  79. static int bcnt = 8;$ b4 j0 L" j0 M5 I3 R" e0 A
  80. static int ccnt = 8;- [- J9 r( A' }% A( t% u& w4 i

  81. : u5 u1 q  ~8 C" J1 w+ ]- S: P
  82. module_param(acnt, int, S_IRUGO);
    6 i$ e, R$ `" B: Z! O' E  F. R
  83. module_param(bcnt, int, S_IRUGO);
      H9 a# Z) W/ L
  84. module_param(ccnt, int, S_IRUGO);
复制代码
0 k4 u  ?, V0 P) U
' p5 P; J; _" b2 W8 l% q$ M4 k  [
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用0 y+ L! q3 m. S" X) f! y& P+ g
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
% q1 d0 x- f8 ]) E# O     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。3 G0 O6 k5 r' x" y$ @

3 k+ @' t* [/ P( Y1 N& e4 P! u, z! p6 L8 z3 N! \3 q( Z+ G, M$ C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-4-1 13:06 , Processed in 0.039653 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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