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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ( }- t& ^: p7 d  l( C
  1. [code]EDMA sample test application
    . N8 \- S: F2 p3 h
  2. /*- [% P4 V7 X6 |2 l5 i) J
  3. * edma_test.c
    , e$ _0 R, a4 R: G* N, p) z
  4. *7 J7 |9 L0 W+ _/ C: ?
  5. * brief  EDMA3 Test Application
    ! B* I3 m' H7 F5 V; F, X
  6. *( z' G2 t1 F: S2 I: n1 J
  7. *   This file contains EDMA3 Test code.
    0 I3 Z' [1 Y) b5 J, D
  8. *! m, i$ T: t6 ^  U% x$ ~4 N- J
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    : Z: I& _9 |/ Z3 D- S
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    * _" u+ {5 t5 ^% F) a+ f
  11. *         TO CHANGE.
    * J* k5 O" A. I% O* S  q
  12. *$ w% g* z# d. Y( i2 e/ B8 S1 H* Y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    0 s+ k6 w) k# _5 P4 ^, P3 {
  14. *$ J0 j: n" ]$ n! |9 H* y# T
  15. * This program is free software; you can redistribute it and/or, F, s( H2 o0 ?0 X4 O( s
  16. * modify it under the terms of the GNU General Public License as! L1 u# A" G3 s) |3 f$ O& }9 b
  17. * published by the Free Software Foundation version 2.
    1 h' q) w2 i* x' W; k
  18. *
    ) _# G8 u3 {  D* k1 O* I
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    0 k( K" p% Z# g# j2 A9 Z( T3 j9 ^
  20. * kind, whether express or implied; without even the implied warranty5 c# [( d" F4 R; N" }9 H6 z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the5 O' [: t0 [+ J7 r: a7 T
  22. * GNU General Public License for more details.# I8 t8 c% a; t4 y2 h
  23. */$ X! l- |) s" O3 }  z4 z

  24. ! d+ x. _- v7 A5 S
  25. #include <linux/module.h>+ [. L7 q9 T% p; s6 @( M
  26. #include <linux/init.h>
    6 n$ }% M8 R2 S  w9 x/ y+ ]
  27. #include <linux/errno.h>5 L# Z! `3 L3 L( u# u) Q
  28. #include <linux/types.h>! C$ b( v/ m8 B6 {! l
  29. #include <linux/interrupt.h>  q6 |2 Q6 _3 |$ q* B- O
  30. #include <asm/io.h>
    + w. g- Q) L& V1 y5 k
  31. #include <linux/moduleparam.h>+ m, G/ ~  C6 j  D" B
  32. #include <linux/sysctl.h>
      Z" o3 s1 ]/ F( s5 c8 _* Z
  33. #include <linux/mm.h>
    . B; {# @  m8 c3 k2 T
  34. #include <linux/dma-mapping.h>2 }) Q: Q5 e. l  o# L, \* C

  35. 1 B3 N- d5 \9 f
  36. #include <mach/memory.h>$ N. f- W% i& \4 ?. W7 e* i5 R
  37. #include <mach/hardware.h>2 E& ]8 H1 M5 F: y; z, ^% [
  38. #include <mach/irqs.h>
    0 ~6 t6 a( ^, m7 D1 P1 H( C
  39. #include <asm/hardware/edma.h>3 T* E$ S1 |( `8 s$ N% e/ K
  40. 7 o  o* F. z3 `5 q( g- F
  41. #undef EDMA3_DEBUG
    7 k* g; m- A0 J8 }
  42. /*#define EDMA3_DEBUG*/
    $ H4 `6 }4 G& H# d+ ~9 G
  43. / y* G! r3 y- v8 w, L/ R+ o
  44. #ifdef EDMA3_DEBUG6 q4 _: \# L& [7 [# v2 o: t% b
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)' y/ T# K' K! W) L
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)- d4 m% Q% r  O, k/ T2 {" M* s
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    6 n6 M9 i7 k* A; _
  48. #else7 `, X9 k9 b* _0 e0 \8 P  P
  49. #define DMA_PRINTK( x... )
    9 V  I7 Q/ ~. L8 I1 Y$ T
  50. #define DMA_FN_IN
    4 H& \* {3 R+ J3 |; Q% |2 ^
  51. #define DMA_FN_OUT
    . D- _; @* P+ k5 M4 x; Y
  52. #endif1 \- f( n( d+ v# L
  53. 1 A/ S5 N2 S* r, L. N
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)% g! I/ c& l! d7 i
  55. #define STATIC_SHIFT                3
    # t0 L7 \: |7 |* y+ a1 \
  56. #define TCINTEN_SHIFT               20! C/ F+ J$ w1 B
  57. #define ITCINTEN_SHIFT              21# d3 N# j9 L1 z% g" |  n
  58. #define TCCHEN_SHIFT                22
    ( R- {& E  i$ m' O4 q
  59. #define ITCCHEN_SHIFT               230 _& E8 h* f. C6 _( o9 ^/ r
  60. 5 Q$ w7 ^; m6 W$ z+ u3 H
  61. static volatile int irqraised1 = 0;
    . l: t' J0 ^9 C5 P. B
  62. static volatile int irqraised2 = 0;
    8 z3 y& }9 f" q$ C+ j

  63. 5 t8 U  I6 M/ p
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);/ g) S; R, `' E. X# e
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    % _: Z) [( |6 {. k) {0 T3 b4 n7 X
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & K$ o" z' n- j" F

  67. ! _$ B' n. d3 L
  68. dma_addr_t dmaphyssrc1 = 0;9 m% H/ [7 u' d6 G. V" s# ?* s8 s0 l/ s
  69. dma_addr_t dmaphyssrc2 = 0;! U& d# J0 ]# \! }
  70. dma_addr_t dmaphysdest1 = 0;8 R+ w6 z3 m/ }/ g5 U! T2 D/ [) {/ l
  71. dma_addr_t dmaphysdest2 = 0;
    ( b6 R$ J( _, m; ?# w4 Q5 f# p
  72. 4 K9 E8 h6 x$ ~) ]3 x" y
  73. char *dmabufsrc1 = NULL;
    & F* i  [5 ]; r6 x
  74. char *dmabufsrc2 = NULL;" f6 L, u$ h2 ^+ T  P1 x
  75. char *dmabufdest1 = NULL;( f0 |: B% E$ c$ `
  76. char *dmabufdest2 = NULL;
    ( I% ~3 W8 V$ X4 W9 W0 i4 c

  77. 6 P: @+ R& ?0 J4 l# \& a, x
  78. static int acnt = 512;. i' q. w8 ?8 u
  79. static int bcnt = 8;  T) V; w7 |9 z+ x
  80. static int ccnt = 8;% `- V# v( Y; Y9 ?) I. J

  81. . @& o+ `3 {! T
  82. module_param(acnt, int, S_IRUGO);
    & ]; m9 H" Y/ @4 G5 V/ [
  83. module_param(bcnt, int, S_IRUGO);" ?# V6 E0 W" w2 g' j( @9 o  h
  84. module_param(ccnt, int, S_IRUGO);
复制代码
: t4 c0 D! C: _6 o; z) p

& p; n6 d- M  W6 R" P      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
1 x- p0 v* I' n% [# g5 iarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。* i; ^% @# T1 o( B3 ?* @
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
4 g+ X- s' C( B# ^0 Y: ^  x& k0 `7 C/ R" w5 C

+ [2 s1 N! Y0 t' `# F" A# Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-7 16:15 , Processed in 0.038444 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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