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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
- g, A8 d0 A1 g4 ^, e
  1. [code]EDMA sample test application6 g! o, G4 H' G. V
  2. /*
    5 }: h8 j' g/ ]6 S7 w! Y& a& m2 K
  3. * edma_test.c, X; K* i: B5 @4 u/ L
  4. *6 K0 y9 |3 \6 `- H
  5. * brief  EDMA3 Test Application
    # g% z! i( H( `: \8 g- C- u2 @( O+ S
  6. *! \) ?2 Z" t. Y% l( F/ J2 B
  7. *   This file contains EDMA3 Test code.
    6 ?. [7 ?* ?$ B3 j
  8. *
    & S6 y. O7 O* @+ D
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE  `. e8 Z% ?* }9 X
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    7 x) G6 d+ O# f" W0 z
  11. *         TO CHANGE.
    - {4 M: C1 u1 Y$ i5 w; z3 ^' X
  12. *
    % b3 z3 ~  o2 L2 D# N4 {
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/0 b; N6 K( M/ O( T1 `; H/ k
  14. *) a. r# V, S& Y( [& O9 m
  15. * This program is free software; you can redistribute it and/or
    " \' g. b- F, o0 O
  16. * modify it under the terms of the GNU General Public License as
    + x7 J. V4 h8 d4 l9 l( P0 V: r& p
  17. * published by the Free Software Foundation version 2.
    ! W! v- g& A2 B9 v- m$ ^
  18. *2 P6 |  `) O) t" l" b' m
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    7 s7 }& n1 \6 M$ y8 `# z! W2 L
  20. * kind, whether express or implied; without even the implied warranty1 s" Z& b  k+ P' c! d" y
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* j9 H$ X+ _$ J6 e% s& f1 ~
  22. * GNU General Public License for more details." d9 a+ K+ o% S1 }$ c4 ~
  23. */& ~. n6 A$ x% a4 [
  24. 4 d2 a, \+ T( D4 p  I: u; q
  25. #include <linux/module.h>
    5 F  F* V1 e9 C: |
  26. #include <linux/init.h>3 h& Q9 u% h7 D! w( u2 i* J$ B- {
  27. #include <linux/errno.h>
    5 s( n" W6 S1 r$ r6 |/ I
  28. #include <linux/types.h>
    5 Z' {7 `: _6 q
  29. #include <linux/interrupt.h>  `+ r, n2 `0 t) j* b" C' T% c: k
  30. #include <asm/io.h>* r0 n) \$ y" N+ ~
  31. #include <linux/moduleparam.h># c: R$ M9 \) p
  32. #include <linux/sysctl.h>" O' u& H6 j' c( u- c- s
  33. #include <linux/mm.h>% I' S/ I8 |+ _. i* E, A# b& k
  34. #include <linux/dma-mapping.h>
    . `" v" {% p0 u- [

  35. ' }3 a% C* ^# p; W& W3 C
  36. #include <mach/memory.h>0 Q& I+ l( b* d9 J% {( a& s
  37. #include <mach/hardware.h>7 R& Z) N: |# [" b4 W3 J8 M
  38. #include <mach/irqs.h>
    % \% X2 i6 `/ N# n" B/ d2 t
  39. #include <asm/hardware/edma.h>. K0 `* X8 D. A

  40. ; y  |+ W$ h, w* l. W
  41. #undef EDMA3_DEBUG5 t: ?$ v/ w6 D: K  @; B8 Z
  42. /*#define EDMA3_DEBUG*/5 V; E3 G# J5 {  l8 p7 c

  43.   G6 k7 h% i  z" Z$ O4 i) m
  44. #ifdef EDMA3_DEBUG, e/ U, J1 A, q' D
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)2 f7 q8 U# T! L9 s6 }
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__), M0 Q, j1 e" W% N. h. B$ u! a
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)5 |- T" @2 |5 E: s: K; ^7 a! Q
  48. #else
    * o, c- J. y, d
  49. #define DMA_PRINTK( x... )- s' }0 e5 u) ~' [3 S8 u# R* ]0 H% K
  50. #define DMA_FN_IN
    3 o9 A& e, k& r& z( \6 |0 W- O
  51. #define DMA_FN_OUT' c4 \9 d2 Q/ J3 B# T
  52. #endif
    % N4 p3 S, S1 n0 k6 e& a( U% v

  53. 3 `3 u/ W, G5 D0 Z
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    3 w/ \5 Q$ v, a) ]( ?  |
  55. #define STATIC_SHIFT                32 L8 b3 G3 V' H$ w$ d: m, |
  56. #define TCINTEN_SHIFT               20$ Y8 J7 N9 M8 f% l# f
  57. #define ITCINTEN_SHIFT              21
    ' a. I; w: n0 y+ A
  58. #define TCCHEN_SHIFT                226 m7 ^' _" ~' x+ P% m6 g) G+ `  C
  59. #define ITCCHEN_SHIFT               23
    2 h6 o; @# k4 a" K- m: L
  60. 0 ]5 U5 Q4 V" d- D% A6 P9 b
  61. static volatile int irqraised1 = 0;
    ! d$ ?0 X7 [8 O- e& p) L
  62. static volatile int irqraised2 = 0;
    / Y% a2 z1 N, O

  63. 1 D8 w6 [3 j/ p& f! g
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 D" e* r  m1 ?' X
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' U) W) R" ^1 ^/ `2 A8 {- F: a
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. x3 e8 [- [- M

  67. ; [0 U' F, m1 U# Z
  68. dma_addr_t dmaphyssrc1 = 0;$ Z5 W' I* S2 Y. T6 U9 r$ l- K' S! }# @
  69. dma_addr_t dmaphyssrc2 = 0;! r* s' j. N& R+ @
  70. dma_addr_t dmaphysdest1 = 0;+ q; d  h" _. l9 @6 M
  71. dma_addr_t dmaphysdest2 = 0;
    * `" m7 b, g$ M8 d; f
  72. ( s: ~8 m5 l( q4 k
  73. char *dmabufsrc1 = NULL;
    9 n% d' |% t) q
  74. char *dmabufsrc2 = NULL;
    ! x8 _1 M& ]+ p# i+ w4 K) A
  75. char *dmabufdest1 = NULL;
    6 y9 u! h. e# j2 g
  76. char *dmabufdest2 = NULL;" M! r" T) n$ p7 z
  77. ) x. Q% d9 K$ {
  78. static int acnt = 512;
    6 q+ ~) H, p" s1 N( e. @
  79. static int bcnt = 8;
    $ m0 f% m4 f* q) O+ s' c
  80. static int ccnt = 8;# W. Q4 }3 {  N9 x0 W  x
  81. # G* W6 m& ]5 n! _! E( v! ?4 L( v3 ]
  82. module_param(acnt, int, S_IRUGO);
    + u4 Q; y% h$ k$ W. c; V
  83. module_param(bcnt, int, S_IRUGO);
    1 q" L; \& R. X8 I9 n: u
  84. module_param(ccnt, int, S_IRUGO);
复制代码
; D0 \7 l8 U+ X" h$ m
# D) t$ \- z5 l0 T
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用9 s0 c, c2 n$ x! B$ `- s# c
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。% O8 @$ r: }7 O3 ^5 \6 Z4 c! g6 h5 R
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。  X5 q7 |  e' ^) N5 m* k
5 _# \& |$ S. I* k9 D6 H  O

) |- e( Y9 w8 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 06:11 , Processed in 0.037110 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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