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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 4 V9 k5 y% a* W( d! Y7 B. G
  1. [code]EDMA sample test application- O6 l/ I7 o. o+ k7 N
  2. /*
    ! S2 X, U* t# \) W  t9 @: K/ N
  3. * edma_test.c
    / J) g! c" \4 R- h
  4. *
    # o! M7 T9 m, E- S
  5. * brief  EDMA3 Test Application) ?( c  }. c. f3 ]% I, z9 q4 A7 C7 q- h
  6. *
    0 n; j) d2 S! i1 d1 v8 ?* D
  7. *   This file contains EDMA3 Test code.- X9 O, s0 z3 j- Z
  8. *
    2 t& v, D$ S8 V$ k
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE. N7 K& ?0 D' h: O/ Y% B
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    , F3 Q& Y, h0 N7 u5 M
  11. *         TO CHANGE.; l- Q  ^! w- n. P
  12. *
    & D* S+ y) }" s
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/7 [6 y) q3 s1 |* Q! q4 P1 R
  14. *' D4 ~' l% j% ?8 u- b4 S
  15. * This program is free software; you can redistribute it and/or( J% w! o7 o6 I/ Q3 e
  16. * modify it under the terms of the GNU General Public License as
    1 ?0 o" }% U+ m+ v9 @5 M" D
  17. * published by the Free Software Foundation version 2.
    0 s" l  `1 K0 u* P* L4 c' `
  18. *+ A+ N. ?$ v3 ^' p9 `+ v$ E1 e
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    3 \4 N1 k) d2 N! J6 a) X
  20. * kind, whether express or implied; without even the implied warranty
    ! M; c( c% P; \: [, f1 L8 R
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    - N: d( A" X7 r7 _$ @. ^
  22. * GNU General Public License for more details.
    1 F+ i+ F% G4 }" z. B! E6 E1 W; g3 d) i
  23. */: w' S" r/ A/ l0 t
  24. ) ~; m1 \0 q/ x6 l
  25. #include <linux/module.h>
    , j4 D  f7 x. e# B' Q, `7 {
  26. #include <linux/init.h>- d  l/ M8 c. y$ T
  27. #include <linux/errno.h>7 |% W% N) u5 W
  28. #include <linux/types.h>3 u+ n6 V+ D0 J; O# P5 l
  29. #include <linux/interrupt.h>6 Q: c$ b5 `* b# G
  30. #include <asm/io.h>2 Z: U) H7 \! z( U! k
  31. #include <linux/moduleparam.h>
    5 \$ A' s$ P  ]- a
  32. #include <linux/sysctl.h>
    8 T) |5 p8 Q4 L# @" ]: c! Z
  33. #include <linux/mm.h>
    ( v& j- O% k& v+ }
  34. #include <linux/dma-mapping.h>
    4 b$ j1 k0 w/ d( x2 `, ~
  35. 8 T0 _+ |' h2 ~
  36. #include <mach/memory.h>4 }  V" Q4 g9 A) A$ v8 @
  37. #include <mach/hardware.h># d) ?. H! A; A5 Y, @2 M7 b
  38. #include <mach/irqs.h>  o  p3 X) [. n) ~
  39. #include <asm/hardware/edma.h>
    - w; b4 e. N% x  k
  40. - b6 O% K9 Q& u- ~. a
  41. #undef EDMA3_DEBUG9 o& w$ w* ]# {( ^: N$ {3 m
  42. /*#define EDMA3_DEBUG*/' w7 A( |5 ?7 F* [9 u3 S4 b

  43. : [- ]2 A$ _+ X* s; Z
  44. #ifdef EDMA3_DEBUG
    / M- f* Q0 O5 f+ f3 T+ Q1 g. @
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 ]5 }' b8 l# [
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)2 l* \" z! O. W/ p; [6 Y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    : x9 ~! {4 o* G* x  q, @6 w9 q
  48. #else! B0 V: ]7 C8 @: H, |
  49. #define DMA_PRINTK( x... )" R# ?6 H& n( k) }) w/ Y( L, Y9 ^
  50. #define DMA_FN_IN5 K  @% ?" a/ L$ Q1 U. ?/ |8 G5 h
  51. #define DMA_FN_OUT
    ; H* i: t' X- @8 f% }) D. O
  52. #endif
    $ H( {4 \' l5 l( _7 E

  53. 4 d/ R$ _9 o7 e- V: `6 a9 p# J' _
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ) R, e7 y8 J8 {" z6 O4 j. [* W
  55. #define STATIC_SHIFT                3
    % k' S! K3 A2 q1 I) ~  T
  56. #define TCINTEN_SHIFT               20
    - s5 {; E7 X; J
  57. #define ITCINTEN_SHIFT              212 t+ B, x' }  U+ r+ T" n  l7 S2 G
  58. #define TCCHEN_SHIFT                22
    2 d3 q8 }; _. D
  59. #define ITCCHEN_SHIFT               23" V% j# M) `! F0 a, L
  60. 0 z  ^7 o5 H  U1 @) c, w! ^4 r& n
  61. static volatile int irqraised1 = 0;
    ! p1 g# q1 T9 c/ v6 ?/ n
  62. static volatile int irqraised2 = 0;
    ! T: b" O1 G' P8 I
  63. , m$ r+ t0 u/ {) E
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 _) U* P) d, T7 `, N: t. v& Y
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* J  Y* F6 H% Y, n! X  W8 P$ `
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
      A+ y" K2 j/ c& u- Z. N
  67. 4 s& d* A: Z' W" e9 ?9 D: v9 d
  68. dma_addr_t dmaphyssrc1 = 0;) k) k+ e8 e( B* d3 N
  69. dma_addr_t dmaphyssrc2 = 0;
    0 t% |5 @" G2 N5 b/ x
  70. dma_addr_t dmaphysdest1 = 0;
    # A+ f& M0 q3 }- U; J
  71. dma_addr_t dmaphysdest2 = 0;
    9 x. `3 |  Y" _; o7 w6 t& s
  72. $ Q: G- o: Y+ @$ U$ t
  73. char *dmabufsrc1 = NULL;4 W/ i3 q9 D% ]: g4 L
  74. char *dmabufsrc2 = NULL;
      R8 j1 a7 C$ X, i% z
  75. char *dmabufdest1 = NULL;
    - ?' {( c' `/ X
  76. char *dmabufdest2 = NULL;+ r2 N6 u; Y. S

  77. ; {( J+ J9 n1 Y* G/ ]3 n8 j5 H0 ^
  78. static int acnt = 512;0 c( T( K3 z  E3 D' J" N3 X
  79. static int bcnt = 8;7 i2 Q% v" A' Z4 q% y, r
  80. static int ccnt = 8;6 M1 W6 `6 P# A" @, ^

  81. ) A' |, Y" r' }& l
  82. module_param(acnt, int, S_IRUGO);
    : @" S' f0 O- Q# B
  83. module_param(bcnt, int, S_IRUGO);
    8 X: N; s1 r- C5 H' k
  84. module_param(ccnt, int, S_IRUGO);
复制代码
( S& ~7 s0 z; |# \

; z/ \* ~( T& ^      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
! |8 D' n7 ^/ F" d$ X" \! ^9 y  \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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。; j, |. {+ A* H9 _  ]: R
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。9 x, r+ Z4 R/ t; F9 o- |

* m+ ]( _0 Z/ Y. Z" F* f
7 X; r3 q2 v9 `* N# L$ l) q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 19:36 , Processed in 0.042560 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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