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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
: O/ g9 r5 R: Q
  1. [code]EDMA sample test application
    & M' C9 k# V( W2 r7 q$ K  [( T
  2. /*
    3 \. d5 C( v5 T" C" j0 j* W
  3. * edma_test.c
    0 R7 n$ I8 o8 e$ C# N
  4. *
    ; b+ c9 t  }) a- Z8 T# f
  5. * brief  EDMA3 Test Application7 a2 w  V% [& o" m& s" x9 |
  6. *
    3 z: R! E2 g5 j" m8 `1 _. Y
  7. *   This file contains EDMA3 Test code.
    4 i) L( M3 C5 s( _' e4 @( A
  8. *
    6 Q- Z+ U6 D( C8 H* X
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    : Q. J) A6 Z2 H% v0 F
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    2 h/ c+ U2 _- \  [2 P! ?) w( u; U
  11. *         TO CHANGE.
    & O" J0 U& W# i5 p3 t
  12. *! U0 ]3 ?+ W5 y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    $ |+ H1 Q2 O. t8 A3 A, j- B+ _% m. a
  14. *
    9 U* `8 H; t5 Q  W
  15. * This program is free software; you can redistribute it and/or2 l8 u4 l5 a0 C* I' x& `$ g
  16. * modify it under the terms of the GNU General Public License as( [  H8 l" Y  N$ [8 e" @( b  e2 V
  17. * published by the Free Software Foundation version 2.3 r/ k( k8 n& q, e5 a8 y4 u
  18. *: x2 |4 a0 Z* v  U% _& S7 n& l+ j+ G
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ! U7 I, Y: t) z8 N2 s' S
  20. * kind, whether express or implied; without even the implied warranty% C6 x# a6 q) D9 a
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ! D0 ?, ]; f, \  r) p
  22. * GNU General Public License for more details.
    , n1 T+ b0 n# O
  23. */" N9 o, L% ]! \: L, N& s8 e
  24. ) N: B7 \" ^  B( J+ k& k
  25. #include <linux/module.h>
    3 J1 q8 g( g9 ~8 |) ]% e3 M
  26. #include <linux/init.h>4 _; J6 c+ s: ^, l& V- y1 U0 t
  27. #include <linux/errno.h>
    & G$ T! m1 I& F. f
  28. #include <linux/types.h>! _) ^: M8 w, i7 D2 R* }
  29. #include <linux/interrupt.h>4 E' b0 y; |6 z
  30. #include <asm/io.h>! a9 L' o2 {' K2 f6 i, T/ u3 Z  b; }
  31. #include <linux/moduleparam.h>* x( M, b8 p+ N) a
  32. #include <linux/sysctl.h>) b% `/ }/ o2 N3 j( {( P$ C+ {
  33. #include <linux/mm.h>
    % _/ N% D$ u; V% T$ I; T
  34. #include <linux/dma-mapping.h>
    $ H9 ~$ ^$ q7 P  c$ L

  35. , c; p. a& i& M6 ]- ^  _
  36. #include <mach/memory.h>% C0 V' d' p1 ^' U; j
  37. #include <mach/hardware.h>7 c& g5 X0 [; l
  38. #include <mach/irqs.h>
      g0 p. i' }5 J$ w+ M$ ~
  39. #include <asm/hardware/edma.h>! r. g; F3 v/ v+ }
  40. , j. {/ C0 E/ m" x& m" @, ?
  41. #undef EDMA3_DEBUG, Y  e5 J) I4 n) c) i7 i5 v
  42. /*#define EDMA3_DEBUG*/
    2 H; Z4 e, I( b& f7 ]0 D3 f

  43. % D2 t: G7 F' A5 O& m8 D& s+ W. ^
  44. #ifdef EDMA3_DEBUG0 y4 l, Y4 A+ C- B9 }, `3 S% C; W
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)4 P3 F4 i) u% A& X. `. O1 b
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)) E$ b  B$ y( K" e2 M, v/ }( A
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    , \# \$ e- W, w9 P3 b) x) x
  48. #else
      T# ?( Q2 l; ]0 r. z
  49. #define DMA_PRINTK( x... )" W3 `* q1 W: {. U# b
  50. #define DMA_FN_IN
      D, f  L9 X5 A* R
  51. #define DMA_FN_OUT4 z0 c$ _* L0 G; r
  52. #endif; a9 {2 w1 @' \7 c: L8 Y, S

  53. ) l: x) T, k# m* f- u
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)4 p' {# O2 y6 N3 `) @
  55. #define STATIC_SHIFT                3
    . a7 q0 G0 C( ^; b; f
  56. #define TCINTEN_SHIFT               207 d9 ~9 L+ [- z3 R3 @! ]
  57. #define ITCINTEN_SHIFT              21
    7 G. K% f. ^4 J4 P% A  j* w: u
  58. #define TCCHEN_SHIFT                22
    4 t3 y! L* y6 ]1 J1 K( {
  59. #define ITCCHEN_SHIFT               23
    0 J4 b! C0 B/ ^& M) {

  60. ) V; Q8 W: c& F7 n
  61. static volatile int irqraised1 = 0;1 L% C9 M. S1 t
  62. static volatile int irqraised2 = 0;
    / C. D$ ^7 C' d8 n! Y1 i
  63. ' P- O$ L% V6 |% C; z. T& O# M) [. c
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 k" K( e' ]- Q. m; R6 x
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 w8 \% ^/ N1 b5 ?. |
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) k. j9 g' y# c

  67. 1 n4 d: i7 m* M7 L4 ^
  68. dma_addr_t dmaphyssrc1 = 0;
    & Z* K+ U0 J1 `7 ^% E3 y6 A
  69. dma_addr_t dmaphyssrc2 = 0;
    ) r% x, b0 S/ Q& \" s
  70. dma_addr_t dmaphysdest1 = 0;
    * j4 e: m* S; f7 ^
  71. dma_addr_t dmaphysdest2 = 0;6 A# y. A/ y8 N. ~; S6 D

  72. 0 F% _+ M; e0 H2 h
  73. char *dmabufsrc1 = NULL;
    # c7 B5 T7 x* `. K" w" F$ c+ J
  74. char *dmabufsrc2 = NULL;% u& j9 c& O, Q  C1 ~
  75. char *dmabufdest1 = NULL;; x& Y  g4 u1 {! W) P! h
  76. char *dmabufdest2 = NULL;  E, y3 Q# {' t$ n" n
  77. 6 V5 W/ n- h# g! D  J8 r0 Y
  78. static int acnt = 512;% J+ K- Q& l; K3 v3 D
  79. static int bcnt = 8;/ p$ R" N2 j- N- J1 ]6 [
  80. static int ccnt = 8;
    8 B3 e0 @8 @5 a/ U& X  \# u
  81. 2 s# r" h! @1 |0 F: W1 l. M
  82. module_param(acnt, int, S_IRUGO);6 i% r+ ^9 A& @
  83. module_param(bcnt, int, S_IRUGO);
    & C- |% O+ r8 u; ~7 M
  84. module_param(ccnt, int, S_IRUGO);
复制代码
8 Z! G/ x5 h0 A( E# q# Y
6 R9 i+ e% s; z# {; ?
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
% w$ c0 t) a) S, e; yarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。: B! O+ D( m7 d, ^  Y
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
8 ?0 M/ I3 r0 L, q$ I9 v& j! w- q) }* m! K* S+ m* _% _

' \6 D( E, U: I$ D' I# i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-31 19:50 , Processed in 0.038099 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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