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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
; h2 K- g/ S. a& V+ w% A) k( ~
  1. [code]EDMA sample test application
    / \" t# n2 t# ^* D" f6 H
  2. /*! a/ K3 Y) `6 h2 Y$ k5 J8 a) h
  3. * edma_test.c
    6 ~( L4 k- W+ P) t5 M! Z
  4. *5 L$ \" C8 E* N4 q# D
  5. * brief  EDMA3 Test Application; r$ m9 w+ M) @: U9 s& l# f
  6. *
    9 T+ c: |( E5 K! T0 m) E
  7. *   This file contains EDMA3 Test code.5 w4 c  J3 J& l: @
  8. ** ~: d' g" j- u% B, O
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE, u5 G- j, |8 u$ F7 m! n, H
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ) T1 ^9 E/ X( A, ]. w. g7 m- T
  11. *         TO CHANGE.) G* F- a" V2 t1 q" \- P# o9 n
  12. *$ Y0 ~# _. N/ j6 T
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    $ i3 ^1 j  f7 q0 G: {; x
  14. *3 h1 D/ j6 i6 Z0 j. l1 Z
  15. * This program is free software; you can redistribute it and/or
    2 `+ ~- Q* o2 d( V- X+ P0 }
  16. * modify it under the terms of the GNU General Public License as9 q0 Q- U: B- L4 z# n
  17. * published by the Free Software Foundation version 2.* Y) x6 e/ l# Q) |" p5 d
  18. *
    % J7 S. ?* H- P) P6 H
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any7 n, a  k8 m2 I+ v
  20. * kind, whether express or implied; without even the implied warranty0 `% O/ v3 W) N0 X2 `) C
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the1 u( {" m9 j3 |# @: f- `$ @
  22. * GNU General Public License for more details.! z" ~2 I* @0 p( z; [7 @
  23. */
    2 j& s1 O/ i6 `. A
  24. - @* ]9 F8 A# g7 [1 _
  25. #include <linux/module.h>& w( M: V3 {8 z8 W8 \, G/ L
  26. #include <linux/init.h>
    8 A4 Q6 B! I* _# F. P
  27. #include <linux/errno.h>
    % Z) M7 m1 ]  |6 S
  28. #include <linux/types.h>) W6 D. L9 B6 i" S
  29. #include <linux/interrupt.h>. @* Q: R- D, t3 G# ~
  30. #include <asm/io.h>
    0 V; \0 W! @2 s" M* w1 Y, F2 s
  31. #include <linux/moduleparam.h>
    & G! t& B# \( q# P+ q$ N: b
  32. #include <linux/sysctl.h>
    ; R6 G: ?# l  ~4 L3 {. O1 F  e
  33. #include <linux/mm.h>+ Q3 T1 b$ h4 u9 g* [/ R% W
  34. #include <linux/dma-mapping.h>
    8 J, ~0 n% H2 t' K2 L0 |
  35. + E7 G, d/ J4 P
  36. #include <mach/memory.h>
    9 m5 M+ Q9 y) ?) C# L) i
  37. #include <mach/hardware.h>: n( T0 R! I  p. L" H
  38. #include <mach/irqs.h>$ V0 ~! E- p; Y) d, S# o' s* Z/ @
  39. #include <asm/hardware/edma.h>8 C% c  t, X, C

  40.   }) I9 ]4 o/ m
  41. #undef EDMA3_DEBUG
    " o% P! k/ O# }: }( i2 k! R) p8 k$ a
  42. /*#define EDMA3_DEBUG*/& N2 @1 r9 x# G
  43. 5 y# |% ?. w3 b
  44. #ifdef EDMA3_DEBUG8 h5 p3 E3 o& L. R7 j3 _
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    , d5 K4 C/ L0 O# m
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)8 M3 W" n! w+ C, k" S8 y, f
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)! j/ ]3 u* _7 D2 J
  48. #else
    ) P0 f2 m# |* {
  49. #define DMA_PRINTK( x... )
    ! h& N. P, D/ b2 f
  50. #define DMA_FN_IN3 n: ^: J3 x" g) Y
  51. #define DMA_FN_OUT: v. E" J3 Y  _( E- ]. c, H: S% k: ^
  52. #endif
    . I' x! p  {) N0 `
  53. ( d8 e5 L6 ]6 @
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)8 S- r" C0 |! h$ p$ z
  55. #define STATIC_SHIFT                3
    " I5 V- N6 ~0 ]; i' k
  56. #define TCINTEN_SHIFT               20
    % b, E# W- ~# t- y6 l
  57. #define ITCINTEN_SHIFT              21
    $ D+ R# c' P: V( z3 \
  58. #define TCCHEN_SHIFT                22
    " E7 M6 y1 m2 H8 O- A/ k
  59. #define ITCCHEN_SHIFT               238 H- h3 u' \7 G* ~

  60. , T" J* h; y% A* K
  61. static volatile int irqraised1 = 0;( p# Q( Q: v: C  v, U$ B/ |* w
  62. static volatile int irqraised2 = 0;
    # V& P# y& D# }9 w$ c
  63. $ Q  q2 H3 S. F6 l0 F# |, k; V2 H
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 t$ u) {% ^- V) N  u4 A1 s2 _) C# k
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; a) S* w# R0 D3 Y( g" f
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 v. [3 @0 u8 r" n
  67. : C: }7 K% E2 A  B( ~
  68. dma_addr_t dmaphyssrc1 = 0;
    6 r" a) ?- b& O5 p8 h" ~
  69. dma_addr_t dmaphyssrc2 = 0;
    , N  h% q: `' V) e# d% k; K
  70. dma_addr_t dmaphysdest1 = 0;
    9 H: n9 a1 G- D# g0 F  }* a
  71. dma_addr_t dmaphysdest2 = 0;; u1 x! d  p0 C* A" t& ^

  72. 5 _5 z6 A# V1 H
  73. char *dmabufsrc1 = NULL;3 E" l% W' ?7 U! D" W: n: k* J2 m
  74. char *dmabufsrc2 = NULL;" `1 D5 }! E; h; z
  75. char *dmabufdest1 = NULL;. ^! o9 f( A. I. C2 k' h( Z
  76. char *dmabufdest2 = NULL;
    ! R, V; W  Z5 \5 Q2 A3 Q

  77. 7 a8 j, q7 T6 G5 S9 X
  78. static int acnt = 512;9 p* L: Z' x' @( P- m
  79. static int bcnt = 8;
    ( l) i/ M) G9 F, K( _
  80. static int ccnt = 8;, Y# I; {2 e6 a+ c# R  r3 w

  81. % z8 g& L8 K7 b3 m
  82. module_param(acnt, int, S_IRUGO);
    : Z" v% r) ^& e  L: Y5 f  f/ [) z7 v
  83. module_param(bcnt, int, S_IRUGO);9 c9 H: ?8 `$ F' p+ Y- c& P# y# s
  84. module_param(ccnt, int, S_IRUGO);
复制代码
: m" a8 a$ H# b, o

$ _1 C) W" ~" D/ Q8 j+ Y      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
* v- V% T: U* \4 `. K+ S, jarm-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' J1 y, J6 ~" j8 {% S     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。9 j- t8 K9 k4 u% B
$ k, e/ |5 a) p
0 G* B9 I1 B4 F  b2 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-26 08:51 , Processed in 0.040228 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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