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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
7 U9 w" M+ F! q+ V- a3 z# z
  1. [code]EDMA sample test application
      w( K- |" ~; e- \
  2. /*  ?# c& E+ c4 e% ~; \
  3. * edma_test.c
    ; t9 S; Z+ t. f0 D1 n; Q6 }
  4. *( z1 Z; I( H  g; H' V) h
  5. * brief  EDMA3 Test Application2 i% m( \: e2 `* o% D
  6. *
    9 z+ l$ r0 j1 P+ w
  7. *   This file contains EDMA3 Test code.
    & x% e+ U/ Q$ V/ U$ p) Z
  8. *
    * R* ^. ?' Z  X' Q, f8 c
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE, H* m/ l! o0 I+ F% |+ M+ g3 u
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT) W( n5 Q; g3 T3 \# Z
  11. *         TO CHANGE., P+ X. d4 d+ }3 B
  12. *! x' ~8 Q  j, a
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    % h4 g' O" \* f% L5 u/ |
  14. *7 D# l$ _0 I$ L
  15. * This program is free software; you can redistribute it and/or
    ! W% I) i2 y, F  w; Y9 l9 ?
  16. * modify it under the terms of the GNU General Public License as
    $ u9 s7 n1 t1 L) J7 t
  17. * published by the Free Software Foundation version 2.
    ) [! s" V$ [  }* s
  18. *" D% y7 A4 M. O0 X
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ) I$ C* j( L) m8 j
  20. * kind, whether express or implied; without even the implied warranty1 U6 p5 u! ~; r' t7 i% ]
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the" n! i3 {7 n: ~6 e' P- x
  22. * GNU General Public License for more details.$ u7 b/ y) ~; S: K
  23. */  O4 q  L" J& v/ X3 @
  24. 0 G1 P: S: z4 a- |
  25. #include <linux/module.h>/ c1 m2 |3 D3 B0 y
  26. #include <linux/init.h>
    7 a2 R& O1 R* O2 b. N
  27. #include <linux/errno.h>% o. h8 A$ X8 m
  28. #include <linux/types.h>
    ! P) e8 j2 x' `8 J
  29. #include <linux/interrupt.h>6 e* }6 G( a; b+ Q
  30. #include <asm/io.h>% D0 L2 M# a. Y
  31. #include <linux/moduleparam.h>1 V, U( Z: g5 [% u/ c9 x
  32. #include <linux/sysctl.h>
    0 X. T# f" Y& M6 U
  33. #include <linux/mm.h>
    ) V9 G+ r* u5 ^% G* t/ }
  34. #include <linux/dma-mapping.h>- @8 Y5 u6 _# y2 W/ q# C1 z7 }. Y9 b
  35. 6 \: k% @" p3 y( ^% [
  36. #include <mach/memory.h>
    - G! g8 e$ a% q0 a& ]5 P+ a. s
  37. #include <mach/hardware.h>
    , n1 @: ^' u6 E( y
  38. #include <mach/irqs.h>" w) J5 V; B9 S+ `
  39. #include <asm/hardware/edma.h>
    3 A5 p+ S4 o) Z# M' \) k

  40. , u- [! L% b: t% Z
  41. #undef EDMA3_DEBUG/ z3 o& {$ [# S  K/ {0 N" @
  42. /*#define EDMA3_DEBUG*/
    % \9 W6 k! g2 c# p' w

  43. % k; I! k7 c, ]3 p: b
  44. #ifdef EDMA3_DEBUG+ V0 w4 t+ X% s+ t+ F
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)" a! ~1 |" Y3 Q2 G5 Z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    * L. e9 A* t% q6 D: R  B
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__): N9 C, {8 ^* @& E+ o% q- t. N
  48. #else- M$ L! ~3 Z- o% ]( s
  49. #define DMA_PRINTK( x... )
    : m& }5 I& U) y" w: R* R0 B% X0 M
  50. #define DMA_FN_IN
    . i% Y" |+ _/ z3 c/ t
  51. #define DMA_FN_OUT3 B& y$ L# T' W# m. d3 J7 D1 I- L
  52. #endif
    & C# c4 Y! `6 s' {* \1 N9 Z# f' O2 d
  53. , H+ ?$ y2 {1 `0 u3 Q
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ' l( U6 Z  M7 S. ?5 ]6 F8 G0 K
  55. #define STATIC_SHIFT                3
    ; q; U& E/ [7 ~' ]; z8 R
  56. #define TCINTEN_SHIFT               20
    - O! n9 X/ \! k
  57. #define ITCINTEN_SHIFT              21
    * m. |& c$ @% B. O0 f0 Y
  58. #define TCCHEN_SHIFT                220 f& W. T' i( z6 v) P
  59. #define ITCCHEN_SHIFT               23
    % }: V1 ^1 I: R
  60. 2 F2 r' x' H, I
  61. static volatile int irqraised1 = 0;# _# ]- k, V# E0 f0 F5 E& y$ h1 Z
  62. static volatile int irqraised2 = 0;6 X: `- o4 \1 |( b* d. g
  63. $ J3 Z. L" \: W4 U
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 k0 v0 A3 c& N# j2 E0 W
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * n/ S6 C5 J' p3 H+ _5 v( p
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' y9 ]$ @0 `' B+ S8 @: s

  67. 2 A4 S, Q/ H) n9 T# P$ G
  68. dma_addr_t dmaphyssrc1 = 0;* k& c0 A. x6 j
  69. dma_addr_t dmaphyssrc2 = 0;9 f! s8 \- o- v& p$ x) i3 A7 {
  70. dma_addr_t dmaphysdest1 = 0;2 T% i; b+ x$ v' z- b
  71. dma_addr_t dmaphysdest2 = 0;7 E' j7 o. @0 h4 k4 K$ J1 `9 @- T

  72. 0 l( y5 b+ S, E; y1 P* _5 k- n
  73. char *dmabufsrc1 = NULL;' f9 S: R* f, d4 u  X+ U3 B
  74. char *dmabufsrc2 = NULL;
    & h" ]* U. M" W  F. y$ T, \6 l
  75. char *dmabufdest1 = NULL;
    6 e3 p2 j9 U( D$ R# v/ \
  76. char *dmabufdest2 = NULL;% W9 d4 x6 Z& I# I. k9 V: \
  77. 0 Q$ K$ `) x+ X# L
  78. static int acnt = 512;
    ) l1 w0 Y3 L# I- g/ |0 m4 n
  79. static int bcnt = 8;
    : j$ e; L: U. N& D$ j- u
  80. static int ccnt = 8;
    4 k( r5 G0 k2 P
  81.   h" f* ~5 n+ H+ m
  82. module_param(acnt, int, S_IRUGO);
    , m/ @1 w& _6 D- V2 m# A
  83. module_param(bcnt, int, S_IRUGO);
    " k4 {% B* S7 R1 Q% {6 {- B8 u
  84. module_param(ccnt, int, S_IRUGO);
复制代码

9 g: _& n* n0 T) m1 J/ E) _
& ~2 {+ v5 k0 X$ a2 b  b      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用9 V! E" O0 p. _: @
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。- B2 {. c1 o, C: A& t; z* k7 C/ E4 }
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。; g1 O7 Y2 C3 ~4 _

& C2 L0 s' m  H
1 x5 E+ C1 A9 v! ]+ Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 04:06 , Processed in 0.039214 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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