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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 2 E' O/ o+ w0 F0 O4 b
  1. [code]EDMA sample test application* Q$ d- f. ?' f0 I/ s3 }9 o
  2. /*
    8 a/ v: J. l5 x" e) V& `" ]
  3. * edma_test.c6 \  s% ]/ V2 ]/ o
  4. *- C7 E, z' t3 A
  5. * brief  EDMA3 Test Application
    ( }# M! U# \' @  i
  6. *
    * q8 x/ B4 e- v- G
  7. *   This file contains EDMA3 Test code.
    - [2 L: o: g8 ^8 L
  8. *  p% |1 i% F( Z! T) A
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    . Q, A1 x) z' g2 X
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    * M7 _% L* b1 n$ U
  11. *         TO CHANGE.
    + }" m6 j7 c$ `6 \! |" e
  12. *
    6 H0 o2 q7 V4 I, C6 ^" @% o
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/  l2 K! |* b2 S8 R
  14. *5 D5 E+ ?' b4 W& }
  15. * This program is free software; you can redistribute it and/or
    # |2 K" _5 p; p( w+ \9 Q5 g5 c
  16. * modify it under the terms of the GNU General Public License as9 ^  C. p5 C6 V6 b# C. v8 K) C9 X& J
  17. * published by the Free Software Foundation version 2.
      p/ J. c. }9 ^% ?. N( D
  18. *
    ( n/ U, u6 @( x) j; c
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any8 b0 F  m4 L; }# X' ]) ~
  20. * kind, whether express or implied; without even the implied warranty
    9 M: {& r) r; k" o# G
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the, T; f& f$ u. B. s3 B
  22. * GNU General Public License for more details.
    + R" Y" F5 O% m4 V; L
  23. */! w, S# `# h: d
  24. % D- X- P, @) n
  25. #include <linux/module.h>
    ( d" v$ ^/ R( I# y
  26. #include <linux/init.h>5 C2 G: J6 p* d2 }! `* p3 G
  27. #include <linux/errno.h>
    # y- D3 T+ b" T* M" R
  28. #include <linux/types.h>
    ! q& {0 t% v7 u% Q
  29. #include <linux/interrupt.h>4 P5 v, }7 Q$ x5 m: \
  30. #include <asm/io.h>' A' {0 b( m5 `
  31. #include <linux/moduleparam.h>
    * Q& E' e, q+ ~) m
  32. #include <linux/sysctl.h>; A! B- ]) W: n% o5 X
  33. #include <linux/mm.h>: |% _3 t; J; h
  34. #include <linux/dma-mapping.h>* k% u) |3 z  v$ i
  35. 0 V3 Y5 \1 |0 X  b0 S0 }
  36. #include <mach/memory.h>$ D& K* J0 K; V& R8 M; K) L6 k; ]
  37. #include <mach/hardware.h>! `% _, p0 P1 h3 ?4 G6 I
  38. #include <mach/irqs.h>  C) H! q' t: x# m
  39. #include <asm/hardware/edma.h>8 c5 r1 S4 C! _
  40. 0 a6 m7 P" {# |* @; h5 c9 o# P9 e; K+ d
  41. #undef EDMA3_DEBUG
    4 h. A9 w* T  U0 Q7 e
  42. /*#define EDMA3_DEBUG*/5 I; f( n; |) B- Y% \6 V2 l

  43. + r, s+ U  X# Y! `# F- Z4 m
  44. #ifdef EDMA3_DEBUG% Y  c$ v' r, [- U9 }% b3 h- N
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ! @- `. M2 N2 Z3 z& S
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)8 e! q# r  P# V
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)' K) N! O5 k9 P& _! k& _
  48. #else
    ! ], ~/ M, b7 x5 X4 l+ H1 ]
  49. #define DMA_PRINTK( x... )) `# q! e5 n6 }
  50. #define DMA_FN_IN* j. \& U: G3 U& [. J0 r2 B$ Q
  51. #define DMA_FN_OUT
      U" k5 T2 U, G; h4 H7 f
  52. #endif1 u4 H' x6 W$ ^. x! S3 D8 N  t8 q

  53. ! L* x; f0 z* {0 ]! B
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)6 u! P* J' ~* \) p$ v- ~
  55. #define STATIC_SHIFT                3
    - ]5 ?9 K+ R* o" v( i4 D# r
  56. #define TCINTEN_SHIFT               204 y8 ]; V9 z8 e( P4 ^% m
  57. #define ITCINTEN_SHIFT              21
    7 A% _, k7 E: @9 M& K7 F2 R
  58. #define TCCHEN_SHIFT                227 A; P# d$ ]) i0 b5 d" N! N
  59. #define ITCCHEN_SHIFT               23
    ) g* {9 p' @  x- |# ^# k

  60. . o+ p, [8 L4 C9 P5 M+ d4 i
  61. static volatile int irqraised1 = 0;
    " r9 W2 I+ {6 I' _( Y; p; y4 K
  62. static volatile int irqraised2 = 0;
    5 O0 s  z1 B" o4 D/ y, [

  63. % _6 M5 v9 w, P8 {
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 R3 B4 T7 n% ?
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 x6 _8 k6 a# C2 y/ _5 h0 q3 J' B
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  r* k, F1 J7 I$ G+ A8 g2 U
  67. 2 e, v5 V$ x# t' F
  68. dma_addr_t dmaphyssrc1 = 0;: N! U  O5 T1 i0 ?& x1 X7 b- n9 p
  69. dma_addr_t dmaphyssrc2 = 0;
    $ e; P8 _7 [5 v4 l* J/ |$ s
  70. dma_addr_t dmaphysdest1 = 0;
    8 w9 C: N6 R# A
  71. dma_addr_t dmaphysdest2 = 0;0 r/ A+ _% C) I
  72. 9 M& P7 @- h3 Q; n
  73. char *dmabufsrc1 = NULL;
      P2 W# [/ i; k6 T" y( x
  74. char *dmabufsrc2 = NULL;* v6 D* h0 E% h7 v4 j
  75. char *dmabufdest1 = NULL;- `1 U: }' \& i, s: w
  76. char *dmabufdest2 = NULL;5 H. Z9 J' c1 B6 O; b( m; u
  77. ! H+ V- T, D: a+ d0 x4 O
  78. static int acnt = 512;# z: t  D# Z9 Q
  79. static int bcnt = 8;
    : b# C$ b" y. w7 ]: |" X# e
  80. static int ccnt = 8;
    - q  i2 \$ \/ d. G! e

  81. % H. h1 X& v& D9 t7 [, M' D2 Q
  82. module_param(acnt, int, S_IRUGO);, y! |- c/ u1 B& N- M
  83. module_param(bcnt, int, S_IRUGO);$ r( V7 y$ @9 M; z1 s- W' z( a
  84. module_param(ccnt, int, S_IRUGO);
复制代码

) q% g3 u2 K/ h3 ]. b3 Z' w# v; F" t; D) W, [+ n3 S8 |
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用6 W" ^. B/ N) x0 b. b; Z
arm-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  \6 L& W9 h     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
* N& `  N& n2 Y8 T2 Z' K5 E5 i
( q2 \/ i4 q# E3 m5 E, f9 J# }! |. D7 z. r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-19 00:09 , Processed in 0.038413 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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