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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ' |; {; e6 b% p. M) z
  1. [code]EDMA sample test application) y: l( z5 U9 P+ q  K- q9 J
  2. /*' L- L3 {" b( T% ?& u7 [
  3. * edma_test.c
    2 C4 F# y# g" P2 T$ C
  4. *' M3 v3 S4 Y% p# `) i% \3 a5 v% b
  5. * brief  EDMA3 Test Application+ z! _. T) i  e: C" w1 Y+ f
  6. *( e) Z2 N* y+ ~2 L% ^
  7. *   This file contains EDMA3 Test code." n. C' l# V& l2 {) E4 L
  8. *; N, U/ t2 I! P& D. o7 Z% c
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE9 u, a' A  z3 d5 ?; F, J5 i
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT+ D+ W+ h. Q1 E
  11. *         TO CHANGE.
    8 m5 C0 ?5 ]5 S; z0 L( U7 ^
  12. *
    9 i$ O9 U5 L- [3 q3 M
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/$ \! H6 S% X5 Z  q
  14. *
    & g( |4 l0 w. K2 M! ]- G
  15. * This program is free software; you can redistribute it and/or
    / a: b7 @; t" l! u' M3 _4 I
  16. * modify it under the terms of the GNU General Public License as
    , ^0 g/ U- `, Z! [! m8 g' ?
  17. * published by the Free Software Foundation version 2.
    9 K1 P3 @& ]  z4 l2 k- Z, m
  18. *
    6 s3 _' @' B' W( A$ M4 v4 I% T
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ' @, ?4 q3 k9 w$ H) y, R0 t
  20. * kind, whether express or implied; without even the implied warranty
    % y7 C: H& @" P" U' u
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the, q% d; e+ Y3 J% u# W
  22. * GNU General Public License for more details.
    ; }/ X/ b6 V9 `% a
  23. */
    + Y- y$ g3 _. K( @+ G
  24. % U0 s% E- A; C8 n4 `+ d
  25. #include <linux/module.h>+ |% M$ j9 {% H. {/ D! H! m0 H
  26. #include <linux/init.h>
    1 h5 q6 V0 W/ i. C7 m6 u& y0 t
  27. #include <linux/errno.h>* \$ F$ U8 q% T0 E/ u
  28. #include <linux/types.h>
    $ Z5 s4 j9 A1 T$ F
  29. #include <linux/interrupt.h>
    # r8 ]/ ?! [" F  G
  30. #include <asm/io.h>' k: O) o2 C+ G8 W
  31. #include <linux/moduleparam.h>
    ( H- X& O' j+ [9 y; t
  32. #include <linux/sysctl.h>( {" t5 m1 ~0 r  ?
  33. #include <linux/mm.h>! M# A4 O) _# Q# P" S
  34. #include <linux/dma-mapping.h>6 |8 H$ C% C3 w* s) _/ J8 F( I

  35. ' m, F: e/ c5 v" a1 S4 @$ t& M9 a
  36. #include <mach/memory.h>
    4 g# E$ r% y) m3 p; ?) R
  37. #include <mach/hardware.h>+ E2 o6 \  {6 o5 S& I( C( L
  38. #include <mach/irqs.h>
    3 c& w2 `* e' i- n; A6 `- @6 H
  39. #include <asm/hardware/edma.h>6 y& u6 V# v  G, |. j

  40. 4 S( l- O+ `( A1 [
  41. #undef EDMA3_DEBUG$ Z  c/ g9 E( `% f( K$ g" K
  42. /*#define EDMA3_DEBUG*/
    : U/ M- k" W+ B0 T# U9 Y
  43. 6 M0 u( v$ I9 s  y
  44. #ifdef EDMA3_DEBUG
    / B3 z3 O1 I3 N" G0 y' u
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)& W* l% x, q% D: B8 m
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__); O  h* T: x) Q0 L; L0 ^7 P
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)  G+ J8 W4 h6 B: a7 V
  48. #else
    0 }" y, y9 r, t/ e( Z
  49. #define DMA_PRINTK( x... ); S; O) y3 Q; c
  50. #define DMA_FN_IN% o" M5 P" e4 v) c, N+ I
  51. #define DMA_FN_OUT
    6 b5 e* @- i8 g; n- }
  52. #endif
    5 P. J1 x8 q3 H! v

  53. 7 ]; Y* c! ^3 G( h
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    6 ^3 n1 {. u1 \# s6 X
  55. #define STATIC_SHIFT                3
    : E1 ]/ I: S; z* e
  56. #define TCINTEN_SHIFT               201 e$ i+ m4 e; Z# p+ V
  57. #define ITCINTEN_SHIFT              21
    1 f$ q/ ~, e. v. T$ O* I4 W3 ^9 u
  58. #define TCCHEN_SHIFT                22$ O# L: q, r+ w; u& {2 A9 s: ~
  59. #define ITCCHEN_SHIFT               23/ J1 g, V( E/ K' ]& X) o/ _

  60. ) `# r0 o& G. H3 y2 i9 F, \
  61. static volatile int irqraised1 = 0;) M* C( f$ b# b  c
  62. static volatile int irqraised2 = 0;
    & [9 J/ @( s5 y7 j

  63. + z) I: N2 t9 z. r7 _8 a1 m, G
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / Y# c$ B5 H8 L7 I5 X9 T  X6 b
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    : U& z$ \: k2 b9 S) W2 a1 z/ f( A9 X
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 o0 w+ G+ N& z1 J

  67. , {$ x2 x$ e3 S7 y4 k1 \
  68. dma_addr_t dmaphyssrc1 = 0;
    7 I, o2 O9 X. u4 X/ K1 p
  69. dma_addr_t dmaphyssrc2 = 0;
    - ^5 }* n; V( ]' V4 ^6 C
  70. dma_addr_t dmaphysdest1 = 0;/ ^/ k" o) z0 H
  71. dma_addr_t dmaphysdest2 = 0;
    1 Y5 Y  d2 z9 l, i) f
  72. % ?8 g" r1 ^2 z0 s- l: D& V& `
  73. char *dmabufsrc1 = NULL;! T3 |3 g# @# K3 [
  74. char *dmabufsrc2 = NULL;) M$ u, t( z6 ]1 I( B; Z* Q3 S
  75. char *dmabufdest1 = NULL;
    2 y- y% P4 ^# U; [6 q0 w
  76. char *dmabufdest2 = NULL;4 x5 J/ v( ?/ W1 K2 w! F

  77. - S$ D! s& w- V1 G/ w$ R- b
  78. static int acnt = 512;
    1 I; ]7 G% _: g$ C. W9 q
  79. static int bcnt = 8;8 f7 w) y& H$ ?& S+ x
  80. static int ccnt = 8;
    - o1 A- J' g" i1 z, R

  81. % B! r  A! Y) v. P
  82. module_param(acnt, int, S_IRUGO);
    4 l1 ?8 C  M( ~
  83. module_param(bcnt, int, S_IRUGO);
    - c0 i* |! {3 ?. T( G3 E: d' r$ i
  84. module_param(ccnt, int, S_IRUGO);
复制代码
4 L- l: h) ?  z, b8 i- P& F
4 p9 \( w" J; i% G+ {$ E: Z
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
* `* W9 t' Z; z, N0 ^: f7 karm-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' r  r0 j* x! x     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。; y% l+ h/ j. q
) g* q1 t3 A2 c0 a3 g" F
) D: g3 p0 W9 i% B& Y1 k! P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-12 09:48 , Processed in 0.039310 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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