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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
: a; `) x$ b2 o9 |2 [0 E6 k
  1. [code]EDMA sample test application: w: j3 A2 M; N4 O% R' {
  2. /** b0 S% T4 K3 R4 r  o
  3. * edma_test.c5 p5 B6 x- u' |( L. |
  4. *1 f1 H% U) z. x% R8 s
  5. * brief  EDMA3 Test Application
    2 C( t# s( l. {! Q# a% b
  6. *  A+ ]4 u! H& }& e
  7. *   This file contains EDMA3 Test code.
    1 o4 x- [6 V% A8 z( Y2 ^3 M0 C9 X9 a
  8. *" C/ R2 Q# \- c. j. {+ s- z
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE0 N/ C3 ~. f+ x. z7 Q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    2 B1 h: I: d( D
  11. *         TO CHANGE.! B! g0 J( M6 E" G) s( T
  12. *
    ' P. I  N1 q/ A2 D
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    9 O9 l& k/ O1 b" X7 {
  14. *2 U1 Q" H5 `7 m1 T  s# O/ D
  15. * This program is free software; you can redistribute it and/or& U6 B3 _9 l5 {6 j) C1 T; G
  16. * modify it under the terms of the GNU General Public License as
    ; C1 k7 u/ K# ^+ E$ k9 Q
  17. * published by the Free Software Foundation version 2.
    + r9 r( n; a: L% v
  18. *
    / x. I. ^7 {/ o& y
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ; ^4 N7 v# s1 E9 V9 d
  20. * kind, whether express or implied; without even the implied warranty
    7 r% Z6 d8 J9 t9 s
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the6 a; ?# ?8 K, e1 [8 t+ k
  22. * GNU General Public License for more details.- W3 Y0 l( e5 i
  23. */  ]2 S9 |: E0 q6 B* b0 Y# p
  24. 5 k, ?4 V* g) T) Y/ P' _
  25. #include <linux/module.h>/ H$ i9 Y; f) U' N. W# Y6 J
  26. #include <linux/init.h>: R/ c# Y1 ]  t' [; g
  27. #include <linux/errno.h>
    # D1 Q' b3 m9 r6 W& W; n& `6 [. Z
  28. #include <linux/types.h>0 [3 r8 `0 d# t* p% M
  29. #include <linux/interrupt.h>* ^: a9 z1 q% a$ \
  30. #include <asm/io.h>& ^" ]# q% a; ?" f; I. e: r
  31. #include <linux/moduleparam.h>
    ! _% r! u9 }& r3 V/ M1 {' |3 }$ f1 D0 ]
  32. #include <linux/sysctl.h>7 }- o) e8 p1 B3 a
  33. #include <linux/mm.h>
    $ i6 x' m+ B! K5 @6 `- p: a. W
  34. #include <linux/dma-mapping.h>
    " P& l" Z+ m2 D3 U$ q
  35. * X7 k. {) @0 A+ f, Z0 {/ D
  36. #include <mach/memory.h>; b( x) _6 ?! _1 ~9 V7 `
  37. #include <mach/hardware.h>
    ' g' l) p9 a* g( f
  38. #include <mach/irqs.h>
    1 O, N0 W, d( p" N# |; N2 J3 ]  s# e: x  m
  39. #include <asm/hardware/edma.h>: f* }4 v; `( r# D7 j: r. M
  40. ' b: k" ^4 T5 b9 o$ x# s
  41. #undef EDMA3_DEBUG2 }" u" {( s9 h/ ^8 M$ ?8 `
  42. /*#define EDMA3_DEBUG*/- S; a- g9 w  H% T+ H* P

  43. 0 X% U# S7 _) I% W% I
  44. #ifdef EDMA3_DEBUG0 D+ V* E# Y5 c* Z
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)& F8 X2 ^9 c* F  U$ j5 J" G
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    $ f+ c0 u. [: i9 J
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    % C$ u6 s, _9 |2 m6 n: \' g
  48. #else
    3 ]& l" J" Q' E7 g  s) p
  49. #define DMA_PRINTK( x... ): V' v/ W" K9 W  H' P" d
  50. #define DMA_FN_IN, E9 t2 o  {3 U$ e  e
  51. #define DMA_FN_OUT' {7 {: o) L! S, S- z
  52. #endif
    ; z6 |( ~, j: a* Q
  53. ! B3 Q7 C( ]- o
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    7 {" C  h* G8 J5 w
  55. #define STATIC_SHIFT                3
    3 }  f/ h; K1 H& C9 z
  56. #define TCINTEN_SHIFT               20
    . J7 [& s8 ~) e( }3 G/ x
  57. #define ITCINTEN_SHIFT              21- T7 J/ r2 k- j; \# w" @8 k# [' m
  58. #define TCCHEN_SHIFT                223 b7 ~+ ^$ p' J7 G
  59. #define ITCCHEN_SHIFT               23
    * D8 b9 U! B1 h8 L
  60. 7 M, Q& k6 G$ p0 F' t) b
  61. static volatile int irqraised1 = 0;
    : o- H: D9 h* m  {
  62. static volatile int irqraised2 = 0;
    3 ]( G1 u; d9 u9 z! {$ x
  63. + u' @7 r' U8 m/ R5 G: l# \' n
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 l/ [; ~8 o; g# t5 I7 s3 K
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , Z! n6 W/ @$ Y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    9 i9 x" C  j7 D! h+ s! P

  67. + p0 R3 Z% k& H0 \
  68. dma_addr_t dmaphyssrc1 = 0;" H6 p0 l& }" b# i3 z* u$ G
  69. dma_addr_t dmaphyssrc2 = 0;% \0 H1 M2 a, R. D
  70. dma_addr_t dmaphysdest1 = 0;
    3 B* t6 X3 S9 a& J0 {7 u
  71. dma_addr_t dmaphysdest2 = 0;/ b5 O1 l: j; r' O
  72. + ^- _! G+ _3 u
  73. char *dmabufsrc1 = NULL;- l' V) ?8 x; V( O. U: o
  74. char *dmabufsrc2 = NULL;
    3 l( \6 p4 n- l  U
  75. char *dmabufdest1 = NULL;2 Q; G, T/ T1 R
  76. char *dmabufdest2 = NULL;4 H) d9 P, x7 G" V1 l
  77. : ]  ^; y5 V! q; p4 g: B1 x
  78. static int acnt = 512;
    " X( K' I& k2 Y8 w  W) P/ t1 |
  79. static int bcnt = 8;0 b) l- [( |/ ?/ ~
  80. static int ccnt = 8;& b6 J0 l0 S1 d+ s' h- E! w5 p

  81. & V( s' q7 N$ p  w
  82. module_param(acnt, int, S_IRUGO);" d/ ~* J2 a$ \6 c  E
  83. module_param(bcnt, int, S_IRUGO);" A6 C- c' B# Z( k
  84. module_param(ccnt, int, S_IRUGO);
复制代码

2 l( u5 R0 `7 Z3 o/ _8 X! R: V
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用! B7 W0 {) i3 l5 }# i2 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。# G# I0 W9 `2 A' k& L  a
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。3 M' d9 c& N7 Z& z4 \" |: f# Y5 j

* D$ x$ A( N$ T/ C; j
' B$ E+ T: h; R. B% }) y8 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-10 08:57 , Processed in 0.039701 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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