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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
3 X* w3 D; p# A* c0 m
  1. [code]EDMA sample test application
    0 ~3 ]" i0 ~2 b: K! E1 g, i  H
  2. /*
    0 b0 U; z' _, X" W3 p9 [
  3. * edma_test.c+ Y" V- b* ^' z, A: y
  4. *% q( m' c* `$ h; n
  5. * brief  EDMA3 Test Application/ i' t' D9 D5 C" t2 i; ^. t! @: ~
  6. *
    . _5 |) j# U, M! O( I, e  u
  7. *   This file contains EDMA3 Test code.. `: I. B) y1 a% W" X
  8. *
    # b7 b) m/ z9 }; X# ~4 e
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE% @2 M) C- @3 Y/ Y9 [' W2 J" F  j
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
      Z( p7 k5 ]/ V
  11. *         TO CHANGE.
    4 E  f; s7 D/ n" i
  12. *3 W6 h+ F. t4 Y+ P
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/& T- q* q9 h5 N1 V! a+ s$ E
  14. *9 L; z5 n. ~! i
  15. * This program is free software; you can redistribute it and/or
    ; z1 Y5 `  A" H' d/ j8 C
  16. * modify it under the terms of the GNU General Public License as2 M& Z. D" n8 D, G- J$ S, R- X
  17. * published by the Free Software Foundation version 2.
    0 L2 `2 t7 T  F0 }- Z
  18. *
    ; K) u9 I+ \5 ]2 g3 U
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    9 w* O6 {8 O3 B! ]9 p( f
  20. * kind, whether express or implied; without even the implied warranty4 r, n8 H- l! s* G( E
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ' h: X1 d3 o$ _! Z$ \) |
  22. * GNU General Public License for more details., V% [" K/ i4 K& a" u3 e
  23. */
    * o% E5 C/ ?* G4 [% S( g) A
  24. + j8 f6 q+ z* L0 Y' f0 O: Y
  25. #include <linux/module.h>0 |# P% U) Z. K: O, R0 ^
  26. #include <linux/init.h>& C: p& Q- |* v. |. T- R! b4 t6 v& A
  27. #include <linux/errno.h>7 g1 k7 G, ]+ l( I
  28. #include <linux/types.h>! d7 Z% u' ^, q, O/ u2 O3 k
  29. #include <linux/interrupt.h>
    7 `* o' v3 [/ u0 E0 ?7 n$ h' ^
  30. #include <asm/io.h>
    . T1 J' N: W, T) ]
  31. #include <linux/moduleparam.h>
    , D. N1 J7 Y' o+ R$ @4 T* p
  32. #include <linux/sysctl.h>/ W( _) ]$ T& j& f0 u
  33. #include <linux/mm.h>8 N) S" K1 }/ X) M% M: Y2 C: I! v; ^' ~
  34. #include <linux/dma-mapping.h>
    1 `$ i: Z8 T& G- [% ^5 n% A# o8 K

  35. % {+ Z$ u# }) B$ q8 f. t
  36. #include <mach/memory.h>
    . B6 b' {$ F( \6 B3 c6 e
  37. #include <mach/hardware.h>) D8 I9 X& e' F+ A! f
  38. #include <mach/irqs.h>+ X$ A: z$ J0 Y1 k: |" }
  39. #include <asm/hardware/edma.h>0 u9 [# \) r7 f* b6 z
  40. / @- _% P$ y5 v) X% m
  41. #undef EDMA3_DEBUG
    / \- A( C1 x2 G& c: n5 T1 t( b
  42. /*#define EDMA3_DEBUG*/
    5 }" @1 L# h3 a! m( ]

  43. ( W4 b9 P& g) R0 z
  44. #ifdef EDMA3_DEBUG& `6 o  w3 }1 B# \6 E
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)0 i& s7 z0 D# q" K8 Z, h2 e8 k, ~
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)! P3 C$ \& t: g! R, k/ G+ b
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    4 z+ [0 {' x8 K2 k- m: R+ |
  48. #else
    & N6 Y8 G, G* Z2 g' {3 u
  49. #define DMA_PRINTK( x... )5 j# x1 E' Q' ?5 a$ }: @
  50. #define DMA_FN_IN
    $ z) q$ V" O5 G# h4 }' Z! P
  51. #define DMA_FN_OUT- m2 S/ a  b. w) Q3 g
  52. #endif
      ?9 i" v$ A6 Q; F( a3 k$ H+ h

  53. , r4 L' A2 }) N' a3 T. h( Y( z
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    6 S$ E/ S% ^! d0 \
  55. #define STATIC_SHIFT                3
    8 E, A7 C$ m. O1 y
  56. #define TCINTEN_SHIFT               20& P( n+ n& h, n. Z& L+ c2 e3 P5 q1 x
  57. #define ITCINTEN_SHIFT              21
    : X. L* P% Q' `1 d6 v% E( A
  58. #define TCCHEN_SHIFT                22( C4 w$ r* ?7 G& L
  59. #define ITCCHEN_SHIFT               23, K$ k- A* f+ g) Y, K; f1 Y

  60. ! A* n# M4 L/ U( ^) s, P- G# d
  61. static volatile int irqraised1 = 0;
    / i6 J2 s3 r& B4 G$ n
  62. static volatile int irqraised2 = 0;* [& v( J- q* ~+ j3 p, ]" e1 U
  63. ; O2 P1 F2 ~8 Q& t& U
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' A# N8 s- u; J( i. q5 O
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);, j3 }0 {' E7 D0 |
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - v' g# T8 [: t/ @

  67. 2 t/ k" w7 d3 p( A
  68. dma_addr_t dmaphyssrc1 = 0;
    ' ]: a2 @; M# c
  69. dma_addr_t dmaphyssrc2 = 0;2 K) H& ^7 X9 o+ j$ f8 E! b8 w
  70. dma_addr_t dmaphysdest1 = 0;6 C, i- T1 b! J) Z) G* R9 n
  71. dma_addr_t dmaphysdest2 = 0;
    5 H- _% \0 O- w  I. h# F. S

  72. 4 g" N- h2 O5 J7 C: C0 O8 |
  73. char *dmabufsrc1 = NULL;( }% T! z0 t; x; R: ]% Q& A
  74. char *dmabufsrc2 = NULL;
    + y" Z! ^" x3 b: u) E! V) d1 k
  75. char *dmabufdest1 = NULL;
    ' ^0 k# v9 F) O
  76. char *dmabufdest2 = NULL;, |( P3 I' l) R- ?
  77. " G2 K; S2 J( ?; p7 w
  78. static int acnt = 512;
    * n# H: w) W/ X& Y1 q
  79. static int bcnt = 8;' s2 D$ j; i- Y2 c) ^
  80. static int ccnt = 8;
    , S- k6 n9 C& R  X
  81. / \9 K4 z% ?# D
  82. module_param(acnt, int, S_IRUGO);- S5 A: C+ C  x! F- D9 x, x
  83. module_param(bcnt, int, S_IRUGO);
    2 }4 h: A, t* j; M- w
  84. module_param(ccnt, int, S_IRUGO);
复制代码

' |$ q/ s! j# f6 J) u  K$ `
5 N1 o2 G) y6 @8 o6 O" C      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
& ~+ c5 ^0 w; c. T, n+ Harm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。9 Y* Q7 g$ x( v5 z( n' L5 W
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。  D$ L5 w& F4 N& o/ q! X

0 e: m. R$ C9 t! I4 ~/ E+ Q3 g
% N: j- e/ @3 ?! s) j& ?; ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-3 16:58 , Processed in 0.036867 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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