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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 % r# p, I4 I( n: p3 y/ H2 P2 ]
  1. [code]EDMA sample test application0 u. v# h' ]4 ^
  2. /*& ~- v' Y$ h0 ~8 }. W2 e
  3. * edma_test.c
    & A. k6 s5 I' I8 [
  4. *) u8 G8 P5 o* l+ L% Q; T/ ?- e
  5. * brief  EDMA3 Test Application5 Y+ N! Q& `" f  g% w4 P  a  h
  6. *
    % J: H! N2 U- z# G# w2 Z7 W
  7. *   This file contains EDMA3 Test code.
      S+ Z/ K$ z' p; t
  8. *
    % ~5 L. s9 P# J: P" j$ Y& \2 z4 a5 E
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    6 Q( G5 u' h; O  i9 M
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT: K, I6 G" k3 V( K- o! p1 Y
  11. *         TO CHANGE.
    2 i  d: b: \1 P8 D5 e: I; W
  12. *
    ; C3 B- o7 |+ Q1 M* X
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    $ m! ]7 D* ~3 t& L4 L
  14. *" [; @1 h+ R9 p0 N2 X! K
  15. * This program is free software; you can redistribute it and/or' N8 ?- ]! k7 E7 b. {
  16. * modify it under the terms of the GNU General Public License as) Z4 C! X) ?  ?1 I" |  n' N8 C! T1 S
  17. * published by the Free Software Foundation version 2.- S" i) h' o3 j& X" b& y
  18. *$ Q5 |) [( z7 k/ f2 t
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ' A: v- l/ u, ]& f( x
  20. * kind, whether express or implied; without even the implied warranty, _' G, T7 l9 B! n) n' n
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    0 V, T6 q- H! p& @
  22. * GNU General Public License for more details.
    . ?; ?% d% N- r7 c) a7 k
  23. */$ C& Q# N; y, d4 S+ M' Y9 y
  24. / I! ?/ ~8 {; \! b1 T
  25. #include <linux/module.h>: x& u1 V7 e" r" F/ y/ X
  26. #include <linux/init.h>
    ; V, a# b3 K# m7 s, Q
  27. #include <linux/errno.h>, e5 H" p' c; l0 G/ N
  28. #include <linux/types.h>) T. e; c; n1 i+ p: r
  29. #include <linux/interrupt.h>
    2 c6 Q; W" x7 A1 O/ N
  30. #include <asm/io.h>% O% q5 r* I# C/ ~! B0 P; }
  31. #include <linux/moduleparam.h>/ F1 ^+ Y2 ^0 d: p6 j1 @
  32. #include <linux/sysctl.h>6 J5 h5 N2 U: D- F7 I8 ~6 U6 ~. {$ {' {
  33. #include <linux/mm.h>
      I# D, m6 V# B4 y
  34. #include <linux/dma-mapping.h>1 U% B- w# e3 k' p2 t
  35. 0 Z. Z+ j% B! D2 l
  36. #include <mach/memory.h>3 c- f8 x7 Z/ |6 Q3 i( p9 F+ t
  37. #include <mach/hardware.h>
    & {0 y0 t5 a9 N/ ^
  38. #include <mach/irqs.h>
    0 N2 P( m& P+ [( m2 C
  39. #include <asm/hardware/edma.h>
    0 d' ^% b6 {8 ^' N

  40. 9 C* l; |' U* Y% c% m; ~7 z( g
  41. #undef EDMA3_DEBUG& `. I* }3 d8 _0 g
  42. /*#define EDMA3_DEBUG*/
    ' {" Z. s/ |1 M

  43. $ O2 C7 M4 _5 c) x
  44. #ifdef EDMA3_DEBUG
    ! N1 |' j9 X% p& {+ N% q+ C2 B. a2 p
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    8 F4 ~8 v+ ~' x
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)4 ^1 F* v3 h6 h; X+ k! w/ M$ q6 \4 p
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)$ w( V, [  B) y0 v9 Y9 ^
  48. #else+ c- u9 E- I6 x1 d* ]* v3 M
  49. #define DMA_PRINTK( x... )! ]4 Z2 z; }/ \7 z( h
  50. #define DMA_FN_IN
    : o- ?" c! K5 _3 B, f
  51. #define DMA_FN_OUT
    0 s0 ^& \; ~- h9 L8 W5 _2 Q
  52. #endif
    3 J) `- `0 l9 Q; J

  53. ' R/ a: X3 ^# ], ~
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)2 r/ Y. B  e7 i
  55. #define STATIC_SHIFT                3( J$ ^* r1 T! A* M: B& T& d; B
  56. #define TCINTEN_SHIFT               20+ b" b/ U7 f* r# z
  57. #define ITCINTEN_SHIFT              21
    $ x5 R: _, {; G) q8 T: \5 A8 j" ]
  58. #define TCCHEN_SHIFT                22+ z$ U- O0 |$ Z+ b( Y
  59. #define ITCCHEN_SHIFT               239 J9 m1 G; t; k, O8 [9 b0 F
  60. # |& O5 X8 L/ {: s% y( b+ S  _
  61. static volatile int irqraised1 = 0;9 U1 @" ^3 f& C
  62. static volatile int irqraised2 = 0;
    6 z+ p  ~* ~" C( @9 q0 V7 n$ `

  63. & w# Q1 M( K7 t! t! @( a
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 m/ c2 O! d: s1 Q
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; X5 g0 U2 O5 E) t
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( ]3 D& O7 X/ q: f$ O6 a2 Z; o. w
  67. - F- G1 D( @! ~, T! D& O
  68. dma_addr_t dmaphyssrc1 = 0;
    % J- _- v" F& p2 v/ \( k: i
  69. dma_addr_t dmaphyssrc2 = 0;
    6 A. ?& x: J% G7 }# r5 @( x
  70. dma_addr_t dmaphysdest1 = 0;
    ) n2 n+ i$ w7 C& ]/ ~
  71. dma_addr_t dmaphysdest2 = 0;3 Z2 Z; N, ^: @! U7 D8 r

  72. # C8 S$ W  x7 P) l
  73. char *dmabufsrc1 = NULL;, P1 [" c" |. c2 }
  74. char *dmabufsrc2 = NULL;
    " ^7 A/ i3 O. Z; d" g% x
  75. char *dmabufdest1 = NULL;
    ) v- K) B% e( u9 s, |
  76. char *dmabufdest2 = NULL;
    4 e: a/ v* e  A  ?$ t% V8 I+ f: J
  77. - X4 O/ E4 z; U7 d* m
  78. static int acnt = 512;
    . @; M' [1 s3 d7 r  }+ A( M
  79. static int bcnt = 8;/ `4 o5 r6 o; E; N% O. R
  80. static int ccnt = 8;
    5 U$ H$ s  s6 z; M7 b
  81. ' q0 b2 L+ l8 d& p& R* X9 f! [
  82. module_param(acnt, int, S_IRUGO);5 d/ m2 P' U; q# Y) n1 z7 Q
  83. module_param(bcnt, int, S_IRUGO);
    ) f! P5 V1 q& `- q" l
  84. module_param(ccnt, int, S_IRUGO);
复制代码
+ s3 s6 ?) i1 e
& T4 U* S5 E) U# m. {" P4 o
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用# _" D6 i) q" o0 X  x; o' z
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
' ^% H6 y4 }! @" \7 _* z2 i5 \     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。/ `4 u5 e$ Q2 a
% V) l" f2 N5 S( e  n

8 @1 G7 C+ N+ J- x) @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-17 12:14 , Processed in 0.039812 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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