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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
0 v! x1 w- s# z  K! h: @
  1. [code]EDMA sample test application. |( _- {7 |1 f( p# b5 S5 J
  2. /*
    3 k/ j2 f! r. H  U
  3. * edma_test.c+ K: |; v' x! a/ p: k* w
  4. *
    ; j5 r8 N6 I- Y' ?/ F( y
  5. * brief  EDMA3 Test Application
    $ y4 z  N$ }, i4 H: [
  6. *
    3 f' Y- L0 E5 I  g6 {# e
  7. *   This file contains EDMA3 Test code.! J0 X" b! M: S6 o$ ]
  8. *
      f  i/ E2 b' Z5 }# J& Z+ w
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    9 Q* O8 g  n6 Q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT! A4 R+ @; [1 D% \& X$ A5 i
  11. *         TO CHANGE.
    : P2 C: i- b. F. Y  p
  12. ** C2 _5 p' w4 a0 {, \
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ! M8 m5 h* \  s* n7 m, z
  14. *" [4 d6 F; S. W- }/ `: u  G
  15. * This program is free software; you can redistribute it and/or: p! C" I( b9 Q  J& Q% G
  16. * modify it under the terms of the GNU General Public License as5 ]. ^3 ~' r2 t/ v' ]3 G' ^- N- L' R
  17. * published by the Free Software Foundation version 2.- ]% l8 W  S- u) c6 O& S' `
  18. *# K; d# c' ^5 p! q7 m: B+ t
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ( _) t+ N5 ?1 B7 G
  20. * kind, whether express or implied; without even the implied warranty
    " e* m" }1 K! n" H$ v- i/ G, K! y
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the& N/ \7 K5 I5 a! m
  22. * GNU General Public License for more details.2 k+ H7 g' u' h. {& w
  23. */, [: G4 c- V0 r. W, h6 u+ d

  24. 3 ?2 `! X; S+ n) W
  25. #include <linux/module.h>- s, J! ~8 p6 ?- \
  26. #include <linux/init.h>
    ( E4 T' K. T5 Z0 j* I
  27. #include <linux/errno.h>
    ' K+ ~- J  M9 H! K" I
  28. #include <linux/types.h>) V, O# E% ?3 j/ h& R( C
  29. #include <linux/interrupt.h>
    ; j" o; d4 H( U$ q+ @
  30. #include <asm/io.h>
    " ^$ Z/ c: H' S! m3 O
  31. #include <linux/moduleparam.h>! u) m8 e: L  l* N
  32. #include <linux/sysctl.h>
    / h. K/ ~' C$ Z2 s& d( P0 ~- B- u
  33. #include <linux/mm.h>/ S! a1 w6 g9 P3 {" @4 }
  34. #include <linux/dma-mapping.h>+ E! P! X, v" ~' b/ O
  35. 4 {0 f4 ]+ z, ~, m
  36. #include <mach/memory.h>1 K  Y& b: k" m; w
  37. #include <mach/hardware.h>" G& k$ Z8 S. h4 J% d) \
  38. #include <mach/irqs.h>
    ' \; r7 S# G( v2 O. m% _& p
  39. #include <asm/hardware/edma.h>2 T1 D2 H; Q$ b* q% u
  40. 4 q& y5 u# K/ j5 P" u( L2 [8 D
  41. #undef EDMA3_DEBUG. S4 Z) y8 F4 Z7 N. m
  42. /*#define EDMA3_DEBUG*/
    ! l9 a/ G, `" H2 U2 _5 X/ E# _$ m

  43. 7 }' a* Q) R" W, [
  44. #ifdef EDMA3_DEBUG$ h  B0 M" R& a# r$ B
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS), m: E" l( Q* _& i
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)5 }' C. R2 r, S7 y$ o! C" h! D
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    / l  ~1 j8 B* E; B
  48. #else" K2 I# V( P$ P6 G
  49. #define DMA_PRINTK( x... ). m6 V( U; O/ V8 |! q; [8 g
  50. #define DMA_FN_IN
    ! F" m: {1 _# h$ W1 [. ?% Q2 P
  51. #define DMA_FN_OUT+ c- b. p" K) \6 Q5 a
  52. #endif
    ) Z7 Y4 i2 k+ Z

  53. ( m& z7 X( ?5 G% E1 X0 q) c
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768). \/ a7 }9 H; }0 A3 N0 |9 u1 s
  55. #define STATIC_SHIFT                3
    5 Z2 E6 `( C) p
  56. #define TCINTEN_SHIFT               20
    $ o3 A, K3 t7 k/ U$ ?
  57. #define ITCINTEN_SHIFT              21
    ) C( ]" H+ R% @
  58. #define TCCHEN_SHIFT                221 C4 J( z' Q9 }5 P
  59. #define ITCCHEN_SHIFT               23+ ]! n' T2 {4 k  h% X3 W) E: X
  60. ! B4 B1 t- ~6 g3 p6 |! B  Y
  61. static volatile int irqraised1 = 0;2 X5 @' l$ V5 B" Y. w9 Z5 v' L
  62. static volatile int irqraised2 = 0;
    7 g4 N! }3 r4 ^* `5 j
  63. 0 q$ X) ]; S( f( Q7 n0 _2 k
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% }& _* l* T7 k
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 T8 ]- M0 U: K
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 I/ E0 V2 I0 c$ y; G  N# F3 q- b

  67. ! T$ k+ O! w* _- a( y" y: E* A
  68. dma_addr_t dmaphyssrc1 = 0;
    ( w4 p5 C1 m7 M( \8 N
  69. dma_addr_t dmaphyssrc2 = 0;) e; L5 A" V  D( p" A
  70. dma_addr_t dmaphysdest1 = 0;
    . T; `( X* d9 t, ~$ s& {- I
  71. dma_addr_t dmaphysdest2 = 0;) z2 B4 C- @6 @# S2 u
  72. 8 i) ]) x" e. U1 |8 L. ?! |
  73. char *dmabufsrc1 = NULL;, h, `6 j) t# }. i) c  X. T9 W
  74. char *dmabufsrc2 = NULL;4 Q- w/ O' n: \8 K: e
  75. char *dmabufdest1 = NULL;
    - P" q! [6 |& _% C# s
  76. char *dmabufdest2 = NULL;
    5 }! Z7 b8 ?" j4 h
  77. 3 r0 i' W3 w" m' b# w  A  d; n
  78. static int acnt = 512;
    / J, n5 k$ ]* N
  79. static int bcnt = 8;
    $ b0 i' t7 d* W( v
  80. static int ccnt = 8;
    4 V/ f( x; E* U; E# k- d/ b' e) ]

  81. 8 p3 h/ Z' I- C# `
  82. module_param(acnt, int, S_IRUGO);
    - p! I: G" e& w/ M% @% _9 z$ T
  83. module_param(bcnt, int, S_IRUGO);- {: E% v1 @$ s
  84. module_param(ccnt, int, S_IRUGO);
复制代码

0 n6 N; u* y( X* a/ l: h) t' |8 N2 f
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用; d3 y0 }- @7 J, r+ J
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
8 @; D9 V% R. r* L/ O" [7 P     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。; n8 C  Z: [; `8 V* Y  |- S
, \0 \) G* k2 z! g4 y

6 p* f5 l: O9 d0 ]9 s# K8 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-16 22:24 , Processed in 0.039575 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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