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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
- ?7 z: i/ b5 K
  1. [code]EDMA sample test application
    : L/ x1 }; ^2 ?/ s! d; V9 g
  2. /*
    ! }  T" @# x8 ^; _
  3. * edma_test.c% O" N: D. K: o) D
  4. *
    & {) I1 O, d# o7 V
  5. * brief  EDMA3 Test Application
    . V8 }* }5 \2 y+ u. D5 y4 v, E
  6. *8 \1 f9 \5 c1 d7 y
  7. *   This file contains EDMA3 Test code.
    + {) Z# ^1 C8 ], B& D8 c! C7 ]
  8. *
    : Q, {1 k( L# z  Q  n  |5 p
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE" k7 ?& }$ q( u6 t
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT/ r, b8 I5 _3 U8 X
  11. *         TO CHANGE.$ t9 G% w8 f7 O0 o1 T
  12. *( o- R; x/ D6 n9 ~2 t3 E0 Z! [
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/( e3 a, r: m5 F2 ]0 M& j9 Q
  14. *
    ' H; [9 D% {  W6 C7 a
  15. * This program is free software; you can redistribute it and/or4 ^1 x: v* R( b1 }5 Z
  16. * modify it under the terms of the GNU General Public License as
    2 h! T8 v5 L( ^) X2 h9 R4 s
  17. * published by the Free Software Foundation version 2.2 Q) D) @- Q& O* Y4 H# a
  18. *+ i. F+ P5 e4 G
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any3 R3 ^$ c8 ^/ z2 M* ]$ e
  20. * kind, whether express or implied; without even the implied warranty
    - k) ^7 o$ J% e
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    % h) v+ l+ E# c8 Q& r
  22. * GNU General Public License for more details.  _+ C2 n, A0 l* i
  23. */
    7 n* O9 G* @3 T  D2 K

  24. 3 `' H& X0 ~6 Q0 w' ~
  25. #include <linux/module.h>* Y3 `4 N3 t9 V0 A) K5 Y' W
  26. #include <linux/init.h>
    5 g! {% H$ e- e; i' B$ g
  27. #include <linux/errno.h>8 ~' ]  c& s" a! p3 ]* d
  28. #include <linux/types.h># j7 B, |6 g; T5 F! A" a
  29. #include <linux/interrupt.h>* w1 J! D. m% a2 E8 H
  30. #include <asm/io.h>
    ) R( u  u3 l8 r/ H& |
  31. #include <linux/moduleparam.h>
    ) F8 S  C! V; U$ N( `) t, H
  32. #include <linux/sysctl.h>
    2 A8 q* z  \' h, I% g
  33. #include <linux/mm.h>
    0 Y! C  c. [1 u
  34. #include <linux/dma-mapping.h>1 ]% x& D1 v, e6 H/ E7 A2 e
  35. 2 i: {3 l, S# s
  36. #include <mach/memory.h>
    - ?/ T. O& I( ?) n: Y  T$ s
  37. #include <mach/hardware.h>$ N5 D" k* z5 ^5 p- Z) J& p
  38. #include <mach/irqs.h>1 D; p5 [) h2 i0 `
  39. #include <asm/hardware/edma.h>
    5 U# h3 M- ?+ V. t5 s

  40. , p( K2 ^6 W+ ^3 p6 R7 P* ]6 }0 a
  41. #undef EDMA3_DEBUG
    & d: j7 R. W0 _5 i
  42. /*#define EDMA3_DEBUG*/
    9 |6 @6 J7 ~0 o) R) X; C- Z
  43. 1 O) @; P4 N. e+ ?' D- E& m5 G: ]
  44. #ifdef EDMA3_DEBUG# H2 p( N2 L+ Q
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)3 T- \' l9 T( s  y
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)- |% R5 i) M. H# ~# W3 o% K
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__): {  l" J: e% E0 O+ n3 y8 R# e
  48. #else$ [/ a- o, v: N2 @9 S
  49. #define DMA_PRINTK( x... ), n# p" v" t8 |  j5 S! ~2 G5 ^
  50. #define DMA_FN_IN
    5 ?; I) R$ b$ Z6 e8 j+ P/ l" \
  51. #define DMA_FN_OUT
    " \7 l* `- @6 O; I$ i
  52. #endif$ M) |" q4 a. d5 i

  53. # q, a0 G8 i( A2 I* y, t5 p
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    * ]& {8 ]6 ^* f( |4 l& ]1 g
  55. #define STATIC_SHIFT                3
    0 t2 l) X$ v9 P3 L7 H7 N6 ?
  56. #define TCINTEN_SHIFT               209 C) H3 |; c, F5 h# P
  57. #define ITCINTEN_SHIFT              21
    - b7 \1 I9 d. Q& s, d: [4 h
  58. #define TCCHEN_SHIFT                22
    ; t$ F" }( I# A' x0 b
  59. #define ITCCHEN_SHIFT               23
    ) P) S% m! B+ q9 d9 ]! f! j, e
  60. 3 h$ [3 i1 P5 E
  61. static volatile int irqraised1 = 0;% z4 P# x2 ]2 G) p  \6 R/ x
  62. static volatile int irqraised2 = 0;" W6 L: I  W3 X) [1 s+ @! y4 b9 V

  63. ) N. |0 l$ u* j4 G4 U) U( A' W/ s
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 g5 ^1 {3 O3 h" S) A# R" |. F$ t  [
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 \% ^) A+ X8 u' O! H5 o- C" D
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ N* W3 i6 p' ^# W: U5 k+ t
  67. 0 N. ]# r$ D  g, P1 C- j0 Z
  68. dma_addr_t dmaphyssrc1 = 0;# ^- B: b' A- Y6 y# }4 I; @$ t
  69. dma_addr_t dmaphyssrc2 = 0;: V" a( X8 N; o: n7 A( s
  70. dma_addr_t dmaphysdest1 = 0;  A, ^! z  }3 {
  71. dma_addr_t dmaphysdest2 = 0;2 w7 q1 i. V, [- x5 }) _

  72. 6 J, w- y" p2 @
  73. char *dmabufsrc1 = NULL;. L, P* e# n3 {) o( Q7 \1 _
  74. char *dmabufsrc2 = NULL;1 v. B- ?5 R7 b) o  U
  75. char *dmabufdest1 = NULL;
    / r0 f( _% B1 D* t) |6 k6 F1 M* Z3 R. X' L
  76. char *dmabufdest2 = NULL;8 v$ O* e6 p% R

  77. $ _: C0 d5 }# }1 ^/ i6 }9 V$ Z
  78. static int acnt = 512;
    ( k+ Z" ]3 o5 e
  79. static int bcnt = 8;
    , C9 {) h- _/ u- Z2 _" m( g
  80. static int ccnt = 8;: E" ~: P$ Z/ H
  81. & S# J, O; ]0 l( P8 ]8 x
  82. module_param(acnt, int, S_IRUGO);
    % p% A4 z, {2 ~: L( b2 B
  83. module_param(bcnt, int, S_IRUGO);: G6 R9 Q3 y$ q' U8 t
  84. module_param(ccnt, int, S_IRUGO);
复制代码

) u6 D3 O/ d/ I9 I
; D3 M0 C- c+ U      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
3 J. K. S" T2 H) R2 q2 parm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
2 t! g3 o9 V, Q     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
+ J" `7 z8 ^" y9 l3 A9 i" _# m' b$ m) X" D" \0 [  D) n5 n* H) j
3 s3 Q2 R( z8 @8 r2 j  e1 v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-23 17:36 , Processed in 0.039333 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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