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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 i9 @/ u/ w3 {* R
  1. [code]EDMA sample test application
    : P4 ~5 J' L6 ?
  2. /*, R6 j, x3 D% n; U* |2 H
  3. * edma_test.c( ~: J4 b# [" z) P, a
  4. */ l3 ~" Q' b. i# y" R, x
  5. * brief  EDMA3 Test Application
      U+ S8 x  N- j1 y8 Q
  6. *
    9 a. |* ?# u# s9 i. w3 H3 x
  7. *   This file contains EDMA3 Test code.
    9 J! @) R- S% l5 U
  8. *3 g+ [1 w# U1 o
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE' V- |# v" N" e, Y
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    & J7 Z9 N% h" R* b$ K
  11. *         TO CHANGE.
    1 q7 U+ S7 S3 |; B4 X1 J  w9 k
  12. *" }# v0 O; n* j, s0 y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    : {" R2 M3 e, B
  14. *
    * I! w8 B: c* A! }6 @( B; }
  15. * This program is free software; you can redistribute it and/or
    6 F5 N2 ~  l' I6 n* d- ~$ o# H
  16. * modify it under the terms of the GNU General Public License as# m. Y8 F: j5 T% X/ O# e1 [
  17. * published by the Free Software Foundation version 2.9 d2 A5 ^5 i- d
  18. *
    ) K! q1 o2 [. o, @
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any6 b; x* `. A3 J3 H  f
  20. * kind, whether express or implied; without even the implied warranty* d9 m4 q5 |# E% |# ?
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    6 M: F$ ^+ j5 d+ X% E
  22. * GNU General Public License for more details.. Z$ M: e# R: ~; k
  23. */8 ?. s: I' U) ~- Z" `# ]/ B

  24. 4 |% W/ e" Z, `8 Y- m7 E4 F
  25. #include <linux/module.h>
    # ?6 O! _: ~; v% |: [% v
  26. #include <linux/init.h>- z' f3 N4 k  h1 T, Y4 {) z3 D& T
  27. #include <linux/errno.h>4 k1 I" A/ d5 {7 e9 m
  28. #include <linux/types.h>. v6 W; S, l; q3 _5 J
  29. #include <linux/interrupt.h>
    3 F" r0 Y$ X8 b- a$ t, f
  30. #include <asm/io.h>$ M# ?8 A( D/ V" c
  31. #include <linux/moduleparam.h>
    % f8 Q% y) d+ T( {
  32. #include <linux/sysctl.h>
    3 B$ i8 J2 s6 V2 F
  33. #include <linux/mm.h>, @; ~  Q+ g% J) Q/ Y8 X# @7 l0 S
  34. #include <linux/dma-mapping.h>
    " ~4 @1 ]4 A1 b- \" g% N" ^
  35. 4 {3 Y9 I1 U* j0 C
  36. #include <mach/memory.h>
    3 u' J  K# b, W# d/ J
  37. #include <mach/hardware.h>7 w3 G9 M, e* L" k4 {
  38. #include <mach/irqs.h>2 d( l' H2 w8 E6 r- u# m
  39. #include <asm/hardware/edma.h>
    9 d" F8 |4 d! ~% }, V* |3 Y
  40. $ y5 |! J2 V3 r! [
  41. #undef EDMA3_DEBUG6 }1 K% W  n1 A/ A# u' E3 c
  42. /*#define EDMA3_DEBUG*/
    / o" G$ {5 V: V! g2 N) `3 y

  43. 8 |- H  |! {/ j6 O
  44. #ifdef EDMA3_DEBUG7 ^) f' B' U3 `4 R& ]. O5 c
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    5 b  x2 _% f. n0 U
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)1 A# d' N4 U/ }& w/ X
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    2 m: E) i' ]! h" h& Y
  48. #else, [8 u+ F( v) B6 |1 l* L
  49. #define DMA_PRINTK( x... )3 [6 Y, I/ V' O+ ^- h: I
  50. #define DMA_FN_IN1 l; {) P* ?8 L
  51. #define DMA_FN_OUT4 F( Y5 O& [# E6 `1 r, [* a: a
  52. #endif. X2 D4 w; E8 c5 C; F
  53. ; J4 m( a* i$ }- T$ }' x! Y4 y2 _
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    6 ]0 |6 K0 b3 p/ `
  55. #define STATIC_SHIFT                3
    : M+ d& t5 l. Z5 L8 m+ e9 j6 A
  56. #define TCINTEN_SHIFT               207 r. `! Y7 Z7 ]; A9 x  I0 |
  57. #define ITCINTEN_SHIFT              21
    0 N5 {3 C7 {% x9 y0 M
  58. #define TCCHEN_SHIFT                22
    - i: X* h7 E" |' F+ M$ C
  59. #define ITCCHEN_SHIFT               23
    / r6 }% h3 _& `1 m
  60. " G. D3 w& F( Y1 f) k1 _! @5 i* \
  61. static volatile int irqraised1 = 0;% c# z' S& O; L( S$ l2 g5 j
  62. static volatile int irqraised2 = 0;
    0 {& o: t9 T  e' ^4 J8 J( D( n
  63. : d+ Q+ }+ w% K# g7 H) d. f
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 L3 o) |- x9 ], ]7 m
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / Q, I& z' f3 F) F+ H
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ ~: Z7 }& b7 A4 Q# e5 i
  67. * d! u2 _# y0 k; f  b
  68. dma_addr_t dmaphyssrc1 = 0;
    0 |& G7 D/ U/ |$ s& s- t5 m* }
  69. dma_addr_t dmaphyssrc2 = 0;
    5 j% w! |( W1 ~' r; _* F7 o& z9 x
  70. dma_addr_t dmaphysdest1 = 0;7 ~6 R( o: [  q8 T
  71. dma_addr_t dmaphysdest2 = 0;& S! t7 O' t& [3 I( R5 S
  72. 4 V1 i6 M2 _% N: S: X* Z
  73. char *dmabufsrc1 = NULL;
    & q6 \6 S& n9 `4 e
  74. char *dmabufsrc2 = NULL;
    2 `! E" t2 i3 e# U( X' |, N
  75. char *dmabufdest1 = NULL;
    ; _' r# `0 ~: b7 I. B8 N! R: P
  76. char *dmabufdest2 = NULL;
      L; x" v( u2 {5 r

  77. - `% q0 P! r7 j0 L% q
  78. static int acnt = 512;
    . H  P6 L2 L3 r. m( A
  79. static int bcnt = 8;
    ; w* {8 |2 c  f' H9 ?  D
  80. static int ccnt = 8;  |: k% T& t9 r: b8 r. @
  81. 4 i% S0 X$ F. m9 [  E
  82. module_param(acnt, int, S_IRUGO);: j  [" [6 o3 D- S& B% j
  83. module_param(bcnt, int, S_IRUGO);7 |, g- [* X) D8 T0 b* x5 [3 S
  84. module_param(ccnt, int, S_IRUGO);
复制代码
2 `4 `8 Z$ D7 R7 R" c
3 @: _1 t2 J& v; k5 R. Y- i( l
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
0 b, M. U, Z( w1 Qarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。1 m0 F8 W5 n- C
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。) R4 {. m4 O* h, M; w

5 m% L+ F/ J" K1 c1 k7 q& X
* {0 ^' d+ V5 g, b" o. S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-7 10:22 , Processed in 0.043927 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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