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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
0 _: e! h2 R- L3 P+ S, S
  1. [code]EDMA sample test application
    9 g0 k4 L3 D8 z
  2. /*+ F5 d1 l  Y% j! J
  3. * edma_test.c
    ) u& P! p3 e) d8 T
  4. *
    0 A  j# [% ]0 h# U, i6 n2 C
  5. * brief  EDMA3 Test Application
    : g, a/ v) F% I# C
  6. *3 `$ `1 I2 u" T2 r& s* ?
  7. *   This file contains EDMA3 Test code.! J4 m$ r2 R- ~$ M
  8. *
    7 K( m. h, e6 D& g$ C- E0 p' j0 O6 h
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    # L, ]& z7 O, n" Q, h+ E
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT3 F  z8 A$ V. m# ]
  11. *         TO CHANGE./ `- b# p" Z( t8 l7 i& B
  12. *, i  O, ~# G& W& I3 L/ J
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/9 m% K6 [! c3 e1 i" r/ L: X3 ~, B) C
  14. *
    ) v" O9 V, Y( [8 G& W5 o5 |0 E
  15. * This program is free software; you can redistribute it and/or) P5 o: J- ^; X/ `: }
  16. * modify it under the terms of the GNU General Public License as
    $ v% V  N8 G0 x$ \, _. W
  17. * published by the Free Software Foundation version 2.+ v3 i& Y+ A7 v5 X; W
  18. ** h7 T/ B5 i  @+ p4 I
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any" [7 @) K8 c/ L) R$ e
  20. * kind, whether express or implied; without even the implied warranty% N9 F7 ~  ~3 B- ~3 A' P' {$ A
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+ I. n$ c4 t. w. l- v( R  i2 \3 C
  22. * GNU General Public License for more details.
    9 o7 N6 h( C2 T+ h
  23. */, }5 T& J  c2 y% p. p9 v  F7 P3 P

  24. , n) u' F+ i% A( s* a5 E& a6 F
  25. #include <linux/module.h>
    0 g6 d9 c2 B' q. `; Y9 g
  26. #include <linux/init.h># S  z* U! Q# R) G4 r
  27. #include <linux/errno.h>. h6 ~/ v9 W) |; A6 B
  28. #include <linux/types.h>  w6 o; O3 W2 m; ?5 _% i! L' G
  29. #include <linux/interrupt.h>
    , M9 j0 w. ?8 K6 Y. g
  30. #include <asm/io.h>
    " M- x$ ?2 q2 ]) N' Q
  31. #include <linux/moduleparam.h>
    # r' S+ G3 d  R4 i& F8 m
  32. #include <linux/sysctl.h>; N! J3 u: [/ A% v
  33. #include <linux/mm.h># B* z  |1 A4 D3 }) @
  34. #include <linux/dma-mapping.h># A" m* w* X# T
  35. & y6 e, e/ i1 f7 u; W0 l
  36. #include <mach/memory.h>& e! c* ]( S4 B3 `9 o
  37. #include <mach/hardware.h>9 ?. C  X3 b3 O* k
  38. #include <mach/irqs.h>4 ~) \1 b# m! ?0 s3 L: K5 }0 B
  39. #include <asm/hardware/edma.h>
    - {8 `. e0 H  d8 W
  40. ; w& ?7 T  {# X* A9 v% j
  41. #undef EDMA3_DEBUG; z' }0 G1 X& y8 H4 _5 G  i
  42. /*#define EDMA3_DEBUG*/
    & C  {. N$ f3 \3 W$ Q2 S
  43. 9 z* h9 b; Z9 K/ V
  44. #ifdef EDMA3_DEBUG
    ; J0 u% U% j, H# V
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    % a; k! R, i4 v! i
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)4 s1 E. M6 l% B! R/ h
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ! e. F; B3 d0 b9 c* W! Q
  48. #else
      V5 B# a. u5 d$ V7 s- y
  49. #define DMA_PRINTK( x... ); d4 k$ j3 F) N0 I! S1 |; @
  50. #define DMA_FN_IN0 T$ z. ]; u+ b3 C: x# `' C* p
  51. #define DMA_FN_OUT
    , s- |8 t# w" E/ F3 Z
  52. #endif& S8 w) y& |, [+ Y& E3 _
  53. ! j* x1 ^& K; d( }/ ^# p
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)9 w2 f# @, K2 [
  55. #define STATIC_SHIFT                3  l$ B! T: C( ], h+ ~( J
  56. #define TCINTEN_SHIFT               20
    0 k* M( m% {. Q% G7 A* M
  57. #define ITCINTEN_SHIFT              21- Q- D# f2 O2 m. |- E( o. d# s# D
  58. #define TCCHEN_SHIFT                22% }1 \9 h2 \7 X  P' V' m
  59. #define ITCCHEN_SHIFT               23& G. d, D! h0 ?' K5 Q

  60. " C4 J3 s% U/ P" c6 H8 ?
  61. static volatile int irqraised1 = 0;) G4 J5 Q8 t+ C1 O+ J" _, G; F
  62. static volatile int irqraised2 = 0;
    5 m9 z7 |9 J! B' Y$ L% m# i
  63. 6 W7 x; n% K+ L$ l2 ?% |+ e, w
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    6 R" v2 X7 ?8 O. c! f, ]% i* }2 ?
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ p% d- P* a0 T# i- [
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; W& P8 u2 f6 \( K; e

  67. & X& v4 K2 b" ]+ N5 }% Z- \
  68. dma_addr_t dmaphyssrc1 = 0;6 c9 Q2 x0 T9 M. y# f7 q
  69. dma_addr_t dmaphyssrc2 = 0;* P; ?, G4 u0 u: }
  70. dma_addr_t dmaphysdest1 = 0;3 ]! z- E0 H  R3 D, `
  71. dma_addr_t dmaphysdest2 = 0;
    $ v8 j8 \: [. D/ V

  72.   O6 w) ]8 J1 S9 W
  73. char *dmabufsrc1 = NULL;9 J. z: z4 V& `8 Y5 `  \
  74. char *dmabufsrc2 = NULL;
    $ N0 D! C6 V  O7 Z
  75. char *dmabufdest1 = NULL;
    / f3 N. d  w; }- V# x
  76. char *dmabufdest2 = NULL;
    * Q, Y$ L3 K6 f! R' @

  77. ' L7 t. G. c5 q* |4 j/ B1 Q
  78. static int acnt = 512;
    + [. u  Y! F7 d. c* b
  79. static int bcnt = 8;
    # T8 {$ J& t' t- C: N( y/ L5 B
  80. static int ccnt = 8;/ X% Z2 z7 G. s% k' D' V
  81. " C  F  _8 f8 h0 ^! `* m6 q
  82. module_param(acnt, int, S_IRUGO);# H5 d- K2 K( E0 ?" ^( ]  l/ f& A
  83. module_param(bcnt, int, S_IRUGO);: l  R+ t$ O( l5 F+ g
  84. module_param(ccnt, int, S_IRUGO);
复制代码

$ D. W$ `7 P0 B+ W0 M$ P
% e: z2 C8 @( e9 K' [9 l      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用* A; a. p5 [2 b4 j' i! 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。1 E3 g7 ]2 t9 O% w3 T" z3 ^
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
+ F. k' Z7 \) _& P/ {# o* @: Z+ s+ x4 L( [' k) ]( Y1 i1 B
- A  y! O8 b0 a, s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-9 12:11 , Processed in 0.045778 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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