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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
% S7 y3 b+ U. C  H! `
  1. [code]EDMA sample test application. P7 ?4 N1 `/ k
  2. /*" L7 r" {$ {9 r
  3. * edma_test.c; P0 y3 `, q6 U9 C; T, t
  4. *
    : Y) E% ]& n% S# [
  5. * brief  EDMA3 Test Application9 j; f# f5 {! v2 z
  6. *" u" i4 V6 u) L9 K
  7. *   This file contains EDMA3 Test code.
    % R+ R- X. L! @4 t5 g5 z. F+ o9 q
  8. *
    ( ^8 M: H* ~- z# U/ F
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE. g$ o7 `5 Q/ r- W! ~0 q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT# p8 z" l; x' k8 U# [' J
  11. *         TO CHANGE.! }! @; {& h6 q% [, a
  12. *0 e* |1 `: w# a' B
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com// M7 T. a4 H' K
  14. *
    ! b6 n) R$ u) ^3 [/ R1 R- Q# m
  15. * This program is free software; you can redistribute it and/or
    5 i$ l8 H+ z7 @' V3 H' |$ D& K
  16. * modify it under the terms of the GNU General Public License as/ O& H5 Z; {; G9 z, w- u; Z+ U
  17. * published by the Free Software Foundation version 2.8 w# s. b1 b! B/ k
  18. *
    / Q( S. C% h" U) H' s
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any1 S8 o6 r4 b; V# s4 h# U# ]
  20. * kind, whether express or implied; without even the implied warranty1 Q. Z& B, g5 G3 L' i( p& k7 U
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    - q2 L6 M& ^5 N' u" o) C) a
  22. * GNU General Public License for more details.
    8 |' m/ v5 r" ]* c' X5 D' [7 s
  23. */
    4 Q1 q8 [/ o/ j6 t  x7 x3 J( E

  24. + {& k1 ~1 X8 t2 T7 g) M5 O
  25. #include <linux/module.h>) r  N5 D! a4 ~) X! R3 d
  26. #include <linux/init.h>% z0 f7 V; K4 z5 {) i! t$ E
  27. #include <linux/errno.h>
    ! j6 C/ ^( ~! v' @6 K
  28. #include <linux/types.h>0 M' T3 X: H% p% a
  29. #include <linux/interrupt.h>
    ' o- ^6 G' B, m: R4 G
  30. #include <asm/io.h>
    ' C) q  G, `" \
  31. #include <linux/moduleparam.h>
    ! E! d5 }3 u  A% R" j3 h0 `
  32. #include <linux/sysctl.h>
    # u: e2 O1 L9 t+ R8 f: s
  33. #include <linux/mm.h>. g) O9 _! f6 S) E
  34. #include <linux/dma-mapping.h>
    4 P) J/ v9 S7 b6 [3 d
  35. , Y3 @; _' t5 G! B! C
  36. #include <mach/memory.h>
    . M/ b; _3 F5 ]6 p6 Q
  37. #include <mach/hardware.h>
    4 P- Y& @# \& N6 ?
  38. #include <mach/irqs.h>* ]7 D* I3 X8 g" ~0 u0 F, h
  39. #include <asm/hardware/edma.h>" {) K6 `: }; R1 ?! J. R

  40. ; ?4 R0 p% \9 c2 M
  41. #undef EDMA3_DEBUG
    ) V; q% X3 }4 ]" m% A" V& t
  42. /*#define EDMA3_DEBUG*/! L7 ?6 c0 w& P

  43. + p  A! R- E- q+ b- r
  44. #ifdef EDMA3_DEBUG
    # b0 \2 F9 W0 v1 i0 Y
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS); I( B% t3 |0 X$ n" r& X4 V
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    : |. s/ w6 x2 k% t/ i
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    # }; i; D0 b3 T+ W, Y4 ]
  48. #else6 D* J. X1 r, V6 @# G
  49. #define DMA_PRINTK( x... )
    1 x- ]& X) J+ u& v9 _9 u
  50. #define DMA_FN_IN6 E4 q' U" x4 l5 r
  51. #define DMA_FN_OUT
    6 o/ ^! x! U* c' {
  52. #endif* f1 ]- U4 d& D( b

  53. % D7 e' R1 b: T- T: X7 d
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)0 j0 L% n9 H* ~- w
  55. #define STATIC_SHIFT                3$ g% b2 U4 P3 c2 c7 S0 ?9 _% O" h
  56. #define TCINTEN_SHIFT               20
    : h' b" d) B2 U4 ]/ `1 k4 H
  57. #define ITCINTEN_SHIFT              21
    0 O) j7 \- R. w  A
  58. #define TCCHEN_SHIFT                22
    # N8 U1 U4 u) K/ `+ z
  59. #define ITCCHEN_SHIFT               23
    9 \* ?  x" n' e! b) Y

  60. 6 L2 Z) \- J. ~; Y$ h
  61. static volatile int irqraised1 = 0;3 X& N" m. L& I
  62. static volatile int irqraised2 = 0;
    / |& h1 F3 ^* h2 a5 M. s2 q
  63. " h& Y% A6 U1 j0 h* ]! V
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * v- Y. V$ B' R/ @) y7 @
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);- \/ {6 `  r. r& @, r% g
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ t1 }) X! _, i

  67. % w, [/ O( o& l
  68. dma_addr_t dmaphyssrc1 = 0;
    ( w5 g5 ^3 z* A' d, @# j' W, M  y
  69. dma_addr_t dmaphyssrc2 = 0;1 i& z4 l. J$ t! ~
  70. dma_addr_t dmaphysdest1 = 0;/ Y' s2 S4 v7 w+ F- e$ ^% j: o
  71. dma_addr_t dmaphysdest2 = 0;
    / J2 J, m' W" P% s: d: j
  72. 5 s# C6 o& j' r1 s
  73. char *dmabufsrc1 = NULL;5 t: Y4 R5 l. k) L8 d: G$ ~, H& Q
  74. char *dmabufsrc2 = NULL;
    $ ~7 p  S3 e9 @- ]6 G' f
  75. char *dmabufdest1 = NULL;
    ( k9 f. w- T4 I6 v
  76. char *dmabufdest2 = NULL;
    0 a: ~$ }1 U/ Z: T" K' X

  77. , m% b( r* d7 R: {
  78. static int acnt = 512;' f9 r. q0 M2 P3 g
  79. static int bcnt = 8;
    / U3 X( [6 F& F) k
  80. static int ccnt = 8;
    - M! p6 j- J" j+ n& u
  81. * ]' W; S2 l0 z+ Z
  82. module_param(acnt, int, S_IRUGO);7 R# s. Y! M6 y1 v8 d1 Y
  83. module_param(bcnt, int, S_IRUGO);
    4 w: C0 A* W6 H$ E5 ^: ]! W
  84. module_param(ccnt, int, S_IRUGO);
复制代码
! m8 V( {6 O. ^) h: [/ o
: N  e1 @. K' P
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
, B5 J9 R$ o' }$ Y5 E8 W2 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
+ U- h: |: Q6 Y7 X     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。9 h$ l: N: d; h# Z- T

. ?$ R* D& q" o2 ^- R# g" ~4 v! }/ J6 @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-22 06:06 , Processed in 0.037903 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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