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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
. _% h, P3 r; L7 h* Z( o( O5 L
  1. [code]EDMA sample test application+ [; o2 Z8 E" m
  2. /*
    4 p/ m% n4 ?6 U! B: L
  3. * edma_test.c
    7 B% @8 ~6 S/ q0 A$ B2 y
  4. *
    3 X& k8 l- A6 @3 c4 G
  5. * brief  EDMA3 Test Application8 ~( b$ \' z% M: M
  6. *0 w% v$ D# `9 O' q# q6 s
  7. *   This file contains EDMA3 Test code.
    3 v4 G! S' T3 e- r+ f- F8 A
  8. *
    , S9 |, B& a5 A9 F
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE0 o6 {$ @1 X! r8 n% w, k& T; _
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    7 n: @% k$ O; x7 [
  11. *         TO CHANGE.9 P$ e1 P8 t; Z5 ~" Q
  12. *
    " V$ X9 V" {5 X6 z0 u4 h
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    , I2 P1 k$ \6 Q9 G
  14. *+ {1 y) n4 u6 a- k
  15. * This program is free software; you can redistribute it and/or* _5 K: f# m/ p! r1 i* u0 J
  16. * modify it under the terms of the GNU General Public License as8 z$ t6 n& O4 \( V" G7 Q
  17. * published by the Free Software Foundation version 2.
    0 P, d( W+ Y# @6 k
  18. *( J9 x4 V$ {! d. R  m4 r0 w
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    & f- t& o% n+ T' A4 c' v/ p! F
  20. * kind, whether express or implied; without even the implied warranty
    . D/ g, n9 K4 u
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the/ a- \& ]9 k/ l! g! g7 T; [
  22. * GNU General Public License for more details.
    5 ?. e5 f2 ]9 f  H
  23. */
    - t* g1 G  m& \3 G; `/ O( b

  24. 6 ?3 z; M" W' ^
  25. #include <linux/module.h>
    ; r' W1 @( z2 Z8 {8 r8 ]
  26. #include <linux/init.h>; P% z/ B/ @7 H, q4 e8 G
  27. #include <linux/errno.h>
    $ i) w- X  p+ U( I4 X" J0 P! T  k% b
  28. #include <linux/types.h>; N1 I+ _! M" k
  29. #include <linux/interrupt.h>) E1 y$ m& F$ ?) z3 K  o
  30. #include <asm/io.h>) l1 d; V% r- X* i
  31. #include <linux/moduleparam.h>" |1 [) E' D' X
  32. #include <linux/sysctl.h>
    3 y2 _3 [* ^/ _$ w5 M* ^; Q1 _
  33. #include <linux/mm.h>
    0 R% S! `2 c+ E4 _
  34. #include <linux/dma-mapping.h>
    ' ?1 x/ W7 w( l9 D( A* \. M5 j

  35.   k7 J$ U' E8 p) [) Q/ D
  36. #include <mach/memory.h>1 i7 x; H/ I' g2 S$ Y8 M
  37. #include <mach/hardware.h>
    , e) {) B3 r7 Z- y3 j
  38. #include <mach/irqs.h>
    # t4 v; k! D% X* {, s! h
  39. #include <asm/hardware/edma.h>
    " K+ V/ S9 V( B# _" L0 ~

  40. : l+ V6 e9 F" t" J# s% [6 \. q2 }! C
  41. #undef EDMA3_DEBUG! R. B6 ^  r9 \2 \
  42. /*#define EDMA3_DEBUG*/- h3 d, D" u" G5 g9 B

  43. # L# c7 i* v9 a# C( p5 W# Y9 l
  44. #ifdef EDMA3_DEBUG
    1 C: V# ?8 w( K! Q% C1 }
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)- z) }% e6 |/ u/ ]
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)2 U/ ?; [/ m! N0 L3 F0 ?% K
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)8 o7 x5 c. z! M, g) _, w# _
  48. #else
    # @( n" k, D: K: Y% j) r
  49. #define DMA_PRINTK( x... )
    4 U$ m7 y) J( s
  50. #define DMA_FN_IN
    " R. @. A9 d- |. Y2 ~+ w, i# c  K
  51. #define DMA_FN_OUT* n# ~, \4 i" O. E" T, U
  52. #endif, ~# a, X% _6 j; X' Q

  53. ! p; {, I: B3 b: r5 R/ i7 n2 T
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
      T6 T% H( J* y" L* F  [
  55. #define STATIC_SHIFT                3; D% d; J2 Y5 O5 ^, _
  56. #define TCINTEN_SHIFT               20
    $ `+ {- _) V& ?7 T
  57. #define ITCINTEN_SHIFT              21
    % l6 R8 {8 |% E" u4 Z% J4 S; {6 P! T+ J
  58. #define TCCHEN_SHIFT                22
    ! [% |4 f4 z9 J" ~2 O- A: t
  59. #define ITCCHEN_SHIFT               23( K# w( x/ r* a* i7 `2 ?

  60. " ]# _1 j1 G9 i) i8 b$ Q
  61. static volatile int irqraised1 = 0;: f( R: a7 ^  f8 Q. i4 C2 \
  62. static volatile int irqraised2 = 0;
      }: p9 y" c; ~4 _: n0 P+ ?" {- q
  63. % i1 T0 p5 p8 V4 K7 j& M  c
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    8 P6 w3 @/ a. j1 W' Q! _0 l
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ v0 b# O( M- E. [$ c  w& i, \
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: E! U4 Q( ^5 h1 A4 g6 d
  67. . H' [2 S, X' _9 X6 c
  68. dma_addr_t dmaphyssrc1 = 0;
    2 d- j& c  U, i4 g7 ?: |- }7 \
  69. dma_addr_t dmaphyssrc2 = 0;  R4 v8 t9 `! r  D
  70. dma_addr_t dmaphysdest1 = 0;
    0 G7 F/ v! r& E6 r) ]
  71. dma_addr_t dmaphysdest2 = 0;
    & F! I% q4 u) h! F' n' F2 L& h' Q7 r
  72. * L: X; o" z$ @- a% n6 e
  73. char *dmabufsrc1 = NULL;: @& }6 F7 T5 v! D9 ^2 Q
  74. char *dmabufsrc2 = NULL;
    + N& @; u) n* k& I( ~% u
  75. char *dmabufdest1 = NULL;
    ! w) l+ Y% v* E, B9 G3 U
  76. char *dmabufdest2 = NULL;0 b- z+ s% w$ D0 ?" t! w; U

  77. * `7 \1 A+ W5 Z) W2 G0 l$ l7 f
  78. static int acnt = 512;
    6 i# T+ I, V9 B! N9 L" ?
  79. static int bcnt = 8;$ z) G) o& i3 T$ J/ x: B
  80. static int ccnt = 8;! N3 ^  Y. @% `, b

  81. $ x: l1 D! A0 \  D8 ^
  82. module_param(acnt, int, S_IRUGO);
    * _. i7 p+ c4 E& |5 L
  83. module_param(bcnt, int, S_IRUGO);2 t7 E5 `1 H! o
  84. module_param(ccnt, int, S_IRUGO);
复制代码

7 \- B2 o: _( A5 j
! p) p1 M) {0 W+ o5 o' g( W' t      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用0 G6 j1 y) j- Y( {! R' I. [4 m# e) k
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。6 G6 O; o, |& ^$ c
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
6 O( j# _  b& f$ w6 f/ a5 ^9 h# {
- a3 u) R7 r2 a2 m  m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-18 05:35 , Processed in 0.038303 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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