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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 4 j4 k7 w& K/ P& f% O0 \3 I) v4 r
  1. [code]EDMA sample test application# V( a7 T! Q; J
  2. /*2 d% L6 n9 \  {2 C( V' D
  3. * edma_test.c0 ]" z6 i% @1 I
  4. *" }" H$ P$ N. j* E  t& }
  5. * brief  EDMA3 Test Application
    5 c% i# j! A1 O2 z: w
  6. *
    , b  A5 D5 S6 Y$ Q+ e: H. _' y
  7. *   This file contains EDMA3 Test code.
    7 ~2 C/ d  W4 d1 T
  8. *; Z  e' Z9 h' M- m: a0 v4 V, V
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE. D8 Q3 g, k$ G
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    0 C' `8 ~. K% n  {: D! k
  11. *         TO CHANGE.
    ; u. [5 Y5 d/ r) q
  12. *
    & p  i+ r2 ]% F' h; @% O
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/8 T5 S& u: I- q; w. K! l9 K
  14. *
    3 ~% Y$ a' l1 _0 N& W1 Y7 y4 M' s# d
  15. * This program is free software; you can redistribute it and/or  {# w4 X: u9 w( ]
  16. * modify it under the terms of the GNU General Public License as' E( P. l2 Z; p' I9 Y: }2 _! t
  17. * published by the Free Software Foundation version 2.! G3 ]1 Q: X2 k- P0 d8 K
  18. *+ _+ w+ x+ K2 E7 ?
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    # N, k8 Q. P' T5 }* z- h' W
  20. * kind, whether express or implied; without even the implied warranty: [4 h: \( _9 Y- _9 q) E: i
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the7 ]/ m8 O4 h9 B. |
  22. * GNU General Public License for more details.
    / I' @% `* ]% Z! ]' y
  23. */
    ; v5 p5 B* a: p$ @
  24. / I- s) _4 N& t' t) }6 f
  25. #include <linux/module.h>& _: ]7 s4 W# F6 m( |' I
  26. #include <linux/init.h>  `, G& @6 @4 C; w9 u/ `
  27. #include <linux/errno.h>
    1 W0 r4 q  x5 ]  o
  28. #include <linux/types.h>
    4 S+ g3 V: w) X' l' U
  29. #include <linux/interrupt.h>
      ^: [+ D6 K0 L' n7 P& c0 |+ A
  30. #include <asm/io.h>- {) d& ~  z7 J4 r
  31. #include <linux/moduleparam.h>% `1 w3 Q2 J! v9 h  D2 c
  32. #include <linux/sysctl.h>* X0 g$ U+ J0 l) T! W, Y  s
  33. #include <linux/mm.h>+ t  V# V1 o3 d8 N
  34. #include <linux/dma-mapping.h>) t: P. @* @- f# @9 R
  35.   J( L; @3 r+ \& H+ A
  36. #include <mach/memory.h>4 y* B( `# G* B
  37. #include <mach/hardware.h>  {1 P: r' b$ {3 {" o1 p7 X
  38. #include <mach/irqs.h>
    ' K4 S- r1 V" t6 A: ?
  39. #include <asm/hardware/edma.h>
    9 @- U% v4 O, z# u! v

  40. 3 i% t+ T' S; Z' g
  41. #undef EDMA3_DEBUG* d: I7 _: ^, x$ Q/ h* t4 p/ i
  42. /*#define EDMA3_DEBUG*/
    $ b# K6 [, M: r8 D  _

  43. 9 m% B# A# [  n) s' E0 O0 }
  44. #ifdef EDMA3_DEBUG
    6 h7 [5 r. |1 M8 o, }: t3 C
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    % K. S, k* _  P5 @# a2 ^
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    7 N( S0 z8 J* i
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)  m- l5 h9 O5 f9 u2 f* L1 t* _
  48. #else, w/ E" n1 S8 }6 ?0 @
  49. #define DMA_PRINTK( x... )
    2 ?9 R' V9 T  t2 \% ]' B) {
  50. #define DMA_FN_IN2 d- M" @) z* h- @2 a* x
  51. #define DMA_FN_OUT
    . A6 G4 t4 j! e( n% I! A- ^6 \
  52. #endif
    . P3 D7 x4 `, X; b

  53. ' F) K7 E+ d" Q  x
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ( o$ n/ E% Z7 _$ R' g( o# Z
  55. #define STATIC_SHIFT                3
    8 b  [5 o$ g$ i' V
  56. #define TCINTEN_SHIFT               20
    : l$ t8 Q' F2 A! \
  57. #define ITCINTEN_SHIFT              21
    7 R2 `; C, a. B0 m: ^, ~
  58. #define TCCHEN_SHIFT                22
    & q+ a& u  A7 V. G
  59. #define ITCCHEN_SHIFT               23
    " q$ i" ]& R( X0 D. v! W1 @
  60. ( s# u+ v; n' r: A$ L! D% `5 {1 k
  61. static volatile int irqraised1 = 0;6 i% r. G3 T" L7 A1 Y
  62. static volatile int irqraised2 = 0;
    $ ^/ d) k3 |( @" J

  63. " j; b2 M) }7 @9 N
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ! F% i' Q; X9 J8 A3 h( k; |# D! j( h
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 B/ |! H6 ~& Q- K
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# L7 ?8 S+ i. j' m# K7 _, C% Y4 m7 g5 A

  67. # |2 S9 x2 Y6 x8 v& Q3 `9 k* w
  68. dma_addr_t dmaphyssrc1 = 0;7 m" v% J3 h* Q4 Z8 j" F
  69. dma_addr_t dmaphyssrc2 = 0;$ l5 w1 u! T% m5 a; b
  70. dma_addr_t dmaphysdest1 = 0;
    ; m& q% n% K5 I, I
  71. dma_addr_t dmaphysdest2 = 0;- l8 u0 e1 u1 y. N) b9 Y* A
  72. ' ~+ q0 d7 f* {% G+ }4 Z
  73. char *dmabufsrc1 = NULL;
    / n4 u8 m3 s1 M$ t4 z# J/ q
  74. char *dmabufsrc2 = NULL;
    : Q9 i6 n5 y  o$ t
  75. char *dmabufdest1 = NULL;2 F3 N: [5 ~* k, G: c. c8 E
  76. char *dmabufdest2 = NULL;
    & ?/ t2 J( ^4 Y* C
  77. 0 S/ D0 M0 f7 G; S3 H8 N
  78. static int acnt = 512;
    ! U( u  F- o- \. I$ w) O5 e
  79. static int bcnt = 8;; ?2 }  s8 i9 I; w
  80. static int ccnt = 8;6 r6 x/ }3 s; H$ K3 W$ z

  81. 2 n( p0 M4 G! u% P$ l% _
  82. module_param(acnt, int, S_IRUGO);
    ' p- {0 |% f, d* u
  83. module_param(bcnt, int, S_IRUGO);" A: P+ `  q& }7 R
  84. module_param(ccnt, int, S_IRUGO);
复制代码
" {) T$ S# r% `' T9 E% \- f
6 @0 h" c/ ?7 |: l8 k: X8 M: A
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
2 M; T6 G" E& ?/ _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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
  N- g  i% f* W# ]6 ~     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
+ ^! s6 D# g3 z6 K6 E- n  y5 u8 d: j; Q2 [! {
; H" a1 I8 {$ z$ w/ j/ Z' F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 00:08 , Processed in 0.040673 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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