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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 5 j+ i& m% e2 z
  1. [code]EDMA sample test application3 g4 I( `+ C: I( T
  2. /*
    / q8 F1 N& v- _/ a; u/ B
  3. * edma_test.c
    + P3 H" I! h0 J+ o/ v3 z- d0 U' A7 E$ b
  4. *. z7 v3 }3 G* k8 y( b
  5. * brief  EDMA3 Test Application4 V0 ], L; r) e/ X$ u8 `6 C2 i# U
  6. *
    2 [1 o5 r. w" r. s0 Z9 r
  7. *   This file contains EDMA3 Test code.
    9 h& q. p0 |# J/ R% ]' A/ {
  8. *
    $ r0 x! z2 G; v$ r3 @
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ) W) G) ^) a8 `. o' Q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ; b( }; w! ?+ [9 Q
  11. *         TO CHANGE.
    # q& A- o- F8 n- v1 `4 W
  12. *
    ) x/ l" \4 f' U% ]# Z0 m6 \' d4 x
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/% T* n! a$ n! i# R
  14. *
    * S( O, T/ K# |8 q/ t
  15. * This program is free software; you can redistribute it and/or0 p  H" E& Y9 `" }) K* x
  16. * modify it under the terms of the GNU General Public License as, j- j) c' G8 _) M' C* m
  17. * published by the Free Software Foundation version 2.
    1 j; y$ e1 k! G. I
  18. *, E' E2 _% o3 [" S8 f
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any) d$ v+ k! r1 c0 L2 L) J9 H
  20. * kind, whether express or implied; without even the implied warranty, O& y7 ~0 A  Q
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ! h: w: ?" k! i  S1 Z0 y8 Z
  22. * GNU General Public License for more details.
    & F7 A  ?8 w5 p# R* H6 m# Y
  23. */
    . W4 L8 i2 _( y2 r' H

  24. 2 Q6 R) g2 X2 A( l, |: \
  25. #include <linux/module.h>
    ' Y; F1 S3 ^% D3 f6 m/ U
  26. #include <linux/init.h>
    / l% P1 ]2 v- W6 \4 q$ y$ w
  27. #include <linux/errno.h>! s- J$ L& }" }7 r$ Z$ o
  28. #include <linux/types.h>+ [' ]( r9 L9 M' A8 Q. N& \
  29. #include <linux/interrupt.h>
    # \: N" d. Y, x) O' A. a
  30. #include <asm/io.h>
    7 z+ V. d& Q8 H5 u& W+ g
  31. #include <linux/moduleparam.h>
    3 D4 G+ ^1 r- B- }
  32. #include <linux/sysctl.h>
    % p( R, |  A+ Z2 {
  33. #include <linux/mm.h>/ ^7 P6 d% N5 B5 R7 |( S
  34. #include <linux/dma-mapping.h>/ F. k5 p7 l% W3 `9 U5 v6 E0 [
  35. 1 P% v( P/ D; t* H
  36. #include <mach/memory.h>
    , z" k& D7 l' H$ {2 ^  V# S
  37. #include <mach/hardware.h>
    4 L9 Z2 ^0 l6 b( U# ]: @
  38. #include <mach/irqs.h>
    7 M; @& \4 X& C
  39. #include <asm/hardware/edma.h>
    ! A3 I/ ~0 L4 T- G' j

  40. / H% R) N4 V1 N
  41. #undef EDMA3_DEBUG! Q! r7 C0 y( k- x0 _/ Y
  42. /*#define EDMA3_DEBUG*/
    $ F3 \! E( w$ |, V1 N

  43. , ]6 E; I5 p* k% e0 [
  44. #ifdef EDMA3_DEBUG" ^* _0 ^. Y) ?- ^5 p  B
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)2 V- @: B6 l- I3 L( }( P0 U0 w
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    # |7 \/ E7 l2 r6 U& M
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__). X$ i& M: k6 h. E, h# Y( `9 |2 \2 u3 m: ~
  48. #else8 y$ Y3 ~  @; [) O# W
  49. #define DMA_PRINTK( x... )
    - T$ ?; F6 c& x1 f* p
  50. #define DMA_FN_IN
    6 L1 W+ V4 R4 W" ^" }4 a
  51. #define DMA_FN_OUT
    8 z: B& F, n' M
  52. #endif' P6 y" D/ g" }% q! j  s" e
  53. 6 j7 l: k1 x- |. P. [" o
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    6 D) Z" e2 m4 E& D
  55. #define STATIC_SHIFT                3
    ( G( U1 N5 C4 X
  56. #define TCINTEN_SHIFT               20
    3 R4 B' c( k: P; R- s7 C
  57. #define ITCINTEN_SHIFT              214 J( ^+ ~) b- j) ~. v
  58. #define TCCHEN_SHIFT                222 v; @9 @- o, g' \
  59. #define ITCCHEN_SHIFT               23
    " R6 B0 j+ M3 m0 J6 ^4 d/ k
  60. - K) q! Q. K9 X  K5 j* c% k
  61. static volatile int irqraised1 = 0;) e( S. U3 Q( L. ?  t- O
  62. static volatile int irqraised2 = 0;
    1 d: \. k9 @! b* m7 N% W8 \* s
  63. - \$ _4 a3 t9 O  y% A  \( c
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);- _" E% E: o- C9 Z* ]) w6 S& k% o
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);- S& N9 o) U+ [$ ]
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    : @" i# o3 f, C
  67. ! I! p+ K! r* F: x1 O2 _/ _1 Q7 m
  68. dma_addr_t dmaphyssrc1 = 0;7 I7 }3 L( q& a0 n! y7 g0 S" k4 o
  69. dma_addr_t dmaphyssrc2 = 0;
    / v) X4 z" G0 N$ e
  70. dma_addr_t dmaphysdest1 = 0;  ~7 k5 r6 h5 l+ i( @- Y, s
  71. dma_addr_t dmaphysdest2 = 0;
    4 d- h! ~% M, d7 y$ @
  72. 3 B3 g, c7 Y5 Y, N+ M( N% \; k, V
  73. char *dmabufsrc1 = NULL;6 D9 F9 u2 I1 y' v; f( x
  74. char *dmabufsrc2 = NULL;
    $ b9 S' z- I% @; o
  75. char *dmabufdest1 = NULL;4 E; e0 [" |0 L1 C: t
  76. char *dmabufdest2 = NULL;
    7 F, ]) r3 w6 {  {  j

  77. 7 |0 {; E2 k: q, t- S
  78. static int acnt = 512;
    " u7 Y8 G- m: E8 b6 u
  79. static int bcnt = 8;
    7 a0 p6 H6 b2 W' C2 F9 g
  80. static int ccnt = 8;
    2 G5 q/ Z; d* d4 n" T' u
  81. - E2 `( R- Z0 U2 }: J
  82. module_param(acnt, int, S_IRUGO);
    ) V! g/ ~  I/ p7 p
  83. module_param(bcnt, int, S_IRUGO);- M5 c, T. @0 y( i8 d) J
  84. module_param(ccnt, int, S_IRUGO);
复制代码

0 {6 E; O: v" S- i6 x$ e9 }5 m! i/ F
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
% B) K2 h3 Q0 |. Narm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。+ W  C! H7 K( y% v' }
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。) b* K2 ?# e9 N' [8 x/ q0 X
) t$ v: o' y6 T

% w+ {4 j( N2 d$ a5 n+ C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 11:42 , Processed in 0.034185 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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