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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
4 w" n" u/ U) G) I) u
  1. [code]EDMA sample test application
    / K, `% ]. g; ^/ U" E9 @  {
  2. /*
    4 ~. d% g3 |' g0 |! c
  3. * edma_test.c
    ; c/ x. N# u, f0 I
  4. *, a% t& h3 u( H- M
  5. * brief  EDMA3 Test Application# Y) S/ v2 m! E1 j
  6. *
    # w" T2 t$ ]# d8 [! V
  7. *   This file contains EDMA3 Test code.) I4 Z3 P3 ?) D. L8 Y6 H
  8. *
    0 i; H5 |& a& H8 R+ P# G
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE: E& N: g! Q+ V, p: P
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT7 ~7 ?- a- H5 H# l3 `
  11. *         TO CHANGE.# _) m4 z7 u0 G) d4 E! s
  12. *. x) T, `7 O8 f5 h# v! s' }
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    $ \: J, q* P6 m/ d
  14. *
    * c6 O& T2 v( E( {% M8 f+ P
  15. * This program is free software; you can redistribute it and/or
    : ?% D" C( f. i
  16. * modify it under the terms of the GNU General Public License as
    ! T* |; Y, E% m8 Q
  17. * published by the Free Software Foundation version 2.$ z4 w- m7 f$ t* q
  18. *
    ( F7 Q! G2 |/ X2 u. m- d
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any0 G! D+ r7 z6 r* U$ [
  20. * kind, whether express or implied; without even the implied warranty
    . M( ?" A! d" C8 Y' _
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the) @0 B1 L3 h: i. V7 t& Y' h
  22. * GNU General Public License for more details." n; H" e# _! \8 J* Z* M3 O: ~9 E3 d
  23. */1 ~5 J: _, _6 [1 m- @* g2 M0 M) H
  24. # f  c1 l" T8 ]) E- U; H
  25. #include <linux/module.h>
    7 H, q0 P& i4 E, k
  26. #include <linux/init.h>
    3 g; @3 A! E/ E! u& T
  27. #include <linux/errno.h>  E% x2 _+ o4 {  _/ \1 D
  28. #include <linux/types.h>2 O% j7 [4 @1 @% O, Q& J
  29. #include <linux/interrupt.h>+ J) H1 g4 T5 D: i! G8 z, h
  30. #include <asm/io.h>
    # i  t4 j* v7 c5 R% `
  31. #include <linux/moduleparam.h>! y5 i( Y) T" C# @3 w. A6 S/ N1 ~
  32. #include <linux/sysctl.h>
    ' T% P- `, Z7 j. N  K
  33. #include <linux/mm.h>! G$ W5 W7 n: ?8 C* y
  34. #include <linux/dma-mapping.h>8 k, T( I) `" ~7 }

  35.   o! ?# _9 ~6 G* K8 ~. d; E# L: X
  36. #include <mach/memory.h>
    9 z  m+ ], y  {6 }; x6 ~7 X# j" g
  37. #include <mach/hardware.h>
      @# i+ K4 b3 k, E2 O, o
  38. #include <mach/irqs.h>% S) u8 @* H9 r8 s2 I. J' l+ o
  39. #include <asm/hardware/edma.h>
    ' ?  D2 F1 C) N

  40. ; M) z6 h' Z4 p3 B4 W" y
  41. #undef EDMA3_DEBUG) W' `% P7 r4 A& ], E7 n
  42. /*#define EDMA3_DEBUG*// Z1 `+ ~- e3 I' i
  43. . J0 q0 V3 C/ ^7 P4 L, g$ J
  44. #ifdef EDMA3_DEBUG( M1 X# a3 \( r  l( J: O
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    / f4 m6 ]$ ^9 K, Y2 }8 C: Z$ |* ~5 b+ n5 Z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    7 H0 v5 D  p0 O/ [/ z" b' e" N
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)0 j/ [# d- w$ Q7 C6 J. ]. ]7 a
  48. #else5 N9 S/ q7 p% \; W# f' \
  49. #define DMA_PRINTK( x... )
    0 Q+ v4 Y$ X& P
  50. #define DMA_FN_IN
    ; h6 _5 M% I$ \: v- L
  51. #define DMA_FN_OUT
    9 ?$ H! k% |( q; U5 l
  52. #endif( V  E* m3 k. v, u8 n% y
  53. + ~( M% _7 ~: ^" G- Y- }
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    1 R1 a7 j2 v2 p* p0 |
  55. #define STATIC_SHIFT                3: N* y& X+ F' q1 @) S7 a
  56. #define TCINTEN_SHIFT               20
    0 Z( _/ ?' e5 j* C8 }1 l" I
  57. #define ITCINTEN_SHIFT              21' w" t7 |8 N1 w* L1 z
  58. #define TCCHEN_SHIFT                221 i4 N- `  [/ g, u5 z6 g
  59. #define ITCCHEN_SHIFT               23; B* T$ B! n8 ~8 t+ m' x
  60. : ^  y# h, r8 |& @2 M
  61. static volatile int irqraised1 = 0;. k3 Y  u+ y5 l/ N2 M2 s) `! _; s
  62. static volatile int irqraised2 = 0;: R  L1 q$ [& S* p, X0 d

  63. * f* E8 w9 o3 X* P$ r" C
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' I) a* E4 G: v- |) v- T" p  F
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 u# L1 M3 u, J6 B
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  i. `7 b% D: P# y
  67. ) l& N+ \9 s/ g3 P! l
  68. dma_addr_t dmaphyssrc1 = 0;" u1 {! ~$ G; l
  69. dma_addr_t dmaphyssrc2 = 0;
    ! ?, }$ J/ I( X1 R4 c! L
  70. dma_addr_t dmaphysdest1 = 0;- T0 s2 K5 M' S5 L1 o
  71. dma_addr_t dmaphysdest2 = 0;
    1 O' [7 K; o" D* t7 i4 e7 i% O4 A1 ~

  72. ; {% y& v5 ^. A6 B* E) O
  73. char *dmabufsrc1 = NULL;
    9 V7 P) F0 m4 P* V* @. g( a+ j
  74. char *dmabufsrc2 = NULL;
    ' T1 x- N! q4 W5 r8 L
  75. char *dmabufdest1 = NULL;
    % W6 S6 B/ m9 p- `( S/ Q8 k
  76. char *dmabufdest2 = NULL;1 B' \  ]% y9 c. f

  77. 2 P# P" M! G% x- W0 ^- e; U
  78. static int acnt = 512;  t, O1 |$ v  t: D
  79. static int bcnt = 8;6 K1 E; a0 z: H& d% P0 i% U
  80. static int ccnt = 8;
    7 c6 v  ^. ?5 v+ U* D
  81. - X3 P% E# B. a) H- _4 t
  82. module_param(acnt, int, S_IRUGO);
    ; S0 i, J  R1 Z( s
  83. module_param(bcnt, int, S_IRUGO);% j% k! W% z" S# Y
  84. module_param(ccnt, int, S_IRUGO);
复制代码
2 p6 d& Y5 c/ [. \. ]
, o& D2 w/ i5 G
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用  K( W$ d, K. m6 t" Q  H* W
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
. H* u5 s% s; N/ s! |3 T* K" V3 v2 }     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。1 d% W: K. M. S) e: s- N& L
1 p5 l. ?7 u8 M  W; y
( Z! a0 O+ B1 `+ i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-23 03:57 , Processed in 0.040865 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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