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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
$ Y' u2 N3 \0 v9 `. g" e
  1. [code]EDMA sample test application$ S; t( t; T3 K  C; v# `$ D
  2. /*0 @2 i' C- f3 E7 i/ _7 h
  3. * edma_test.c
    . \( F/ \8 e8 c- Z0 J+ H' h% R
  4. *
    # i1 v3 J" d- S
  5. * brief  EDMA3 Test Application7 Y* o. n* \, e5 ?, ^& D/ a
  6. *
    0 j+ s9 ^. Q4 J, q# v
  7. *   This file contains EDMA3 Test code." s7 n! T/ ^% ^+ y! j
  8. *
    - i3 L3 O" f. }0 Q
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    1 J4 K; u) E; A4 T6 H( P- m
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    8 \. i& I* G" W' G# c& v
  11. *         TO CHANGE.* V8 c% V, P2 a1 n% X, q% T8 X
  12. *7 S: k$ S7 _" g1 Z. N- z
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/7 N& s% l$ q( ^3 y4 Y
  14. *
    6 }: ^, n; a" R2 q) T: b4 K& q6 b
  15. * This program is free software; you can redistribute it and/or0 j/ O( d% P* A
  16. * modify it under the terms of the GNU General Public License as
    % b; m) P+ z7 A7 k
  17. * published by the Free Software Foundation version 2.9 E' n$ W: C' D( b
  18. *
    ' s. [; R2 G* A; r; N  m( u
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any) ?! |+ ?" ~$ ]5 T( O% P$ `
  20. * kind, whether express or implied; without even the implied warranty
    / b1 r9 V$ F3 o  e% u" a
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ! R- j! Q3 t) q% Z" X" C
  22. * GNU General Public License for more details.
    0 _0 s) \) O6 A! O, V: [
  23. */! \: W( Y( K5 o% O& ~; W
  24. 1 P, H+ ]; {, }9 e
  25. #include <linux/module.h>) m8 v/ {' R8 A% ?
  26. #include <linux/init.h>
    - _' d2 C2 j( v6 V' S
  27. #include <linux/errno.h>2 j$ I+ U( m  I& K1 S# M0 B4 @. X
  28. #include <linux/types.h>
    2 E/ G# y  \0 E) _) ]: g! C
  29. #include <linux/interrupt.h>
    ) @. M7 a* j) I5 U
  30. #include <asm/io.h>
    ! b" l. ?1 C* S5 e  T, v8 c
  31. #include <linux/moduleparam.h># p/ n. p4 i# b# L3 L3 E, k
  32. #include <linux/sysctl.h>2 d' F( E* h6 O+ I* S, U
  33. #include <linux/mm.h>$ n7 V4 k5 {4 \& a3 G
  34. #include <linux/dma-mapping.h>& J9 {; E9 P2 B9 U# C- ^4 F5 d

  35. + G  z0 B0 v1 r8 p
  36. #include <mach/memory.h># Q. E& _/ K2 j$ w
  37. #include <mach/hardware.h>( S. V' I7 ]" Z1 Y  f) u5 Q
  38. #include <mach/irqs.h># L& H' a9 v0 Y
  39. #include <asm/hardware/edma.h>
    " A. o0 t7 i  Z# G- u

  40. , |3 `# v( s" }7 J$ K
  41. #undef EDMA3_DEBUG2 o; X! {6 i( F+ w" B) w
  42. /*#define EDMA3_DEBUG*/
    6 N  S+ [, ~6 K: f
  43. ( y3 m$ p( n& t$ x8 o
  44. #ifdef EDMA3_DEBUG; s' e3 c) ?! B) I
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 G8 s+ P7 j- b
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    1 K/ Z: t, Q% y: J  `
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    / l) L; h' I3 @& Y( t
  48. #else5 A% j0 d1 V* B8 j* J
  49. #define DMA_PRINTK( x... )1 w" j. S& S- S4 G9 I8 @7 |
  50. #define DMA_FN_IN
      E. |# L; }& ?
  51. #define DMA_FN_OUT! D$ F( z- i* U5 a4 Q5 W/ v
  52. #endif) m1 V' s- G2 ?4 b/ I( R7 s
  53. . H  v: U2 ?7 x- Q5 H8 [
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)1 w/ Y) b9 w6 J& e4 x0 e1 K
  55. #define STATIC_SHIFT                3
    6 E, H3 s( \9 v' C- l5 n; l/ B4 F
  56. #define TCINTEN_SHIFT               20
    : s' V* w, v9 o3 f3 L/ ?
  57. #define ITCINTEN_SHIFT              21& W/ i3 I$ S# y
  58. #define TCCHEN_SHIFT                22
    6 Z4 q: O0 d5 M: l4 l
  59. #define ITCCHEN_SHIFT               23# m5 v* i1 S, W0 i+ t- Y
  60. ; L! n4 N9 J' V, v. a/ F
  61. static volatile int irqraised1 = 0;
    ! ?  Q7 n5 t; `' q$ M
  62. static volatile int irqraised2 = 0;  g2 Y7 H' \  E# ~, ^/ G, n

  63. 3 O8 Z: |) ~# d- V, u8 Q
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) s2 _9 T# S4 j$ \  w- i! ?; z, s
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' m% J/ U3 K% n$ Y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# @* h( O  t# `6 T3 ?
  67. 1 K5 J$ P4 |+ K. ~& J$ }
  68. dma_addr_t dmaphyssrc1 = 0;
    ! D9 }6 n" j6 ~- }
  69. dma_addr_t dmaphyssrc2 = 0;! Y) |* B, _4 R0 a$ w* K% [
  70. dma_addr_t dmaphysdest1 = 0;6 A5 K8 v( g9 B3 J+ E" R/ x- b
  71. dma_addr_t dmaphysdest2 = 0;
    " i. b- n& l4 _3 a5 E9 a

  72. , i1 u% l% {! Y( r$ j
  73. char *dmabufsrc1 = NULL;
    ) j$ B6 C2 U6 ~( e7 p/ N% |* {
  74. char *dmabufsrc2 = NULL;  S2 n& ~1 L6 P) X" q
  75. char *dmabufdest1 = NULL;" M9 p8 U  H' O
  76. char *dmabufdest2 = NULL;
    : l$ [0 ]( l) p% x3 v
  77. 7 ^/ f/ I( l" E
  78. static int acnt = 512;: r$ r, r' y9 l$ t& q% I  N
  79. static int bcnt = 8;
      o1 x6 f8 ^6 o. F2 p4 |
  80. static int ccnt = 8;
    ! K2 v' l* }/ V' V

  81. 7 s: N, K4 h! G
  82. module_param(acnt, int, S_IRUGO);7 G$ J2 p, ^/ Y' `4 p& t: z+ o
  83. module_param(bcnt, int, S_IRUGO);) l, ~4 q8 N5 S' J! S
  84. module_param(ccnt, int, S_IRUGO);
复制代码
3 _- h  S1 S/ `' m- x

( M0 P8 W* H2 C) b  o      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
* a% e% T0 Y9 J9 z2 Carm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。4 D1 E& l) z1 q1 F3 W& w: @
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。, W5 u; l  M- ^) o6 _/ [
9 C2 v4 v. ^, w) o( S# l9 g0 f9 o
: h5 {/ I( e! Q1 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 07:33 , Processed in 0.037868 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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